zhanmingbo 2010-01-02 02:05
浏览 478
已采纳

session 的值为什么有时候能获取有时候不能获取呢?

action中的代码

  public String add() throws Exception {
        Map<String, Object> session = ActionContext.getContext().getSession();
        String yanzhengma = session.get("yanzhengma").toString();
        
        Encode encode = new Encode();
        log.debug("判断输入的验证码是否正确");
        if(encode.encodeByMD5(this.yanzhengma.toUpperCase()).equals(yanzhengma)){
            log.debug("输入的验证码正确");
            //DaBase实例
            DaBase base = new DaBase();
            base.setType(type);
            base.setUsername(username);
            base.setPassword(password);
            base.setEmail(email);
            //判断是否注册成功
            log.debug("开始注册。");
            if(!baseService.add(base)){
                addActionError("注册失败!");
                log.debug("注册失败.");
                return ERROR;
            }else {
                //将用户名保存到request范围中
                //ServletActionContext.getRequest().setAttribute("username", username);
                session.put("username", username);
                session.put("email", email);
                log.debug("注册成功。");
                return SUCCESS;
            }
        }else{
            log.debug("输入的验证码不正确");
            return ERROR;
        }
    }

跳转的第一个jsp页面 中获取session的代码   <input type="hidden" name="username" value="${session.username }"/>    

第二个页面也是如此  但有时侯能获取 有时候又不能获取

 

请问这是怎么回事呢?

 

  • 写回答

3条回答

  • mbb1234567890 2010-01-05 17:48
    关注

    你的程序有很强的struts1的痕迹,有几处写的不合适的地方,
    1、你拿到的session不是真正的session,是struts2封装过的,是一个map,
    所以写sessionScope取值是不合适的
    2、取值时如果用struts2标签的话,直接写#username即能取到了
    3、由于你使用了struts2封装过的session,所以当你再次往session中put同一个key的变量时,该key对应的值不再是唯一的,而会变成一个数组,也就是说,你的代码反复执行几遍之后,#username所取出的值会变成一个数组,而不是一个值了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿