創建Springmvc項目時,特殊攔截器失效情況的原因及解決辦法


最近開發一個新項目時,搭建springmvc框架時,遇到一個攔截器失效的情況困擾了兩天。現在解決,特此記錄一下。

攔截器不生效的情況描述:

  

設置登錄攔截的時候,首先登錄接口肯定是不用攔截的。所以需要在<mvc:interceptors>的標簽中,添加<mvc:exclude-mapping>,作用是排除不需要攔截的請求。

但是,實際運行中,登錄接口被攔截到了,也就是說<mvc:exclude-mapping>標簽沒起作用。

當時檢查了所有可能的配置,包括頭信息schema的版本引入,4.1算是比較新的,感覺應該都沒問題的,可是始終無法解決。

 

后來找到了出現這個問題的原因:

問題還是出現在schema的引用。

從截圖來看,schema引入的是4.1版本,算是比較新的,應該沒問題。但是關鍵是,運行過程中,並沒有使用4.1版本。

代碼正常運行時,使用的版本實際上是pom文件中spring jar包的版本。

然后打開項目中的Maven Dependencies,

可以看到,實際jar包中的schemas版本只有3.1和3.0,而3.1版本的xsd是不支持<mvc:exclude-mapping>標簽的。

所以,盡管我在spring-interceptor.xml的頭位置配置了4.1的xsd,但是實際並不起作用,沒有在實際的jar包中找到4.1版本的xsd文件。

解決辦法:

 

就是講spring系列的jar包版本改為比較新的版本,改為支持<mvc:exclude-mapping>標簽的版本。

這時候,就會在Maven Dependencies中看到新的xsd。

可以看到,因為pom文件中配置的版本是4.2.2的,它會兼容之前的版本,生成的xsd文件中,已經包含之前版本的xsd。所以此時,在spring-interceptor.xml的頭位置配置4.1的xsd,<mvc:exclude-mapping>標簽就生效了,

就不會攔截登錄接口或不需要攔截的請求了。

 


免責聲明!

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



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