SpringMVC中web.xml中url配置路径 / 和 /* 的区别

在SpringMVC中的web.xml使用了 / 配置路径,就一定要记者在springmvc-servlet.xml中配置

 <!-- 让Spring MVC不处理静态资源   .css  .js   .html  .mp3  .mp4  .jsp-->
    <mvc:default-servlet-handler />

/* :可以把我们的jsp页面等静态资源也可以包含在内了
/ : 而这个只能去过滤Controller(Servlet)请求

所有往往我们在web.xml中配置DispatchServlet时,用 / ,而配置编码过滤器等要涉及到jsp或者静态页面的时候就用 /* ,一般是使用过滤器时候用 /* 就对了

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">


    <!--1.配置DispatchServlet-->
    <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-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <!--2.配置SpringMVC的乱码过滤-->
    <filter>
        <filter-name>encoding</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>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>


/和/*的区别:

< url-pattern > / </ url-pattern > 不会匹配到*.jsp,即:.jsp不会进入spring的 DispatcherServlet类 。
< url-pattern > /* </ url-pattern > 会匹配*.jsp,会出现返回jsp视图时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。
posted @ 2020-01-07 16:41  yucreator  阅读(1127)  评论(0)    收藏  举报