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

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

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

結果如今又犯了老錯誤~html

狀況以下:前端

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

 

 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 }

 

可是當項目加入了登陸驗證(過濾器)後,發現這個驗證失效了。ajax

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

過濾器中加入以下代碼:jsp

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地址。this

所以,前端 jQuery實現的ajax沒有正常工做。url

所以在過濾器中加入對  js 文件的判斷,

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

 

~問題解決了

相關文章
相關標籤/搜索