• 如何让浏览器后退显示页面已经过期?(publish by sunwei)


    我们以JSP为例:

    假如有一个注册流程,a.jsp:负责输入信息、b.jsp:负责处理信息、c.jsp:处理完信息后的用户跳转的另外一个页面。

    显然用户轨迹为:a.jsp->b.jsp->c.jsp

    我们的目标是:假设现在用户已经在c.jsp,用户通过点击浏览器后退按钮,那么浏览器将显示“页面已经过期”。

    下面是三个页面的源码,具体每个页面为什么那么设置,什么都有说明,如果还不明白为什么,那么请自己调试一下就知道了。

     

    a.jsp:

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    //如果设置过期,他的下一个页面后退的时候,就会重新请求服务器,状态码200,提交方式:get
    //如果没有设置过期,他的下一个页面后退的时候,读取缓存页面和数据,状态码cache,提交方式:get
    response.addHeader("Pragma", "No-cache");
    response.addHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires",-10);
    %>
    <hi>注册过期流程测试-步骤1</hi>
    <form action="/a.jsp" method="post">
     <input type="text" name="name"/>
     <input type="submit" value="注册"/>
    </form>

    b.jsp:

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    //这个是被post的页面,这个页面由前一个页面来决定怎么显示,
    //如果设置过期,他的下一个页面后退将找不到页面(因为不知道是什么样的数据来post给他),页面会显示已过期,状态:ERROR_FILE_NOT_FOUND,提交方式:post
    //如果没有设置过期,他的下一个页面后退将找到老的页面和老的数据,状态:history cache,提交方式:post
    response.addHeader("Pragma", "No-cache");
    response.addHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires",-10);
    %>
    <%
    String name = request.getParameter("name");
    %>
    <hi>注册过期流程测试-步骤2</hi>
    <input type="button" value="确认" onclick="window.location.href='/c.jsp'"/>


     

    c.jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <hi>注册过期流程测试-步骤2</hi>
    <a href='b.jsp'>返回</a> <br>

  • 相关阅读:
    Struts2 xml表单验证
    struts2表单验证-整合国际化
    Strut2-Ajax总结
    java中的线性安全和不安全
    智游推送试用
    推送的重连策略
    Android本地通知的实现方式
    MyBatis框架学习二
    Java基础学习 2 (选择结构,循环结构)
    Java基础学习 1 (变量,数据类型,运算符)
  • 原文地址:https://www.cnblogs.com/sunwei2012/p/1629670.html
Copyright © 2020-2023  润新知