• 如何让浏览器后退显示页面已经过期?(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>

  • 相关阅读:
    Objective-C马路成魔【14-关键C语言功能】
    js正则表达式语法
    Python 得到Twitter所有用户friends和followers
    error:stray&#39;243&#39;in program
    VC各种方法获得的窗口句柄
    新东方雅思词汇---5.2
    php中this,self,parent三个关键字的区别辨析
    英语影视台词---一、少年派的奇幻漂流
    英语常用单词分类---1
    amazeui的表单开关插件的自定义事件必须添加.bootstrapSwitch 命名空间,给了我们什么启示
  • 原文地址:https://www.cnblogs.com/sunwei2012/p/1629670.html
Copyright © 2020-2023  润新知