首先,先把浏览器分成两类:以IE和谷歌举例
IE浏览器为首的一类:这一类是先读取历史记录缓存,先把页面显示出来,然后再执行页面中写的各种js刷新页面!!!!
谷歌浏览器为首的一类:这一类是先读取页面的js刷新页面,再显示页面!!
以上是个人验证出来的观点,仅供参考!
下面贴出代码,支持这两类浏览器的本办法:
首先给退出按钮一个di:
<a id="esc">退出</a>
然后调用js的ajax清掉session:
js:
//调用退出
<script type="text/javascript">
$(function(){
$("#esc").click(function(){
$.ajax({
type :"post",
url : "/work/statistics/statistics!esc.action",
success : function(){
window.location.href = "/登陆页.jsp";
}
});
});
});
</script>
action:
/**
* 退出登陆
* @return
*/
public String esc(){
this.initContext();
session.setAttribute("personname", null);
session.setAttribute("loginInfo", null);
this.msg="退出成功!";
success=true;
return "success";
}
js:
//验证session是否存在
<script>
$(function(){
$.ajax({
url:"/work/statistics/statistics!sessionisexist.action",
type:"post",
success: function(data){
if(!data.success){
window.location.href="/登陆页.jsp";
}
}
});
})
</script>
action:
//验证session中的loginInfo是否为空
public String sessionisexist() throws IOException {
this.initContext();
if(session.getAttribute("loginInfo")==null){
this.success=false;
}
return Action.SUCCESS;
}
这个action回到验证session的js 用 window.location.href="/登陆页.jsp"; 跳到登陆页!!
这只是一个笨办法,仅供参考。各位有什么好的解决办法,可以留言,但是要IE和谷歌都试用哦!!!!