栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC开启对静态资源的访问 配置及原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC开启对静态资源的访问 配置及原理

SpringMVC开启对静态资源的访问 配置及原理
  • 配置
  • 原理

配置

    要想在SpringMVC中开启对静态资源的访问,需要在核心配置文件springMVC.xml中添加以下代码片段




原理

    假设工程的目录结构如下图所示,静态资源目录static位于webapp下,通过配置以上两行代码便可以访问静态资源。

    切记不能将静态资源放到WEB-INF下,由于WEB-INF目录下资源文件安全性都是很高的。它是不能直接通过浏览器来访问,只能通过服务器来访问。

    DispatcherServlet只能访问到WEB-INF中的资源,通过转发去访问WEB-INF下的html、Jsp等资源,而无法访问到静态资源,那么该通过什么方式去访问静态资源呢?

    Tomcat的conf目录中有个web.xml,这是对部署到Tomcat中的所有项目的统一配置,我们自己的项目也会有一个web.xml文件,当这两个web.xml对同样的配置项做了不同的配置,Tomcat会按照就近原则,将项目中的配置作为最终的配置。

    Tomcat中的web.xml,里面配置了一个Servlet:org.apache.catalina.servlets.DefaultServlet
对应的servlet-mapping配置的为/,它可以访问到static静态资源。

    如果项目中的web.xml中的DispatcherServlet或其它自定义的Servlet的servlet-mapping也配置为/,那么会产生矛盾,按照就近原则,DispatcherServlet将会覆盖DefaultServlet的配置。

    此时访问资源时只会去DispatcherServlet中匹配,而不会去DefaultServlet中匹配,这样就找不到静态资源。若要能够访问静态资源,那么就要在springMVC.xml中加上


这样就开启对静态资源的访问。

    然而,此时无法匹配到其它控制器方法中的请求映射。因为加上这行配置,请求资源时只会经过DefaultServlet,而不会经过DispatcherServlet前端控制器。

    这显然不能满足我们的要求,若想要浏览器的请求路径既能够匹配静态资源,也可以匹配到其它控制器方法中的请求映射,此时就需要开启注解驱动


这时候,当浏览器向服务器请求任何资源时,会先经过DispatcherServlet寻找资源,如果没有找到,则会去DefaultServlet中匹配。如果还是没有找到资源,就会报404错误。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270162.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号