在應用中,有時候會用到過濾器,也有時候命名寫好了配好了過濾器資訊,可是過濾器就是不起作用。
導致過濾器不起作用的原因,目前我碰到的有兩種:乙個是過濾器的順序問題,乙個是過濾檔案型別。
先說說過濾器的順序問題。
在專案裡面,要是用ssh框架的話,web.xml檔案中除了自己寫的過濾器以外,還會有struts、hibernate等的過濾器,這樣子經常就會出現題目當中說的問題(尤其是過濾器過濾的是同一種型別,如.actioon)。
如:原來的過濾器順序是這樣子的:
struts2這個時候的就可以放好多引數,用逗號隔開就好,而且每個都起作用。org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter
*.action
userfilter
com.wjl.myfilter
*.action
這個時候的過濾器可能會不起作用,因為請求的時候先走了struts的過濾器,自己寫的過濾器就不執行了。但是要是換個順序,也就是如下的順序,讓請求先走自己的過濾器再走struts的過濾器,這樣子自己的過濾器就起作用了。
userfilter
com.wjl.myfilter
*.action
struts2
org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter
*.action
再說說過濾型別導致的不起作用。
在web.xml配置檔案裡面,很多地方是可以連續使用多個檔案的,用逗號隔開就好,如:
配置spring配置檔案的路徑
contextconfiglocation
/web-inf/classes/daosql.xml,/web-inf/classes/pagecontorl.xml,/web-inf/classes/base.xml
由上面那種類似的例子就容易聯想到在過濾器裡面使用同樣的方法配置多個過濾型別,如:
*.action,*.jsp
但實際上這樣子是不對的。這樣配置後,無論是action還是jsp都不會走過濾器。還是得把他們拆開才能用。拆開之後兩者型別都走過濾器。
userfilter
com.wjl.myfilter
*.action
*.jsp
springboot 配置過濾器不起作用的原因
使用 webfilter註解配置springboot的過濾器的時候,如果出現過濾器不起作用的原因,有可能為 1 當前過濾器類上要加兩個註解 component webfilter filtername 一般寫類名 urlpatterns 2 啟動類上要加多乙個註解 servletcomponents...
spring事務不起作用的原因
1.transactional加在非public方法上,這個其實idea就能規避了,有語法檢查 2.非 transactional註解方法呼叫同類中使用 transactional註解的方法,不生效,原因是事務管理用到了動態 原理自己去查 偽 public void test transaction...
java中的filter過濾器
通過filter技術,對web伺服器管理的所有web資源 例如jsp,servlet,靜態檔案或靜態 html 檔案等進行攔截,從而實現一些特殊的功能。功能實現路徑 在httpservletrequest到達 servlet 之前,攔截客戶的httpservletrequest 根據需要檢查http...