解決SpringMVC攔截器path路徑的坑
SpringMVC攔截器path路徑的坑
SpringMVC提供了很方便的攔截器供我們開(kāi)發(fā)使用。在配置文件中通過(guò)<mvc:mapping path="" />進(jìn)行配置攔截的路徑,但是這個(gè)path在配置的時(shí)候有一個(gè)小坑
我們都知道在SpringMVC攔截器中的/**是配置全部路徑.現(xiàn)在我有一個(gè)需求,想要攔截以/user/開(kāi)頭的請(qǐng)求.我的path寫(xiě)為/user/**,這樣就能攔截到所有的符號(hào)條件的請(qǐng)求.
然后我的項(xiàng)目需求增加了,我在項(xiàng)目中加入了多重權(quán)限控制并希望用攔截器去控制它.假設(shè)現(xiàn)在有個(gè)功能,只開(kāi)放給管理員,所以我把它的訪(fǎng)問(wèn)路徑設(shè)為/user/manager/xxxx/xxxx.所以我又加入了一個(gè)攔截器,希望攔截路徑中存在/manager/的所有的請(qǐng)求.我把path寫(xiě)為/manager/'**,結(jié)果卻不行.
user的攔截器正常,但是manager的攔截器卻不工作,我一度以為是攔截器出現(xiàn)了錯(cuò)誤.然后經(jīng)過(guò)一下午檢查,我發(fā)現(xiàn)我把路徑改成/manager/user/xxxx/xxxx就變成了manager攔截器工作但user攔截器不工作.我就確定是path出了問(wèn)題.
在一次次修改嘗試后,我明白了,原來(lái)/user/**只適用于以/user/開(kāi)頭的請(qǐng)求,/user/的前面什么都不能有,由于我所有的請(qǐng)求都是/user/開(kāi)頭,所以u(píng)ser的攔截器一直都是可以正常運(yùn)行的,但是manager攔截器就不同了,我的path寫(xiě)為/manager/**,但是我所有帶有/manager/的請(qǐng)求都是前面有/user/的,所以這不滿(mǎn)足path路徑中的/manager/**.當(dāng)你要在這個(gè)名稱(chēng)的前面加其他的一個(gè)名稱(chēng)時(shí),你需要/*/manager/**,如果前面有多個(gè)名稱(chēng),就是/**/manager/**,當(dāng)然了,由于/**是通配符,所以以manager開(kāi)頭的url也符合這個(gè)條件.
SpringMVC攔截器設(shè)置多個(gè)path
設(shè)置多個(gè)path
同一個(gè)攔截器如果想指定多個(gè)path,直接順序添加多個(gè)<mvc:mapping path="" />即可:
<!-- 攔截器 --> <mvc:interceptors> <!-- 多個(gè)攔截器,順序執(zhí)行 --> <!-- 如果不配置或/**,將攔截所有的Controller --> <!-- 注意,匹配任意地址時(shí)注意是2個(gè)“*”號(hào)不是1個(gè)“*”號(hào) --> <mvc:interceptor> <mvc:mapping path="/aaa/**" /> <mvc:mapping path="/bbb/**" /> <bean class="com.test.blog.interceptor.AccessInterceptor"> <property name="protectedUrls"> <list> <value>edit</value> <value>add</value> </list> </property> </bean> </mvc:interceptor> </mvc:interceptors>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于maven install 沒(méi)反應(yīng)的解決方法
下面小編就為大家?guī)?lái)一篇基于maven install 沒(méi)反應(yīng)的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06Spring中@Autowired和@Qualifier注解的3個(gè)知識(shí)點(diǎn)小結(jié)
這篇文章主要介紹了Spring中@Autowired和@Qualifier注解的3個(gè)知識(shí)點(diǎn)小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09關(guān)于idea的gitignore文件編寫(xiě)及解決ignore文件不生效問(wèn)題
這篇文章主要介紹了idea的gitignore文件編寫(xiě)及解決ignore文件不生效問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Java定時(shí)任務(wù)ScheduledThreadPoolExecutor示例詳解
這篇文章主要介紹了Java定時(shí)任務(wù)ScheduledThreadPoolExecutor示例詳解,這里使用scheduleAtFixedRate方法安排一個(gè)任務(wù),該任務(wù)是一個(gè) Runnable 匿名類(lèi),其run方法中調(diào)用了new LoginViewTimeTask().loginStatisticsHandle()方法,需要的朋友可以參考下2023-11-11Spring Boot集成Swagger接口分類(lèi)與各元素排序問(wèn)題
這篇文章主要介紹了Spring Boot集成Swagger接口分類(lèi)與各元素排序問(wèn)題,首先我們需要對(duì)Swagger中的接口也就是以Controller 層作為第一級(jí)梯度進(jìn)行組織的,Controller在我們實(shí)際開(kāi)發(fā)中,與其他具體接口之間是存在一對(duì)多的關(guān)系,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-10-10Java多線(xiàn)程之鎖學(xué)習(xí)(增強(qiáng)版)
這篇文章主要為大家詳細(xì)介紹了Java多線(xiàn)程中鎖的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們了解線(xiàn)程有一定幫助,需要的可以參考一下2023-02-02