redis session共享中的序列化问题

来源:互联网 发布:网络胜利组动漫风车 编辑:程序博客网 时间:2024/05/22 04:40

今天在做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中。