是否有必要在struts2中使用SessionMap?

时间:2014-08-14 18:41:22

标签: java hibernate struts2

HttpSession session;
session=request.getSession(false);
session.invalidate();

我正在研究struts2和hibernate framework.i已经在Logoutaction类中编写了这段代码,但是在按下浏览器中的后退按钮时,它将我带到旧的配置文件,这在会话无效后不应该发生。所以,我应该使用SessionMap或Map而不是HttpSession来使会话无效吗? 我已经搜索过这个,但我能找到的只是使用map和SessionMap。

2 个答案:

答案 0 :(得分:0)

您可以使用此方法从会话中退出:

package simple;
import java.util.Map;
import javax.servlet.http.HttpSession;

import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.ActionSupport;

public class LogoutAction extends ActionSupport {

    public String execute() throws Exception { 
     Map session = ActionContext.getContext().getSession();
session.remove("logined"); 
session.remove("context");
        return SUCCESS;
    }

}

答案 1 :(得分:0)

后退按钮的问题是浏览器显示缓存页面。为防止浏览器缓存,

您需要在页面标题中添加以下内容。

  

"缓存控制"," no-cache,no-store,must-revalidate"
  " Pragma"," no-cache"
  "到期"," -1"
  " Vary"," *"

您可以使用interceptor或执行代码或jsp页面来执行此操作。

Removing Session code仅删除会话,无法删除缓存。但是服务器端可以通过制作interceptor来检查会话,并阻止用户在会话被销毁时执行操作。

使用地图不一定。但struts2提供ServletAware接口来处理会话。你是否可以选择使用struts2。