詳解SpringMVC的url-pattern配置及原理剖析
xml里面配置標(biāo)簽:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
方式一:帶后綴,比如*.action *.do *.aaa
該種方式比較精確、方便,在以前和現(xiàn)在企業(yè)中都有很大的使用比例
方式二:/ 不會(huì)攔截 .jsp,但是會(huì)攔截.html等靜態(tài)資源(靜態(tài)資源:除了servlet和jsp之外的js、css、png等)
為什么配置為/ 會(huì)攔截靜態(tài)資源???
因?yàn)閠omcat容器中有一個(gè)web.xml(父),你的項(xiàng)目中也有一個(gè)web.xml(子),是一個(gè)繼承關(guān)系
父web.xml中有一個(gè)DefaultServlet, url-pattern 是一個(gè) /
此時(shí)我們自己的web.xml中也配置了一個(gè) / ,覆寫了父web.xml的配置
為什么不攔截.jsp呢?
因?yàn)楦竪eb.xml中有一個(gè)JspServlet,這個(gè)servlet攔截.jsp文件,而我們并沒有覆寫這個(gè)配置,
所以springmvc此時(shí)不攔截jsp,jsp的處理交給了tomcat
如何解決/攔截靜態(tài)資源這件事?
方式三:/* 攔截所有,包括.jsp
-->
<!--攔截匹配規(guī)則的url請(qǐng)求,進(jìn)入springmvc框架處理-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
父xml的路徑:

我們配置的springmvc.xml只能對(duì)jsp進(jìn)行攔截,但不能對(duì)html等進(jìn)行攔截,我們在webapp下新建個(gè)test.html

然后訪問:


原因是沒有對(duì)html等靜態(tài)資源后綴進(jìn)行處理的handle.
我們在springmvc.xml里面配置:
<mvc:default-servlet-handler/>

訪問:

繼續(xù)測試:
如果我們將html頁面放在webapp以外的其他位置,都是無法訪問的:

那如果我們想讓靜態(tài)資源在resources下面訪問,我們應(yīng)該怎么配置呢?
靜態(tài)資源配置方案二
將test.html放在resources目錄下面,然后配置springmvc.xml:
<!--靜態(tài)資源配置,方案二,SpringMVC框架自己處理靜態(tài)資源 mapping:約定的靜態(tài)資源的url規(guī)則 location:指定的靜態(tài)資源的存放位置 --> <mvc:resources location="classpath:/" mapping="/resources/**"/>
resources目錄就是咱們的classpath路徑。
訪問:
http://localhost:8080/resources/test.html

到此這篇關(guān)于詳解SpringMVC的url-pattern配置及原理剖析的文章就介紹到這了,更多相關(guān)SpringMVC的url-pattern配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java?socket實(shí)現(xiàn)局域網(wǎng)聊天
這篇文章主要為大家詳細(xì)介紹了java?socket實(shí)現(xiàn)局域網(wǎng)聊天,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
解決springboot遇到autowire注入為null的問題
這篇文章主要介紹了解決springboot遇到autowire注入為null的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
RxJava的消息發(fā)送和線程切換實(shí)現(xiàn)原理
這篇文章主要介紹了RxJava的消息發(fā)送和線程切換實(shí)現(xiàn)原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯
這篇文章主要介紹了如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
SpringBoot數(shù)據(jù)層測試事務(wù)回滾的實(shí)現(xiàn)流程
這篇文章主要介紹了SpringBoot數(shù)據(jù)層測試事務(wù)回滾的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10

