HttpSession session;
session=request.getSession(false);
session.invalidate();
我正在研究struts2和hibernate framework.i已经在Logoutaction类中编写了这段代码,但是在按下浏览器中的后退按钮时,它将我带到旧的配置文件,这在会话无效后不应该发生。所以,我应该使用SessionMap或Map而不是HttpSession来使会话无效吗? 我已经搜索过这个,但我能找到的只是使用map和SessionMap。
答案 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。