解決SpringMVC攔截器path路徑的坑
SpringMVC攔截器path路徑的坑
SpringMVC提供了很方便的攔截器供我們開發(fā)使用。在配置文件中通過(guò)<mvc:mapping path="" />進(jìn)行配置攔截的路徑,但是這個(gè)path在配置的時(shí)候有一個(gè)小坑
我們都知道在SpringMVC攔截器中的/**是配置全部路徑.現(xiàn)在我有一個(gè)需求,想要攔截以/user/開頭的請(qǐng)求.我的path寫為/user/**,這樣就能攔截到所有的符號(hào)條件的請(qǐng)求.
然后我的項(xiàng)目需求增加了,我在項(xiàng)目中加入了多重權(quán)限控制并希望用攔截器去控制它.假設(shè)現(xiàn)在有個(gè)功能,只開放給管理員,所以我把它的訪問(wèn)路徑設(shè)為/user/manager/xxxx/xxxx.所以我又加入了一個(gè)攔截器,希望攔截路徑中存在/manager/的所有的請(qǐng)求.我把path寫為/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/開頭的請(qǐng)求,/user/的前面什么都不能有,由于我所有的請(qǐng)求都是/user/開頭,所以u(píng)ser的攔截器一直都是可以正常運(yùn)行的,但是manager攔截器就不同了,我的path寫為/manager/**,但是我所有帶有/manager/的請(qǐng)求都是前面有/user/的,所以這不滿足path路徑中的/manager/**.當(dāng)你要在這個(gè)名稱的前面加其他的一個(gè)名稱時(shí),你需要/*/manager/**,如果前面有多個(gè)名稱,就是/**/manager/**,當(dāng)然了,由于/**是通配符,所以以manager開頭的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)文章
SpringBoot數(shù)據(jù)校驗(yàn)功能的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot數(shù)據(jù)校驗(yàn)功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
mybatis-plus 關(guān)于savebatch,saveorupdatebatch遇到的坑及解決辦法
本文主要介紹了mybatis-plus 關(guān)于savebatch,saveorupdatebatch遇到的坑及解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Maven介紹與配置+IDEA集成Maven+使用Maven命令小結(jié)
Maven是Apache軟件基金會(huì)的一個(gè)開源項(xiàng)目,是一個(gè)優(yōu)秀的項(xiàng)目構(gòu)建管理工具,它用來(lái)幫助開發(fā)者管理項(xiàng)目中的 jar,以及 jar 之間的依賴關(guān)系、完成項(xiàng)目的編譯、測(cè)試、打包和發(fā)布等工作,本文給大家介紹Maven介紹與配置+IDEA集成Maven+使用Maven命令,感興趣的朋友一起看看吧2024-01-01
Java多線程生產(chǎn)者消費(fèi)者模式實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Java多線程生產(chǎn)者消費(fèi)者模式實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
使用Java獲取系統(tǒng)信息的常用代碼整理總結(jié)
這篇文章主要介紹了使用Java獲取系統(tǒng)信息的常用代碼整理總結(jié),在服務(wù)器端一般經(jīng)常能夠用到,歡迎收藏,需要的朋友可以參考下2015-11-11
Spring?boot?自定義?Starter及自動(dòng)配置的方法
Starter?組件是?Spring?boot?的一個(gè)核心特性,Starter組件的出現(xiàn)極大的簡(jiǎn)化了項(xiàng)目開發(fā),這篇文章主要介紹了Spring?boot?自定義?Starter?及?自動(dòng)配置,需要的朋友可以參考下2022-12-12
使用mybatis切片實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制的操作流程
數(shù)據(jù)權(quán)限控制需要對(duì)查詢出的數(shù)據(jù)進(jìn)行篩選,對(duì)業(yè)務(wù)入侵最少的方式就是利用mybatis或者數(shù)據(jù)庫(kù)連接池的切片對(duì)已有業(yè)務(wù)的sql進(jìn)行修改,本文給大家介紹了使用mybatis切片實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制的操作流程,需要的朋友可以參考下2024-07-07

