我想实现会话在我的Struts2应用程序。我正在使用自定义拦截器类AuthenticationIntercepter,那里我正在检查会话是否为空,所以在调用每个动作之前,我正在传递在struts.xml文件中的拦截器参考。但是拦截器参考不工作..这是我的struts.xml文件,请帮助我…提前感谢:
<interceptors>
<interceptor name="authenticationInterceptor"
class="interceptor.AuthenticationInterceptor"></interceptor>
<interceptor-stack name="secureStack">
<interceptor-ref name="authenticationInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<global-results>
<result name="login" type="redirect">/Login.jsp</result>
</global-results>
<action name="loginform" class="login.LoginAction" method="execute">
<interceptor-ref name="secureStack"/>
<result name="success" type="redirectAction">/index1.jsp</result>
</action>
AutenticationIntercepter类:
public class AuthenticationIntercepter implements Interceptor
{
private static final long serialVersionUID = 5283017925296746927L;
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void init() {
// TODO Auto-generated method stub
}
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception
{
Map<String,Object> session=actionInvocation.getInvocationContext().getSession();
LoginBean user=(LoginBean)session.get("user");
System.out.println("inside intercepter clas.."+user);
System.out.println("inside intercepter clas.."+user.getUserName());
if(user==null)
{
return ActionSupport.LOGIN;
}
return actionInvocation.invoke();
}
}
你在拦截器类中做的伪日志可能会导致问题,因为你在检查"user"变量是否为空之前引用了它。这将导致抛出NullPointerException。
对于你的具体问题,我建议检查你的"登出"机制是否正常工作。根据您描述的症状,我猜测当用户注销时,"user"变量没有从会话中正确清除。