- 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>
- 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.pngwebapp目录下的资源可以被随意访问到,但WEB-INF目录下的资源不能访问,这时,可以使用配置<mvc:resources/>就能够暴露WEB-INF下的资源文件了。
2) controller路径访问
如果请求路径不是请求资源路径,则会根据相应路径请求controller, 如果有后缀,其实有跟没有一样,请求时他会将 .* 后缀去了匹配。
比如在web.xml配置SpringMVC请求路径不过滤。
请求路径: http://localhost:8080/back/index.htm,http://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>
网友评论