一:为什么会出现处理静态资源请求失败的问题
- 优雅的REST风格的资源URL,不希望带.html或。do等后缀。
- 若将DispatcherServlet请求映射配置为/,则springMVC将会捕获WEB容器的所有请求,包括静态资源的请求,springMVC会将当成一个普通的请求处理,因找不到对应的处理器导致错误。
二:解决办法
- 可以在springMVC的配置文件中配置<mvc:default-servlet-handler/>的方式解决静态资源的问题
- 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler,它会对进入 DispatcherServlet 的 请求进行筛查,如果发现是没有经过映射的请求,就将该请求交由 WEB 应用服务器默认的 Servlet 处理,如果不是静态资源的请求,才由 DispatcherServlet 继续处理
- 一般 WEB 应用服务器默认的 Servlet 的名称都是 default。若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 defaultservlet-name 属性显式指定
三:代码实现
<!--
将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler,它会对进入 DispatcherServlet 的 请求进行筛查,
如果发现是没有经过映射的请求,就将该请求交由 WEB 应用服务器默认的 Servlet 处理,如果不是静态资源的请求,
才由 DispatcherServlet 继续处理.
一般 WEB 应用服务器默认的 Servlet 的名称都是 default。若所使用的 WEB 服务器的默认 Servlet 名称不是 default,
则需要通过 defaultservlet-name 属性显式指定
-->
<mvc:default-servlet-handler/>