我在製作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個聲望點。 –