tomcat正常启动,无法访问html等静态资源的问题

320 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前提

用的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容器的配置文件里添加一个这个,这个表示对静态资源不进行拦截。

结论

遇到对静态资源无法访问的情况时,可以检查一下是否有地方对其进行了拦截。