JSP页面无法刷新、防止刷新的问题总结
发布时间:2023-06-01 13:38:06 所属栏目:教程 来源:
导读:jsp页面不能刷新、防止刷新的问题总结
<1>如果要求当发生选择、删除、修改等操作时,表单刷新,需要加上: window.returnvalue=0.
例如leadership/leader_ctl.jsp
<body leftmargin="0" topmargin="0" >
<1>如果要求当发生选择、删除、修改等操作时,表单刷新,需要加上: window.returnvalue=0.
例如leadership/leader_ctl.jsp
<body leftmargin="0" topmargin="0" >
jsp页面不能刷新、防止刷新的问题总结 <1>如果要求当发生选择、删除、修改等操作时,表单刷新,需要加上: window.returnvalue=0. 例如leadership/leader_ctl.jsp <body leftmargin="0" topmargin="0" > <%@ page contenttype="text/html; charset=gb2312" language="java" import="java.sql.*" errorpage="" %> <%@ page import="leader.*" %> <% leaderbean leader=new leaderbean(); string struserid=request.getparameter("key"); session.setattribute("employuserid",struserid); //system.out.println("struserid:"+struserid); if (leader.postedit(request)){ //system.out.println("me5"); out.println("<script>window.returnvalue=0;window.close();</script>"); return; } else{ if (request.getparameter("oper")!=null){ if (request.getparameter("oper").equals("delleader")){ out.println("<script>alert('"+leader.lastopermsg+"');window.returnvalue=0;</script>"); //return; } if(request.getparameter("oper").equals("setleader")){ //system.out.println("me3"); out.println("<script>alert('"+leader.lastopermsg+"');window.returnvalue=0;window.close();</script>"); //system.out.println("me4"); //return; } if(request.getparameter("oper").equals("delcompetence")){ ////system.out.println("struserid:"+struserid); out.println("<script>alert('"+leader.lastopermsg+"');history.back();</script>"); //system.out.println("me4"); //return; } if(request.getparameter("oper").equals("addcompetence")){ //system.out.println("addcompetence1"); out.println("<script>alert('"+leader.lastopermsg+"');history.back();</script>"); //system.out.println("addcompetence2"); //return; } else{ if (request.getparameter("oper").equals("qx")){ out.println("<script>alert('"+leader.lastopermsg+"');window.returnvalue=0;window.close();</script>"); //return; } else{ //system.out.println("me6"); out.println("<script>alert('"+leader.lastopermsg+"');window.close();</script>"); //return; }//3e } } } %> <2>如果要求每隔一段时间从服务器上自动刷新,需要加上: (1) 种方法: <%response.setheader("refresh","15");%> 15妙刷新一次 (2) 种方法: 自动刷新网页 在html的与之间加入下面这段代码,则在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。 <meta http-equiv="refresh" content="300; url=target.html"> (3) 种方法:演示效果:本页将在规定的时间自动刷新,代码提示:将下面的代码复制到〈head〉区 <script> <!-- var limit="0:15"//修改刷新时间 if (document.images){ var parselimit=limit.split(":") parselimit=parselimit[0]*60+parselimit[1]*1 } function beginrefresh(){ if (!document.images) return if (parselimit==1) window.location.reload() else{ parselimit-=1 curmin=math.floor(parselimit/60) cursec=parselimit%60 if (curmin!=0) curtime=curmin+"分"+cursec+"秒后重刷本页!" else curtime=cursec+"秒后重刷本页!" window.status=curtime settimeout("beginrefresh()",1000) } } window.onload=beginrefresh //--> </script> <2>防止从服务器上自动刷新,需要加上: <%@ page contenttype="text/html;charset=gb2312"%><%@ page language="java" import="java.io.*"%><html><head><meta http-equiv="content-type" content="text/html; charset=gb2312"><title>计数器</title></head><%!//同步更新计数器 synchronized void counter(){ servletcontext application=getservletcontext(); //构造application对象(可选) string szpath=application.getrealpath("/"); //得到当前路径 szpath=szpath+"hits.txt"; //计数器文件 0-9999999999999... 方案2 jjsp计数器,同一电脑10秒内防刷新 <%@ page contenttype="text/html; charset=gb2312" language="java" import="java.sql.*" errorpage="" %> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> <meta name="generator" http-equiv="refresh" > <title>无标题文档</title> <link href="css/counter.css" rel="stylesheet" type="text/css"> </head> <body bgcolor="#ffffff"> <!--start counter --> <div align="center"> <%@ page import="com.ckj.counter.*,java.io.*,java.util.date"%> <%counter ct=new counter(); string count="0"; string counterid="0"; try{ // string strdirpath = new file(application.getrealpath(request.getrequesturi())).getparent(); //system.out.println("目录的绝对路径:" + strdirpath + "<br/>"); string strfullpath = session.getservletcontext().getrealpath("/"); system.out.println(strfullpath); ct.path=strfullpath+"/counter/count.txt"; //1 session存储时间值, //2 下次比较一下 if(session.getattribute("counttime")==null ){ //如果 初次访问 count=ct.docount(); // system.out.println("--------计算前11--------"+system.currenttimemillis()); session.setattribute("counttime",string.valueof(system.currenttimemillis()));} else { //如果,刷新间隔超过 //system.out.println("--------刷新之差--------"+(system.currenttimemillis()- long.valueof((string)session.getattribute("counttime")).longvalue())); //大于10秒 if((system.currenttimemillis()-long.valueof((string)session.getattribute("counttime")).longvalue())>9000) { //system.out.println("--------计算后--------"+system.currenttimemillis()); count=ct.docount(); //session.removeattribute("counttime"); session.setattribute("counttime",string.valueof(system.currenttimemillis())); } //小于10秒 else count=ct.getcount(); } }catch(exception e){ } //如果10秒内刷新,不计数 if(true){ } %> 你是本站第 <span class="font12bgred" > <%=count%> </span> 位访问者! <!-- end counter --> </div> </body> </html> 方案3、防刷新图形计数器(已调试) 实例6:防刷新图形计数器(已调试)程序说明:上次做的计数器没有采用对文件的读写操作,虽然用到了javabean但是并没有用到scope中的几个参数:appliction,page,session这些参数分别代表了bean的存活的周期,appliction>session>page我们利用这个原理来防止用户刷新从而提高访问次数的漏洞。程序准备:如果你使用的是apache+resin那么请你在resin的根目录下建立一个文本文件counter.txt并在里面任意写一个数字,比如100之类的。其次,请建立一个文件夹用来保存这个程序的所有文件,并在该文件夹里建立一个子目录images,用来保存10张图片,图片格式为gif,图片名称从0--9,图片内容就是0--9十个数字,分别与图片名称对应就可了。程序文件:index.jsp, addone.java, display.javaindex.jsp用来显示纪录结果。addone.java 是一个javabean用来写纪录到文件display.java 也是一个javabean用来读取纪录到index.jsp程序源码:index.jsp<%@ page import="popeyelin.*" contenttype="text/html; charset=gb2312" language="java" %> <html> <head> <title>jsp图形防刷新计数器</title> </head> <body> <jsp:usebean id="a" scope="page" class="popeyelin.addone"/> <jsp:usebean id="b" scope="page" class="popeyelin.display"/> 已经有 <% b.counter(); for(int i=9;i>=0;i--) out.print(b.img[i]); %> 个人访问这个页面 </body> </html> addone.java package popeyelin; import java.io.*; import java.lang.*; public class addone{ private string s=new string(); //建立数组变量sl public void addone(){ try { bufferedreader buff=new bufferedreader(new filereader("conuter.txt")); string s=buff.readline(); int i=integer.parseint(s); //将字符串变量s转化成整形 i++; buff.close();//关闭对象 printwriter pw=new printwriter(new filewriter("oounter.txt")); string temp=integer.tostring(i);//将整形变量i转化成字符型 pw.print(temp); pw.close(); } catch(ioexception e){ system.out.println(e.tostring()); } } } display.java package popeyelin; import java.io.*; import java.lang.*; public class display{ public string[]img=new string[10]; public void counter(){ try{ bufferedreader buff=new bufferedreader(new filereader("counter.txt")); string s=buff.readline(); int i=integer.parseint(s); int st=10; int j=0; while(j<=9) { img[j]=integer.tostring(i%st); img[j]=img[j]+".gif"; img[j]="images/"+img[j]; img[j]="<img src="+img[j]+">"; img[j]=img[j]+"</img>"; i/=10; j++; } } catch(ioexception e){ system.out.println(e.tostring()); } } } 编译addone.java和display.java后会生成一个文件夹,popeyelin,把这个文件夹拷贝到web-inf/class目录下,如果不存在,请手动建立。运行index.jsp你就可以看到这个图片计数器了程序分析:重点就在于对文件的读写,我们看如下代码 bufferedreader buff=new bufferedreader(new filereader("conuter.txt")); string s=buff.readline(); int i=integer.parseint(s); //将字符串变量s转化成整形 i++; buff.close();//关闭对象 printwriter pw=new printwriter(new filewriter("oounter.txt")); string temp=integer.tostring(i);//将整形变量i转化成字符型 pw.print(temp); pw.close(); 我们如果要对文件进行读写操作,就必须先后建立2个对象,来对文件分别进行读和写而且要注意,我们从文件里读出来的东西是字符串型的,如果我们要对他进行修改必须先转换成int型,要用到 integer.parseint(),如果我们要先东西到文件,同样要先将int转换成string用integer.tostring(),写文件用到pw.print()要写的内容可以保存在变量里,如:pw.print(temp),也可以直接写,如:pw.print("hello,world");记住,写完一定要关毕对象。pw.close() 方案4、用jsp制作页面防刷新计数器(php)</head> <body> <%@ page import="java.io.*" %> <% string currentrecord = null;//保存文本的变量 bufferedreader file; //bufferedreader对象,用于读取文件数据 string nameoftextfile = "e://count.txt"; //读取 file = new bufferedreader(new filereader(nameoftextfile)); string readstr =null; int writestr =0; //如果计数文本中的计数值为空则让它显示时变成1并写入 try { readstr = file.readline(); } catch (ioexception e) { system.out.println("读取数据错误."); } if (readstr == null) readstr = "没有任何记录"; //判断cookie,第一次登陆时加1,刷新时不累计计数 else if (request.getheader("cookie")==null) { writestr = integer.parseint(readstr)+1;} else { writestr = integer.parseint(readstr);} //写入时控制因为刷新引起的重复计数 if (request.getheader("cookie")==null) { try { printwriter pw = new printwriter(new fileoutputstream(nameoftextfile)); pw.println(writestr); pw.close();} catch(ioexception e) { out.println(e.getmessage());} } %> <p align="center">您是傲雪寒梅网站的第<b><font color="red"><%=writestr%></font></b>位客人。</p> </body> </html> (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐