Struts2 Srtruts2登录/注销不适用于后退按钮

Struts2 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

struts.xml

<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);