詳解SpringMVC的url-pattern配置及原理剖析
阿新 • • 發佈:2020-06-16
xml裡面配置標籤:
<!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 該種方式比較精確、方便,在以前和現在企業中都有很大的使用比例 方式二:/ 不會攔截 .jsp,但是會攔截.html等靜態資源(靜態資源:除了servlet和jsp之外的js、css、png等) 為什麼配置為/ 會攔截靜態資源??? 因為tomcat容器中有一個web.xml(父),你的專案中也有一個web.xml(子),是一個繼承關係 父web.xml中有一個DefaultServlet,url-pattern 是一個 / 此時我們自己的web.xml中也配置了一個 /,覆寫了父web.xml的配置 為什麼不攔截.jsp呢? 因為父web.xml中有一個JspServlet,這個servlet攔截.jsp檔案,而我們並沒有覆寫這個配置, 所以springmvc此時不攔截jsp,jsp的處理交給了tomcat 如何解決/攔截靜態資源這件事? 方式三:/* 攔截所有,包括.jsp --> <!--攔截匹配規則的url請求,進入springmvc框架處理--> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
父xml的路徑:
我們配置的springmvc.xml只能對jsp進行攔截,但不能對html等進行攔截,我們在webapp下新建個test.html
然後訪問:
原因是沒有對html等靜態資源字尾進行處理的handle.
我們在springmvc.xml裡面配置:
<mvc:default-servlet-handler/>
訪問:
繼續測試:
如果我們將html頁面放在webapp以外的其他位置,都是無法訪問的:
那如果我們想讓靜態資源在resources下面訪問,我們應該怎麼配置呢?
靜態資源配置方案二
將test.html放在resources目錄下面,然後配置springmvc.xml:
<!--靜態資源配置,方案二,SpringMVC框架自己處理靜態資源 mapping:約定的靜態資源的url規則 location:指定的靜態資源的存放位置 --> <mvc:resources location="classpath:/" mapping="/resources/**"/>
resources目錄就是咱們的classpath路徑。
訪問:
http://localhost:8080/resources/test.html
到此這篇關於詳解SpringMVC的url-pattern配置及原理剖析的文章就介紹到這了,更多相關SpringMVC的url-pattern配置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!