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

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

 

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

 

HTML

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

JAVA

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

PHP

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

ASP

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

 

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

 

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

[javascript]  view plain  copy
  1. var strcookie = document.cookie;  
  2. var arrcookie = strcookie.spit("=")  
  3. var statuscookie = arrcookie[1];  
  4. if(statuscookie == "" || statuscookie == "0"){  
  5.     //retset flag  
  6.     document.cookie="statuscookie=1";  
  7. }else{  
  8.     window.location.reload();  
  9.     document.cookie="statuscookie=0";  
  10. }  

 

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

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

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

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

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

第二种借助HTTP头信息

[javascript]  view plain  copy
  1. 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.youkuaiyun.com/sulliy/article/details/6262919

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值