SpringMVC配置
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,所以我们在请求静态资源的时候将会无法访问,出现404错误。
在配置文件中添加
<mvc:default-servlet-handler/>
可以解决静态资源访问问题
在springMVC-servlet.xml中配置<mvc:default-servlet-handler/>
后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,会对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
我在实际中发现若是添加了<mvc:default-servlet-handler/>
,则动态资源请求会发生失败,需要添加<mvc:annotation-driven/>
,才可正确访问动态资源。