session未超时失效,原因是从action请求返还JSP页面时session失效!
在JSP页面用session。getAttribute("name")判断当前用户是否为登录状态,当点击JSP页面跳转并没有问题,但是当执行Action操作之后,当返会JSP页面时session中的变量值就不存在了,这是为何,代码如下
第一种方式
Map session=ActionContext.getContext().getSession();
session.put("userName", tempUser.getName());
第二种方式
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("userName", abcd);
session.setMaxInactiveInterval(60*60);
这两种方式都没有用,当请求action返回后session中的变量值就不存在了,求解!
session
jsp
action
java
struts
------解决方案--------------------出现这种问题最大可能是你的session.put("userName", tempUser.getName());的位置有问题,被多次请求时执行,而某次执行的时候tempUser.getName()又为空,session就清掉了。
------解决方案--------------------改为HttpSession session = ServletActionContext.getRequest().getSession(false);
------解决方案--------------------你在session方法体中打印tempUser.getName(),如"System.out.println("session赋值:"tempUser.getName());",看看输出窗口,是否在其他操作的过程中再次给userName付过空值。
------解决方案--------------------就是你的方法()
{
Map session=ActionContext.getContext().getSession();
session.put("userName", tempUser.getName());
System.out.println("session赋值:"tempUser.getName());
}
看是否有单独的"session赋值:"输出,就知道是否被空值盖掉了。
------解决方案--------------------所以,你肯定是给session赋值的请求,被错误的调用了,然后把你的username用空值盖掉了,要确保你的action不会被在空值的情况下重复调用。
------解决方案--------------------那你打印一下session的id吧,看看是否session被替换了。