- 引入的.js文件为什么是404?
优雅的restful风格的资源不希望.html或.do等后缀,若将DispatcherServlet请求配置为/,则springmvc将捕获WEB容器的所有请求,包括静态资源请求,springmvc会将它们当成普通请求处理,因找不到对应处理器而导致错误。
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern> //拦截所有请求
</servlet-mapping>
- 解决:
可以在springmvc的配置文件中配置< mvc:default-servlet-handler />解决静态资源的问题。
-
< mvc:default-servlet-handler />将在springmvc上下文中定义一个DefaultServletHttpRequestHandler,它会对进入DispatcherServlet的请求进行筛查,如果发现是没有经过映射的请求,就将该请求交由WEB应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理;
-
一般WEB应用服务器默认的Servlet的名称都是default,若所使用的WEN服务器的默认名称不是default,则需要通过default-servlet-name属性显示定义。
<mvc:default-servlet-handler/>
为防止之前的RequestMapping不可使用,还需要再添加如下配置:
<mvc:annotation-driven></mvc:annotation-driven>