Struts2 Srtruts2登录/注销不适用于后退按钮
struts.xmlStruts2 Srtruts2登录/注销不适用于后退按钮,struts2,Struts2,struts.xml <action name="firstLogin" class="com.action.LoginAction"> <result name="success">welcome.jsp</result> <result name="error">loginError.jsp</result> </action> <action name="logo
<action name="firstLogin" class="com.action.LoginAction">
<result name="success">welcome.jsp</result>
<result name="error">loginError.jsp</result>
</action>
<action name="logout" class="com.action.LoginAction" method="logout">
<result name="success">Index.jsp</result>
</action>
||
问题:注销工作正常,如果我点击url,它也会重定向到登录页面(我除外),但一旦我注销,我可以通过单击浏览器中的“后退”按钮获得欢迎页面。这不应该发生在我身上。。请在这方面帮助我,因为在单击“注销”之前,您必须清除注销页面中的浏览器缓存和使用的页面,或者最好清除每个页面中的浏览器缓存 在jsp scriplet内的每个页面的开头添加以下代码
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Expires", "0");
response.setDateHeader("Expires", -1);
会话总是被创建的,您需要检查(在每个操作的每个方法中,或者在拦截器中)sessionMap中是否有特定的对象。登录时,将该对象放在地图中,注销时,将其删除。在每次操作中,检查它是否在那里。为什么不应该发生这种情况,对我来说,让浏览器缓存您必须返回的页面是有效的,而不需要服务器的干预。@AndreaLigios,谢谢您的回答,我只有一个控制器在这里,在我只有一个会话对象,它也使无效。@Prakash。感谢您的回复,在注销并单击“上一步”按钮后,我将获得确认表单重新提交,如果我再次刷新页面,它将成为欢迎页面。很抱歉,这段代码无法为我提供解决方案。@user3364329没关系。实际上,当您在注销后单击“上一步”按钮时,您会遇到什么异常情况。请清楚地解释。。
package com.action;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;
import com.dao.DBOperationsDao;
public class LoginAction implements SessionAware {
//LoginModel modelObj=new LoginModel();
private String adminId;
private String adminPassword;
SessionMap<String,String> sessionMap;
public void setAdminId(String adminId) {
this.adminId = adminId;
System.out.println("setter 1...............");
}
public String getAdminId() {
return adminId;
}
public void setAdminPassword(String adminPassword) {
this.adminPassword = adminPassword;
System.out.println("setter 2...............");
}
public String getAdminPassword() {
return adminPassword;
}
public String execute() throws Exception{
int i=DBOperationsDao.adminAuth(this);
if(i>0){
return "success";
}
else{
return "error";
}
}
public void setSession(Map map){
sessionMap =(SessionMap)map;
sessionMap.put("login", "true");
System.out.println("session value after set"+sessionMap.get("login"));
}
public SessionMap<String, String> getSessionMap() {
return sessionMap;
}
public String logout(){
sessionMap.invalidate();
System.out.println("session value after invalidate"+sessionMap.get("login"));
return "success";
}
}
<%@ taglib uri="/struts-tags" prefix="s" %>
<s:if test="%{#session['login']}">
<s:property value="%{#session['login']}"/>
<h3>Hello Admin </h3>
<a href="addUser.jsp">Add User</a> | <a href="search.jsp">Search User</a>|<a href="logout">Logout</a>
</s:if>
<s:else>
<jsp:forward page="Index.jsp" />
</s:else>
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Expires", "0");
response.setDateHeader("Expires", -1);