<url-pattern>/*</url-pattern>拦截请求,你真的了解吗?附上 springmvc 配置文件详解

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

Guess you like

Origin blog.csdn.net/manqishizhizhu/article/details/120733259