日期:2014-05-18  浏览次数:20779 次

急求一个关于Session的解决方法
各位大虾好,我在设置session时,使用hs.setAttribute( "validUser ",   "admin ");可以,可以把validUser设置成功,访问用过滤器控制访问的资源时可以通过,但是用hs.setAttribute( "validUser ",   ui_t);设置validUser时却不可以(ui_t是用户信息的javabean),不知道是为什么?不知道有没有哪位大侠遇到过,还请多多指教,谢谢了!
-------------------------------------
//这是验证登录时的一段代码,在DBTools对象实例中把数据库连接对象(含有从数据库中取出的resultset)的用户信息存到用户信息javabean中:
……
UserInfo   ui=new   DBTools().saveToUserInfo(this.conn);
setValidUserInfo(ui);   //设置登录用户信息,转向功能页面
……
//被调用往session中设置用户信息bean的方法:
private   void   setValidUserInfo(UserInfo   ui_t)
{
                            hs.setAttribute( "validUser ",ui_t);
//这样写是可以的       hs.setAttribute( "validUser ",   "admin ");
}
……
//把用户信息存到用户信息javabean中:
public   UserInfo   saveToUserInfo(DBConnection   myConn)
{
UserInfo   ui=new   UserInfo();
ui.setUserId(myConn.rstGetInt( "userId "));
ui.setUserName(myConn.rstGetString( "userName "));
ui.setUserRole(myConn.rstGetInt( "userRole "));
ui.setTrueName(myConn.rstGetString( "trueName "));
ui.setIdNum(myConn.rstGetString( "idNum "));
ui.setTelephone(myConn.rstGetString( "telephone "));
ui.setGender(myConn.rstGetString( "gender ").trim().charAt(0));
ui.setEmail(myConn.rstGetString( "email "));
ui.setCliUnit(myConn.rstGetString( "cliUnit "));
ui.setPost(myConn.rstGetString( "post "));
ui.setPostcode(myConn.rstGetString( "postcode "));
ui.setAddress(myConn.rstGetString( "address "));
ui.setPwdQues(myConn.rstGetString( "pwdQues "));
ui.setPwdAnsw(myConn.rstGetString( "pwdAnsw "));
ui.setActiveFlg(myConn.rstGetInt( "activeFlg "));

return   ui;
}
//用户资源访问控制的filter中的session   validUser验证方法:
private   boolean   isAuthenticated(HttpServletRequest   request)
{
boolean   isAuthenticated=false;
this.hs=request.getSession();
UserInfo     ui=(UserInfo)hs.getAttribute( "validUser ");

if(ui!=null&&ui.getuserRole()==1)//问题是好像ui在这里是null的,我用ui==null作为判断条件时可以正常登陆
{
isAuthenticated=true;
}
return   isAuthenticated;
}


------解决方案--------------------
既然lz知道传入的ui_t对象为null,就检查一下为什么ui_t会为null。
private void setValidUserInfo(UserInfo ui_t)
{
hs.setAttribute( "validUser ",ui_t);
//这样写是可以的 hs.setAttribute( "validUser ", "admin ");
}

------解决方案--------------------
public UserInfo saveToUserInfo(DBConnection myConn)

UserInfo ui=new DBTools().saveToUserInfo(this.conn);
在这里看看ui是否为null;