url-pattern的匹配方式,以及要不要带星号,带不带有什么区别?

<url-pattern>/*</url-pattern> 与 <url-pattern>/</url-pattern>有什么区别?

  在springmvc的web.xml文件中,<servlet>中的<url-pattern>往往写成“/”,而<filter>中往往写成“/*”。如:

<servlet>
   <servlet-name>spring</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>spring</servlet-name>
   <url-pattern>/</url-pattern>
 </servlet-mapping>


<filter>
   <filter-name>encodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   
   <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
   </init-param>
        
   <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
   </init-param>
 </filter>
 <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>

那么斜杠后加不加星号有什么区别呢?

<url-pattern> / </url-pattern>  ———— 会匹配到路径型的url,不会匹配到以 .jsp 或 .html等为后缀的url;

而<url-pattern> /* </url-pattern> ———— 既会匹配到路径型的url,也会匹配到以 .jsp 或 .html等为后缀的url

url-pattern的匹配规则有三种:精确匹配; 路径匹配; 后缀匹配;

精确匹配:访问地址与url-pattern内的地址完全相同,如<url-pattern> /user/pages/list.jsp </url-pattern>

路径匹配:访问地址是在url-pattern指定的路径之下,如<url-pattern> /user/* </url-pattern>

后缀匹配:访问路径的后缀名与url-pattern指定的后缀名一致, 如<url-pattern> *.html </url-pattern>

发布了15 篇原创文章 · 获赞 3 · 访问量 4997

猜你喜欢

转载自blog.csdn.net/kingsley520_a/article/details/103713648