关于SESSION和SESSION BEAN

yuanzi 2002-02-02 09:16:47
目前做一个系统,用JSP构建客户端,用SERVLET封装业务逻辑。分别在UNIX和NT上测试,用的都是WEBSPHERE做应用服务器。考虑的校验用户权限,在用户登陆后,将用户的信息写在一个BEAN中,并申明为<jsp:useBean id="sessionBean" class="com.SessionBean" scope="session" />这种形式,在这里面有两个方法,分别取用户名和用户职务。我用这样一段程序校验SESSION是否失效<%if (sessionBean== null) response.sendRedirect("/login/nodata.htm");
else {
zgmc = sessionBean.getZgmc();
zwdm = sessionBean.getZwdm();}
if(zgmc == null||zgmc.length()==0)
response.sendRedirect("/login/loginnoright.jsp");%>奇怪的事情发生了,我在对zwdm进行比较的时候,用zwdm.compareTo("110")==0的时候,保空异常。因为zwdm=null,这是为什么呢?session 失效了吗?
望指点,多谢!
...全文
85 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanzi 2002-02-17
春节回家,没有时间上网,没能来给分,抱歉!
回复
gnodiew 2002-02-05
多copy了一个重复的
void SetSession()
{
session.setAttribute("zgmc", zgmc );
......
}
回复
gnodiew 2002-02-05
NT只将jsp页定义成<jsp:useBean id="sessionBean" class="com.SessionBean" scope="session" />有问题的,我也遇到过
解决办法是,将验证,写信息,读信息也时bean的*.java中即在你的com.SessionBean中首次登陆时做验证,成功后将信息写入session如
HttpSession session;//成员变量
String zgmc="";

public void SetSession()
{
session.setMaxInactiveInterval(1000);//设置session时间属性
session.setAttribute("zgmc", zgmc );
......
}
jsp取session的函数为
void SetSession()
{
session.setAttribute("zgmc", zgmc );
......
}
public String getZgmc()
{
zgmc=session.getAttribute("zgmc").toString();//异常什么的要处理,我只简单提一下
return zgmc;

}
回复
yuanzi 2002-02-04
大家帮忙多看看~!一定给分,有建设性意见就给分。
回复
yuanzi 2002-02-04
to reki(i feel love fly!):多谢,用这种方法还是没有解决问题。奇怪的是,在UNIX系统上没有出现这个问题。在NT上则有这个问题。
to yanchang(笨笨):由于我们这中间保存的数据挺多,如果用这种形式太麻烦了。
回复
yanchang 2002-02-03
用session.setAttribute("name",Object)会好吧
他好象试销的机会少点
我的感觉
回复
reki 2002-02-02
你用response.sendRedirect的时候,session失效
应该在response.sendRedirect之前用java.lang.String response.encodeRedirectURL(java.lang.String url)方法encode url
具体用法
encodeRedirectURL
public java.lang.String encodeRedirectURL(java.lang.String url)Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the URL unchanged. The implementation of this method includes the logic to determine whether the session ID needs to be encoded in the URL. Because the rules for making this determination can differ from those used to decide whether to encode a normal link, this method is seperate from the encodeURL method.
All URLs sent to the HttpServletResponse.sendRedirect method should be run through this method. Otherwise, URL rewriting cannot be used with browsers which do not support cookies.

Parameters:
url - the url to be encoded.
Returns:
the encoded URL if encoding is needed; the unchanged URL otherwise.

回复
yuanzi 2002-02-02
还有,在开发环境中,Session是很容易失效的,一般情况下,什么样的错误会导致session失效!
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告