過濾器會攔截 前端頁面加載 js文件的請求


學藝不精啊.....之前就總結過博客:

JAVA中解決Filter過濾掉css,js,圖片文件等問題

結果現在又犯了老錯誤~

情況如下:

index.jsp 頁面的驗證碼輸入欄綁定了異步驗證(jQurey實現),當輸入內容發生變化時,異步去后台驗證輸入是否正確。

 

 1 $(function(){
 2 
 3   
 4 
 5    $("#a").bind('input propertychange',function () {
 6 
 7       var registName=this.value;
 8 
 9       var param={"method":"checkRegistName","registName":registName};
10 
11       $.get("User.do",param,function(data){            
12 
13          if(data!="1"){
14 
15             $(this).parent().children("span").html("用戶名可以使用");
16 
17          }else{
18 
19             $(this).parent().children("span").html("用戶名已被占用");
20 
21          }
22 
23       }.bind(this))
24 
25       //ajax中的回調函數直接用this不靈,解決辦法是使用bind(this)綁定this到當前事件。
26 
27    });
28 
29 }

 

但是當項目加入了登錄驗證(過濾器)后,發現這個驗證失效了。

經過檢查發現,過濾器會攔截 頁面對  js文件的請求。

過濾器中加入如下代碼:

1 System.out.println( "登錄驗證過濾器  loginFilter" );
2 
3 String url = httpRequest.getServletPath();
4 
5 System.out.println("經過過濾器的請求url為 "+url);

 

訪問頁面,工作台輸出如下:

 

1 登錄驗證過濾器  loginFilter
2 經過過濾器的請求url為 /index.jsp
3 登錄驗證過濾器  loginFilter
4 經過過濾器的請求url為 /js/jquery.js
5 登錄驗證過濾器  loginFilter
6 經過過濾器的請求url為 /yanzheng  

 

其中 “index.jsp” 為訪問的頁面, “/js/jquery.js”為index.jsp 中加載的js文件,“/yanzheng”是驗證碼圖片獲取時訪問的后台severlet地址。

因此,前端 jQuery實現的ajax沒有正常工作。

因此在過濾器中加入對  js 文件的判斷,

1 if("/index.jsp".equals(url) |"/yanzheng".equals(url)|"/js/jquery.js".equals(url)){         
2 
3         chain.doFilter(request, response);                
4 
5 }

 

~問題解決了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM