< url-pattern >/< /url-pattern >和< url-pattern >/*< /url-pattern >的区别
标签< url-patten >的几种用法
1. < url-pattern >/*< /url-pattern >
当我们使用 /* 后,我们可以匹配所有的请求,即所有的请求都会经过该标签对应的 Servlet ,即能匹配到所有的 url ,包括路径型的和后缀型的 url (包括/login,.jsp,.js和*.html等),此时就需要注意静态资源了,事实上很多静态资源都是不需要经过 Servlet 的,会造成资源浪费,此时就需要做特殊处理;
2. < url-pattern >/< /url-pattern >
会匹配到所有像 /login 这样的路径型url,但不会匹配到 后缀型的url(即 *.html等)。若使用该标签,则需要在 springmvc 配置文件中配置 静态资源映射
<!-- 资源映射 -->
<mvc:resources location="/css/" mapping="/css/**"></mvc:resources>
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/images/" mapping="/images/**"></mvc:resources>
3. < url-pattern >*.do< /url-pattern > 推荐用法
使用该标签,可以避免对静态资源的过滤,这样也就不需要像 方法1、2 那样需要对静态资源做特殊处理。
4、最后,附上常见 SpringMVC 配置文件,希望对大家有用
<!-- 解决post乱码
解决在url中传递中文参数时的乱码 -->
<filter>
<filter-name>CharacterEncodingFilter</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>
<!-- 配置所有请求都经过该拦截器,即所有资源都统一使用 utf-8 防止乱码 -->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 前端控制器,提供SpringWebMVC的集中访问点,而且负责职责的分派 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定加载的配置文件 ,通过参数contextConfigLocation加载 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--
1、load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法);
2、当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
3、当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载;
4、正数的值越小,该servlet的优先级越高,应用启动时就越先加载;
5、当值相同时,容器就会自己选择顺序来加载。
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!--
1、welcome-file-list一般情况下只能使用静态网页,如果非要把他配置成SpringMVC的控制器URL就会报错;
2、若想使用动态网页(*.jsp),则 servlet 不能带有扩展名,否则就当成静态文件处理,即若想欢迎页面访问 *.jsp 页面,则扩展名不能有, <welcome-file>/pages/index</welcome-file>
-->
<welcome-file-list>
<welcome-file>/pages/index.html</welcome-file>
</welcome-file-list>