本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前提
用的spring MVC,配置了一个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:applicationContext.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
分析
这个servlet的映射地址是/,对所有请求进行拦截,包括对静态资源的访问也拦截了,所以访问不了。 这个时候你的请求(例如localhost/fm.html)实际上是映射到对应的方法去了。。。如
@GetMapping("/fm.html")
@ResponseBody
public String test3() {
return "success";
}
这个时候的访问结果。。。
真是被自己蠢到了
解决
<mvc:default-servlet-handler></mvc:default-servlet-handler>
在你的ioc容器的配置文件里添加一个这个,这个表示对静态资源不进行拦截。
结论
遇到对静态资源无法访问的情况时,可以检查一下是否有地方对其进行了拦截。