我们公司现在开发了一个OA项目,采用的是jboss+apache+sql-server作为服务器,现在问题是有一些人在程序里面故意的玩,疯狂的按住F5不放或者狂点刷新按钮,这样很快就导致服务器瘫痪了,jboss或者apache有没有什么设置,比如说同一个ip必须每隔多少秒才可以进行下一个动作,否则不予处理。请教!

解决方案 »

  1.   


    <script language="Javascript"><!-- 
      //屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键 
      //Author: meizz(梅花雨) 2002-6-18 
    function document.oncontextmenu(){event.returnValue=false;}//屏蔽鼠标右键 
    function window.onhelp(){return false} //屏蔽F1帮助 
    function document.onkeydown() 

      if ((window.event.altKey)&& 
          ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ← 
           (window.event.keyCode==39)))   //屏蔽 Alt+ 方向键 → 
      { 
         alert("不准你使用ALT+方向键前进或后退网页!"); 
         event.returnValue=false; 
      } 
         /* 注:这还不是真正地屏蔽 Alt+ 方向键, 
         因为 Alt+ 方向键弹出警告框时,按住 Alt 键不放, 
         用鼠标点掉警告框,这种屏蔽方法就失效了。以后若 
         有哪位高手有真正屏蔽 Alt 键的方法,请告知。*/ 
      if ((event.keyCode==8)  ||                 //屏蔽退格删除键 
          (event.keyCode==116)||                 //屏蔽 F5 刷新键 
          (event.ctrlKey && event.keyCode==82)){ //Ctrl + R 
         event.keyCode=0; 
         event.returnValue=false; 
         } 
      if (event.keyCode==122){event.keyCode=0;event.returnValue=false;}  //屏蔽F11 
      if (event.ctrlKey && event.keyCode==78) event.returnValue=false;   //屏蔽 Ctrl+n 
      if (event.shiftKey && event.keyCode==121)event.returnValue=false;  //屏蔽 shift+F10 
      if (window.event.srcElement.tagName == "A" && window.event.shiftKey)  
          window.event.returnValue = false;             //屏蔽 shift 加鼠标左键新开一网页 
      if ((window.event.altKey)&&(window.event.keyCode==115))             //屏蔽Alt+F4 
      { 
          window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px"); 
          return false; 
      } 

    </script>
      

  2.   

    <script  language=javascript>  
    function  document.onkeydown()  
    {  
       if  ((event.keyCode==8)      &brvbar;  &brvbar;                                  //屏蔽退格删除键  
               (event.keyCode==116)  &brvbar;  &brvbar;                                  //屏蔽  F5  刷新键  
               (event.ctrlKey  &&  event.keyCode==82)){  //Ctrl  +  R  
             event.keyCode=0;  
             event.returnValue=false;  
             }  
    }  
    </script>
      

  3.   

    可以记录下同一个Session中上次访问时间,如果上次时间过短,则拒绝这次请求。可以Filter里面定义
      

  4.   

    dlxu(Coding超过了15W行)的方法不错,请教下,这样会不会导致页面空白?
      

  5.   

    同上,因为用SESSION判断毕竟要耗费服务器资源
      

  6.   

    用了连接池了,连接池最大是100个,很快就用完了,那天测试用的机器是一台普通pc,内存512,按住F5不放十几秒,连接就用尽了,在查询分析器里查看连接数已经达到100了,jboss报连接超时。
      

  7.   

    如果使用onkeydown屏蔽F5的话,可我在程序中是用<IFrame>,首页里有好几个这种框架,那岂不是在每一个jsp页面里都要写吗,有没有办法在一个框架里面写了之后,其它几个都有效的。在filter里写我也尝试过,这样需要占用一些服务器资源,所以没有使用这种方案。
      

  8.   

    简单地屏蔽刷新不是好办法,不能因噎废食,因为一两个人的恶意操作,就牺牲所有人的使用便利性?我支持dlxu(Coding超过了15W行)的方法。具体的可以进一步研究。另外,如果使用屏蔽也是可以的,只要考虑在页面刷新一次后的若干秒后用计时器将屏蔽再放开就好了。也就是说,页面开始先屏蔽掉刷新操作的途径(最好提示一下“至少XX秒后才能刷新本页面”),同时用一个计时器,过若干秒后将屏蔽的那些再放开。