您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
17-SpringMVC的请求-获得请求参数-静态资源访问的开启(所有servlet匹配不到后的兜底路由规则(原生纯静态文件的请求路由规则))
发布时间:2025-01-01 15:10:00编辑:雪饮阅读()
-
在上篇中我们曾经遇到过在jsp页面中加载webapp目录下面的js文件的时候出现404错误。
表面看起来很懵逼,其实也有迹可循。
原因是在web.xml中我们之前有配置过一些servlet及其映射
<servlet>
<servlet-name>DispatcherServlet</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>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Servlet01</servlet-name>
<servlet-class>com.web.Servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet01</servlet-name>
<url-pattern>/Servlet01</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Servlet02</servlet-name>
<servlet-class>com.web.Servlet02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet02</servlet-name>
<url-pattern>/Servlet02</url-pattern>
</servlet-mapping>
那么当这些servlet(servlet01,servlet02)都没有匹配上的时候,就会自动匹配默认的”/”,”/”这个在这里是缺省的servlet匹配,缺省即默认。
那么默认就会走这个”/”匹配了。
而”/”又关联到DispatcherServlet,而DispatcherServlet又是挂钩到Spring MVC的配置文件xml,则这里如Spring-mvc.xml中。
所以我们在这个Spring-mvc.xml中新增如
<mvc:resources mapping="/js/**" location="/js/"/>
这里的mapping就是匹配的请求的规则,location就是对这一请求规则要取的资源的手动指定查找位置了。而这个手动查找位置location是不会走servlet的匹配规则的(不然岂不是又循环递归回去了。。。,死循环了。。。)
当然这样的解法有时候也不是很完美,这里仅仅解决了这个路径里面包含js的,如果还有包含图片例如img之类的,又得新增。那么还有一个比较优雅的就是匹配不到对于servlet后就直接使用tomcat原始的资源请求匹配规则,则该Spring MVC的 配置xml文件中新增如:
<mvc:default-servlet-handler/>
关键字词:SpringMVC,servlet,静态,文件,资源,路由,匹配
相关文章
- 16-SpringMVC的请求-获得请求参数-获得集合类型参数2(
- 15-SpringMVC的请求-获得请求参数-获得集合类型参数1(
- 14-SpringMVC的请求-获得请求参数-获得数组类型参数(g
- 13-SpringMVC的请求-获得请求参数-获得POJO类型参数(
- 12-SpringMVC的请求-获得请求参数-获得基本类型参数(
- 09-SpringMVC的数据响应-回写数据-返回对象或集合2(更
- 08-SpringMVC的数据响应-回写数据-返回对象或集合(更
- 07-SpringMVC的数据响应-回写数据-直接回写json格式字
- 06-SpringMVC的数据响应-回写数据-直接回写字符串(直
- 05-SpringMVC的数据响应-页面跳转-返回ModelAndView3(