加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

JSP页面无法刷新、防止刷新的问题总结

发布时间:2023-06-01 13:38:06 所属栏目:教程 来源:
导读:jsp页面不能刷新、防止刷新的问题总结

<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>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!