<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>