JSP页面不能刷新、防止刷新的问题总结

js|刷新|问题|页面

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> 
 

                                                                 2006-09-12

 

时间: 2024-08-29 09:33:57

JSP页面不能刷新、防止刷新的问题总结的相关文章

函数-关于jsp页面调用ajax 定时刷新的问题

问题描述 关于jsp页面调用ajax 定时刷新的问题 代码如下,哪位大神看一下 指出错误,貌似这样不好使啊 $(function(){ function show(){ $.ajax( { url: "normal.jsp", //这里是静态页的地址 type: "GET", //静态页用get方法 success:function(data){ $("#normal").html(data); } }); setInterval("s

JSP页面必须手动刷新问题求助!

问题描述 SSH框架的程序,前台JSP页面,必须手动刷新一下才能取到最新的值,为什么?已经采取的方法jSP页面已经添加了清缓存,ACTION调用添加了时间戳等方法,哪位大侠知道这到底是为什么? 解决方案 解决方案二:只这些描述实在是没法分析.我估计jsp代码的逻辑或者顺序有问题解决方案三:jsp在页面的值不会自己获取的,解决方案四:我觉得是跳转的原因,看看action配置问题解决方案五:应该是你哪块逻辑或者action跳转的原因吧,仔细检查下你的代码.解决方案六:B/S是被动式的啊,你不请求服务

局域网访问jsp-为什么局域网上其他电脑上的jsp页面没有跟着我本机变化呢,刷新之后也没变

问题描述 为什么局域网上其他电脑上的jsp页面没有跟着我本机变化呢,刷新之后也没变 我的数据库文件放在我本机web工程下面的,我更改了数据库中的数据,要刷新整个web工程再去刷新jsp页面,jsp页面上的数据才会更新,后来到tomcat下面的webapps找到了我的数据库文件然后修改了数据,不用刷新整个web工程,直接刷新jsp页面,jsps上的数据变了,现在我弄了个定时函数定时到数据库中取数据,修改数据库中的数据,jsp页面上的数据就自动更新了,现在的问题是,我本机上的jsp页面上的数据在动态

jsp页面怎么不刷新更新session

问题描述 jsp页面怎么不刷新更新session 修改过程中因为需要用到session,需要用到修改之后的session.修改完之后刷新页面不会出现问题,修改完之后不刷新页面就会找不到值 解决方案 已解决 抛弃了session 解决方案二: 修改后再将session中需要的值重新手动获取下,赋给页面,应该就不用刷新取值了

小菜鸟请问jsp页面级联刷新怎么实现java,ssh

问题描述 小菜鸟请问jsp页面级联刷新怎么实现java,ssh jsp页面显示第一个下拉菜单,下拉取值后,使用ajax刷新, 第二个下拉菜单显示刷新后的内容. java,jsp页面,ssh框架,easyui <script type="text/javascript"> function xiaoshou(){ var suoshubumen=document.getElementById("find"); console.info(suoshubume

jsp全局变量与局部变量在JSP页面刷新后的变化?

问题描述 jsp全局变量与局部变量在JSP页面刷新后的变化? 解决方案 局部变量在对应区块以局部变量为准,否则以全局变量为准. 解决方案二: 全局变量和局部变量同时可见且命名相同,操作时以局部变量为准. 否则,以全局变量为准 解决方案三: 局部变量能访问到的以局部变量为准,否则以全局变量为准. 解决方案四: 这个说的是变量的生存周期.一个页面内定义的变量,属于这个页面对象.而每次独立的请求,jsp都会产生一个新的页面对象,彼此无涉.所以不会相互影响. 解决方案五: 页面刷新局部变量和全局变量都回

图片-jsp页面跳转之后,样式不生效 一定要刷新之后才生效

问题描述 jsp页面跳转之后,样式不生效 一定要刷新之后才生效 页面跳转至后css样式不生效 一定要刷新之后才生效 背景是几张图片的轮播 跳转按钮:<div class="ui-block-a"><a href="dingdan.jsp" data-theme="a" data-role="button" data-icon="search" data-iconpos="top&

在一个jsp页面上 局部刷新

问题描述 在一个jsp页面上 局部刷新 在一个jsp页面上 有两个div 其中一个是登陆 另一个是测试文本框 怎么在点击 登录时候 下面文本框 不刷新

刷新页面-jsp页面后退一步,并且刷新后退后的页面怎样实现

问题描述 jsp页面后退一步,并且刷新后退后的页面怎样实现 window.location.href=document.referrer; 是刷新了,但是返回的是首页,我想要的 是一个页面分了3页,当我正在查看第三页,我从第三页打开另外一个页面,这时后退一步 应该后退到第三页,而实际却后退到了第一页,请问怎么解决??????????. 解决方案 不刷新整个页面实现后退功能解决struts后退和刷新页面重复提交的方案javascript 页面后退并刷新 解决方案二: 使用js的history进行后