如何实现返回上一页并自动刷新

    xiaoxiao2025-07-15  7

    Java编写WEB程序时,页面应该只是表示的部分,不应该含有任何Java脚本代码,所以主要考虑使用JS来实现这一功能。我们经常会碰到返回上一页,但是需要刷新页面上与状态相关的信息,从而避免重复操作,错误信息的弊端。先说两种方法:

     

    1. 设置页面为不缓存,访问上一次页面就需要重新去服务器获取。(我没有试过)。

     

    HTML

    [xhtml]  view plain  copy <pre>   <META HTTP-EQUIV="pragma" CONTENT="no-cache">   <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">   <META HTTP-EQUIV="expires" CONTENT="0">   </pre>  

    JAVA

    [java]  view plain  copy if (request.getProtocol().compareTo("HTTP/1.0") == 0){       response.setHeader("Pragma","no-cache");   }else if (request.getProtocol().compareTo("HTTP/1.1") == 0){       response.setHeader("Cache-Control","no-cache");   }  

    PHP

    [php]  view plain  copy header("Cache-Control: no-store, no-cache, must-revalidate");   header("Cache-Control: post-check=0, pre-check=0", false);   header("Pragma: no-cache");  

    ASP

    [c-sharp]  view plain  copy Response.Buffer = True    Response.ExpiresAbsolute = Now() - 1    Response.Expires = 0    Response.CacheControl = "no-cache"    Response.AddHeader "Pragma""No-Cache"  

     

    2. 页面自动重载,在页面第一次运行时执行一次重载。

     

    此方法稍微有点复杂,HTTP是没有状态的,请求一次页面后下次请求没有什么必然的关系,当然用Seesion可以,这样子给服务器很大的压力,还有一种获取状态的方法就是Cookie。在第一次打开一个页面时,让Cookie存一个值表示这是第一次,然后重载页面后,检测Cookie值是否是第一次,若是则置为非第一次状态。一个简单的实现如下。

    [javascript]  view plain  copy var strcookie = document.cookie;   var arrcookie = strcookie.spit("=")   var statuscookie = arrcookie[1];   if(statuscookie == "" || statuscookie == "0"){       //retset flag       document.cookie="statuscookie=1";   }else{       window.location.reload();       document.cookie="statuscookie=0";   }  

     

    如果仅仅是返回上页,不需要刷新,JS可以有很多种写法:

    [javascript]  view plain  copy window.history.go(-1)   window.history.back()   window.history.back(-1)  

    如果需要刷新,可以有两种写法:

    第一种,返回后重新请求该页面

    [javascript]  view plain  copy window.history.go(-1);   window.history.go(0)   //winoow.loaction=window.location  

    第二种借助HTTP头信息

    [javascript]  view plain  copy window.location.href=document.referrer  

    通过HTTP的头部中的HTTP_REFERER记录的链接来源地址实现跳转,源地址就是指这个页面从什么页面链接过来的页面。HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。这样子很容易获得访问来源。JSP,ASP,PHP都提供了访问次信息的方法,如果在页面中包含这些脚本语言,也可以使用,我还是不会使用它们的。

     

    这跟浏览器的刷新机制有关,浏览器是通过Last-Modified和Expires来处理缓存的,有兴趣的可以参考http://blog.sina.com.cn/s/blog_6868b78d0100kgwp.html

    点击打开链接http://blog.csdn.net/sulliy/article/details/6262919

    转载请注明原文地址: https://ju.6miu.com/read-1300725.html
    最新回复(0)