我的文章-SpringMVC程序员

SpringMVC 过滤器

2018-04-28  本文已影响36人  飞翔的鲲
  1. web.xml 配置请求拦截路径。
 <!--spring-mvc-->
    <servlet>
        <servlet-name>spring-mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--设置请求后缀-->
    <servlet-mapping>
        <servlet-name>spring-mvc</servlet-name>
        <!--只有后缀是htm的请求路径才被SpringMVC拦截处理-->
        <!--<url-pattern>*.htm</url-pattern>-->
        <!--所有请求都会被SpringMVC拦截处理-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
  1. spring-mvc.xml 配置拦截路径
    进入SpringMVC的请求,会匹配路径:
    如果请求路径访问的是静态资源,则直接访问。
    如果访问的不是静态资源文件,则调controller。如果想只访问controller,可以在web.xml里SpringMVC的请求路径配置过滤器,.htm, .do,.action等,这样.html或其他访问资源的请求就不会被SpringMVC响应。

1) 静态资源文件拦截

 <mvc:resources mapping="/res-admin/**" location="/resources-admin/"/>

<!-- 后使用这种方式 -->
 <mvc:default-servlet-handler/>

这样配置,当请求路径这样时:http://localhost:8080/res-admin/index.html, 就能够访问到 resources-admin 目录下的资源文件。不配置需要resources-admin这样才能访问到。

image.png

webapp目录下的资源可以被随意访问到,但WEB-INF目录下的资源不能访问,这时,可以使用配置<mvc:resources/>就能够暴露WEB-INF下的资源文件了。

2) controller路径访问
如果请求路径不是请求资源路径,则会根据相应路径请求controller, 如果有后缀,其实有跟没有一样,请求时他会将 .* 后缀去了匹配。
比如在web.xml配置SpringMVC请求路径不过滤。
请求路径: http://localhost:8080/back/index.htmhttp://localhost:8080/back/index.h, http://localhost:8080/back/index. , http://localhost:8080/back/index 都能请求到。

 <!--设置请求后缀-->
    <servlet-mapping>
        <servlet-name>spring-mvc</servlet-name>
        <!--只有后缀是htm的请求路径才被SpringMVC拦截处理-->
        <!--<url-pattern>*.htm</url-pattern>-->
        <!--所有请求都会被SpringMVC拦截处理-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
上一篇 下一篇

猜你喜欢

热点阅读