源码天下

源码天下 -> 技术文档 -> WEB开发 -> JSP技术 -> 文章内容

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



作者:佚名  来源:pccode.net整理  发布时间:2008-5-8 21:41:02  发布人:wongrs

<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" >&nbsp;<%=count%>&nbsp;</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

9 7 3 12 4 8 :


[] [返回上一页] [打 印] [收 藏]

上一篇文章:技术实例:JSP连接数据库程序代码
下一篇文章:什么是JSP
中国福网提供带宽支持