【HRMS】解决当点击系统的退出按钮后,怎么处理session,若按浏览器的后退键仍能回到之前登录页面的问题;定时跳转的代码...

本文介绍了一种彻底清除浏览器登录状态的方法,包括清除缓存、session销毁及使用中间页引导,确保用户退出后无法通过浏览器后退键返回登录状态。

当点击系统的退出按钮后,如果按浏览器的后退键仍能回到之前登录的页面的问题

试过了很多方法,也在网上查了下,最后自己总结的完美解决方法:

当点击系统退出按钮后,先调用Action层的doQuit()方法进行退出处理。

/***退出**/
	public void doQuit(){
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		String quit = request.getParameter("quit");
		if ("QUIT".equals(quit)) {
	      //清除登陆页面缓存HTTP1.0规范中的Pragma:no-cache等同于HTTP1.1规范中的Cache-Control:no-cache,同样可以包含在头信息中。 
	        response.setHeader("Pragma", "No-cache");
			response.setHeader("Cache-Control", "no-cache");   //强制缓存从服务器上获取新的页面
			response.setHeader("Cache-Control", "no-store");   //在任何环境下缓存不保存任何页面
			response.setDateHeader("Expires", 0);
			request.getSession().removeAttribute("userInfo");  //清空session
			request.getSession().invalidate(); // 销毁session
			// 页面重定位到一个退出中间页面,倒计时。
			String URL = "../toquit.jsp";
			String content = 1 + ";URL=" + URL;// 1秒后进入退出页面
			response.setHeader("REFRESH", content);
		}

	}
	

 

 

按道理经过上面的方法应该是已经把session清空销毁,浏览器缓存清空,但仍然没有解决遇到的问题;

这里我做了一个中间页面来处理:中间页面弹出一个对话框提示请登录,点击确定回到登录页面,这样浏览器的后退按钮已经失效,直接在浏览器地址输入地址也会弹出你还没登录,请重新登录,点击后回到登录页面,因为直接输入地址页面的session已经销毁,而那直接输入的地址页面如果session为空的话是不允许进入。

// 页面重定位到一个退出中间页面,倒计时。
String URL = "../toquit.jsp";
toQuit.jsp是一个中间页面如下:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>正在退出系统···</title>
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<link type="text/css" rel="stylesheet" href="css/public.css">
</head>
  
  <body>
  
  <table class="maintable" align="center" style="text-align: center;" width="500" cellspacing="0">
  <tr height="100"><td></td></tr>
  <tr><td>
      <script type="text/javascript" language="JavaScript" > alert("请登录!");window.location.href="login.jsp";</script>
  </td></tr></table>
  </body>
</html>

 

下面是定时跳转的代码,与上面的问题无关:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>2秒后自动进入系统界面</title>
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<link type="text/css" rel="stylesheet" href="css/public.css">
	
	<script language="javascript" type="text/javascript">
         function delayURL(url) {               //定时跳转
          var delay = document.getElementById("time").innerHTML;
            if(delay > 0) {
            delay--;
            document.getElementById("time").innerHTML = delay;
          } else {
              window.top.location.href = url;
              }
          setTimeout("delayURL('" + url + "')", 1000); 
        }
    </script>
	</head>
  
  <body>
  
  <table class="maintable" align="center" style="text-align: center;" width="500" cellspacing="0">
  <tr height="100"><td></td></tr>
  <tr><td>
    <font size="4"><span id="time" style="background:red">2</span>秒后自动跳转到系统界面,如不跳转,请点击下面链接</font>
      </td> </tr>
    <tr><td><a href="login.jsp"><font color="blue" size="3">重新登录</font></a>
    <script type="text/javascript">
    delayURL("../index.jsp");
    </script>    
  </td></tr></table>
  </body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值