springmvc静态资源

Springmvc项目无法访问静态资源的原因分析:

<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <!--
    /  拦截所有,不包括.jsp
    /* 拦截所有,包括.jsp
    *.do 拦截所有的.do
    -->
    <url-pattern>/</url-pattern>
</servlet-mapping>
我们配置的是/,也就是说除了jsp的所有请求都要到springmvc的dispatcherServlet里面去,去了之后都是直接去到controller了,但是很明显,如果是访问静态资源的话,http://localhost:8080/ok.html的访问路径,肯定就是找的

requestMapping("ok.html"),当然找不到,所有报404。

自己做的测试哈:

我不做任何静态资源的配置,然后写controller

@Controller
public class TMController {

    @RequestMapping("/test.html")
    public String s (){
        int a=215;
        System.out.println(1);
        return "ok";
    }

}

然后浏览器访问:http://localhost:8080/test.html是可以直接抵达后端的controller的。

 

//-------------------------------------------------------------------------------------------------------

 

 

我自己搭建ssm框架时候,想重现静态资源无法访问的现象,一直无法重现,我都可以访问到webapps目录下面的jsp文件,js文件、html文件等等...好诡异...

最后才找到原因:

原来,我在springmvc.xml 文件、applicationContext.xml文件写了一个注解 

<mvc:default-servlet-handler/>

然后把它删除了,不配置,就无法访问静态资源了。所以得出结果:要正常访问静态资源的解决方案之一:添加<mvc:default-servlet-handler/>注解。

那么它具体是什么意思呢?启用tomcat中默认的servlet,即把静态资源交给默认的servlet处理。

 

 

解决访问二:简单粗暴地告诉服务器,这些资源不需要拦截!直接在web.xml文件中进行配置,如下:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
  </servlet-mapping>

比如这里配置了 jpg、png、js,那么像下图的目录,使用

http://localhost:8080/1.png 就可以正常访问。

弊端:就是如果要访问html静态文件,还需要添加

<servlet-mapping>

<servlet-name>default</servlet-name>

<url-pattern>*.html</url-pattern>

</servlet-mapping>

也就是这里的代码会很多,有点麻烦并且low.

 

方案三:直接告诉spring,这个你就得这么做!在MVC配置文件中添加资源文件映射。

<resources mapping="/resources/**" location="/resources/" />
<resources mapping="/images/**" location="/images/" />
<resources mapping="/js/**" location="/js/" />
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值