欢迎来到天天文库
浏览记录
ID:15585568
大小:62.00 KB
页数:6页
时间:2018-08-04
《解决页面防刷新的几点思路》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、解决页面防刷新的几点思路摘要:web技术发展到web2.0的过程中,B/S架构的软件系统颠覆了C/S架构软件成为真正的互联网应用的主流。本文从“网页防刷新”这个小处入题,结合实际开发中可能遇到的情况进行分析和实现(本文代码实现使用java语言)。本文也试图对各种系统可能遇到的刷新问题提出通用的方法,但是很遗憾,这个目标还很远。关键词:网页防刷新web开发引言对于开发者来说保证站点运行的可靠性及安全性,是至关重要的事情,当傻傻的用户的一个轻点刷新,就可能对于一些脆弱的系统造成很大的伤害,尤其是填写表单。填
2、写表单是网民经常要做的事情,客户要求让用户填写表单,用户为了某种目的去填写表单,这种作为开发者来说要处理的就是表单的防重复提交问题。用户密码丢了,他需要找回密码,我们也不知道密码是什么,给他个连接让他重置一个,我们希望这个链接只能被访问一次。还有只要离开页面本页就失效……本文在阅读了大量解决方案的基础上做了详细的实际测试,在解决办法中,本文没有考虑通过借助数据库来解决问题,我认为一旦借助于数据库来处理问题,这样的解决问题的办法我是望而却步的。力求表达清楚自己对问题的看法、解决思路和测试结论。问题域一:页
3、面展示完一次立即失效这样的问题一般出现在动态页面中,动态页中使用Cache-Control控制缓存非常实用。是对于html静态页面这种方法笔者反复使用各种方式浏览器中仍然会有缓存而且点击浏览器后退按钮的时候总是从缓存中读取。我曾纠缠于控制静态页面缓存问题的解决办法中,也到微软的官方寻求答案,经测试也是不可以。只能借助JavaScript脚本,笔者也提供了一种可扩展的思路供参考。1.1、让页面在本次服务器启动过程中只能被访问一次实现方法:jsp页面中设置head:<%if(request.getProto
4、col().compareTo("HTTP/1.0")==0)response.setHeader("Pragma","no-cache");if(request.getProtocol().compareTo("HTTP/1.1")==0)response.setHeader("Cache-Control","no-cache,no-store");response.setDateHeader("Expires",-1);%>页面设置简单计数器,<%!inti=0;%><%i++;System.out
5、.println(i);if(i!=1){response.sendRedirect("error.jsp");}%>1.2、这里我们使用session:从服务器端跳转到只能显示一次的jsp页面,在跳转前在session中添加一个属性flag,在跳转到页面后由页面检查session中flag属性是否存在,如果存在则显示,如果不存在则跳转到错误页面,在本页面载入后使用session.removeAttribute(“flag”);方法移除该属性,使得本次会话中该用户不能再次访问本页面。实现方法:控制类Sh
6、owItOnlyOnce.java中方法:publicvoiduseSession(){Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";HttpSessionsession=request.getSession();Stringflag="to-open-it";session.
7、setAttribute("flag",flag);try{response.sendRedirect(basePath+"useSession.jsp");}catch(IOExceptione){e.printStackTrace();}}useSession.jsp中处理session时主要代码:<%if(session.getAttribute("flag")==null){response.sendRedirect("error.jsp");}else{%>网页中代码……<%out.write
8、(session.getAttribute("flag").toString());session.removeAttribute("flag");}%>1.3、静态页面处理办法:让我们来看看静态页面的处理吧,在实践的过程中我尽量的让代码柔和一些,让静态页面打开一次即失效,对于一个链接,有时候我们希望用户只能使用一次,比如找回密码的链接,比如激活链接。此处我首先来简述一下我对于静态页面的处理办法,动态页的更多处理办法我放到后面叙述。假设用户
此文档下载收益归作者所有