• redis session共享中的序列化问题


    今天在做session对象存入redis(set方法)时,碰到一个空指针异常,代码如下:

    public class CheckAccount extends HttpServlet {
        public void doGet(HttpServletRequest request,HttpServletResponse response)
        throws ServletException,IOException{
            HttpSession session=request.getSession();
            AccountBean account=new AccountBean();
            String username=request.getParameter("username");
            String password=request.getParameter("password");
            account.setPassword(password);
            account.setUsername(username);
            if((username!=null)&&(username.trim().equals("jsp"))){
                if((password!=null)&&(password.trim().equals("1"))){
                    session.setAttribute("account", account);
                    SessionService.getInstance().SaveSession(session);
                    //System.out.println(session.getId());
                    String logon_suc="session.jsp";
                    response.sendRedirect(logon_suc);
                    return ;
                }
            }
            String logon_fail="fail.jsp";
            response.sendRedirect(logon_fail);
            return;
        }
        public void doPost (HttpServletRequest request,HttpServletResponse response)
                throws ServletException,IOException{
            doGet(request,response);
        }
    
    }

    属性如下所示:

    public class AccountBean {
        private static final long serialVersionUID = 1390366007623566261L;
        private String username="";
        private String password="";
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }

    输出jsp代码为:

      <body>
        <%=request.getSession().getId()%><br/>
        <% AccountBean account=(AccountBean)request.getSession().getAttribute("account");%>
        user name:<%=account.getUsername() %><br/>
        password:<%=account.getPassword() %><br/>
      </body>

    出错原因:AccountBean 作为session的属性,因session继承Serializable,被持久化保存到redis中,所以作完属性的AccountBean也必须序列化才能被存入redis中。

  • 相关阅读:
    Openwave V7 不支持中文的解决方法
    VBS的疑惑,它们不考虑效率吗?
    删除顽固 NTServic和webacc.exe病毒。
    我的电脑怎么多了一些乱七八糟的东西。
    阿怒再发,突然的发现,为了编码输入速度!
    庆祝开博,也算给自己加油!
    超级简单的工厂模式温度转换
    阿怒乱弹之VS05重构的提取方法操作不方便啊!
    随笔嘛!就是随便下笔~呵呵!
    Oracle数据库一样平常维护手册2
  • 原文地址:https://www.cnblogs.com/davidwang456/p/3231364.html
Copyright © 2020-2023  润新知