Tomcat struts2中的ClearCacheInterceptor
在我的web应用程序中,我希望包含Tomcat struts2中的ClearCacheInterceptor,tomcat,struts2,interceptor,interceptorstack,Tomcat,Struts2,Interceptor,Interceptorstack,在我的web应用程序中,我希望包含ClearCacheInterceptor,这样在执行注销操作后,它应该清除捕获,这样,如果用户单击“上一步”按钮,它就不会显示上一页。当我运行代码时,它工作正常,我可以登录执行其他操作,但当我单击“注销”时,它显示错误。这是我的密码 public class ClearCacheInterceptor extends AbstractInterceptor{ /** * */ private static final long serialVersio
ClearCacheInterceptor
,这样在执行注销操作后,它应该清除捕获,这样,如果用户单击“上一步”按钮,它就不会显示上一页。当我运行代码时,它工作正常,我可以登录执行其他操作,但当我单击“注销”时,它显示错误。这是我的密码
public class ClearCacheInterceptor extends AbstractInterceptor{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext context=(ActionContext)invocation.getInvocationContext();
HttpServletResponse response=(HttpServletResponse)context.get(StrutsStatics.HTTP_RESPONSE);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
String result=invocation.invoke();
System.out.println("check result="+result);
return result;
}
}
注销代码
public String logOut() {
String status = "";
if (true) {
session.clear();
session = null;
if (session instanceof org.apache.struts2.dispatcher.SessionMap) {
try {
((org.apache.struts2.dispatcher.SessionMap) session).invalidate();
} catch (IllegalStateException e) {
}
}
status = "success";
} else {
addActionError(getText("system.ERROR"));
status = "error";
}
return status;
}
我的struts.xml操作文件
<struts>
<!-- Configuration for the default package. -->
<constant name="struts.Devmode" value="false"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default">
<interceptors>
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception" />
<interceptor-ref name="alias" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare" />
<interceptor-ref name="i18n" />
<interceptor-ref name="chain" />
<interceptor-ref name="debugging" />
<interceptor-ref name="profiling" />
<interceptor-ref name="scopedModelDriven" />
<interceptor-ref name="modelDriven" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="checkbox" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo..*,d-..*,6..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError" />
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
<interceptor name="clear-cache" class="com.java.session.ClearCacheInterceptor" />
</interceptors>
<default-interceptor-ref name="defaultStack"/>
<action name="users">
<result>home.jsp </result>
</action>
<action name="UserAction" class="com.java.action.RegisterAction">
<result name="input">/signup.jsp</result>
<result name="success">/home.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="trialregister">
<result>signup.jsp</result>
</action>
<action name="Activate" class="com.java.action.ActivationAction">
<result name="input">/error.jsp</result>
<result name="success">/home.jsp</result>
<result name="error">/test1.jsp</result>
</action>
<action name="verifyLogin" class="com.java.action.LoginAction" method="verifyLogin">
<result name="input">/home.jsp</result>
<result name="success">/test1.jsp</result>
</action>
<action name="logOut" class="com.java.action.LoginAction" method="logOut">
<interceptor-ref name="clear-cache"/>
<result name="error">/error.jsp</result>
<result name="success">/logout.jsp</result>
</action>
<action name="Back">
<result>/index.jsp</result>
</action>
<action name="Reroot">
<result>/index.jsp</result>
</action>
</package>
请在注销方法中更改您的实现。您正在调用
session.clear();
然后设置为null。如果在
session.clear();
然后,它意味着当代码到达这里时,clear会调用某些地方,或者没有创建会话。还有一件事,您正在验证instanceof会话后检查=null;始终为空。是否在线路会话中抛出错误。清除()?我们不知道103行是哪一行。。。另外,在
if(true)
块中使用else
有什么意义?
session.clear();