我在制作Struts2应用程序。sessionMap.invalidate()在尝试注销时不起作用
我想退出,但我正在逐渐java.lang.nullpointerexception
我的方法是:
public String logout(){
Map session = ActionContext.getContext().getSession();
SessionMap sessionMap=(SessionMap)session;
log.info("session:"+session);
log.info("sessionmap:"+sessionMap);
log.info("sessionMap.get()"+sessionMap.get("USROBJECT"));
try{
if(sessionMap!=null){
sessionMap.remove("USROBJECT");
sessionMap.invalidate();
}
}
catch(Exception e){
log.info("Exception is:"+e.toString());
}
return "LOGOUT";
}
我收到的时候我尝试打印会话,sessionMap和"USROBJECT"
对象的对象,但是当我打电话给删除,我收到一个异常。请帮忙。
登录方法:
public Map session = ActionContext.getContext().getSession();
public SessionMap sessionMap;
public void setSession(Map session) {
sessionMap=(SessionMap) session;
}
public String login(){
us = new UserSession();
us= getUserDetails();
log.info("userName is:"+us.getUserName());
log.info("password is:"+us.getPassword());
us.setLastLoginTime(loginTime);
sessionMap.put("USROBJECT", us);
return "register";
}
struts.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<package name="Hello" extends="struts-default">
<action name="*LoginAction" method="{1}"
class="com.pgnext.apps.action.LoginAction">
<result name="register">/jsp/register.jsp</result>
<result name="error">/jsp/error.jsp</result>
<result name="logout">/jsp/login.jsp</result>
</action>
</package>
</struts>
17:09:31,038 INFO LoginAction:171 - going to remove USROBJECT
17:09:31,038 INFO LoginAction:183 - Exception is : java.lang.NullPointerException
我已经加入sessionMap的“USROBJECT”,但是当我试图将其删除,我得到空指针异常 – Raina
重试与上面的代码。不要使用SessionMap,并使用常量来确保您不会在密钥名称中产生拼写错误。也可以尝试以链接的答案中描述的方式检索会话。 P.S:记住你现在也可以投票,因为你有15个声望点。 –