【spring】静态资源的访问受限解决方法

摘要:
前言我们知道在整合springmvc框架的时候需要在web.xml中配置一个servlet代码如下52428800524288000enterprise-servlet/问题所在其中servlet拦截的url-pattern为/:这代表该servlet拦截所有的请求,包括静态资源文件所发出的请求如:http://localhost:8080/work/public/image/image.png该请求会进入DispatcherServlet,然后会检查controller中是否存在该请求映射requestMapping,很明显此时没有相匹配的请求映射,最终页面显示图片加载失败。
前言

我们知道在整合spring mvc框架的时候需要在web.xml中配置一个servlet

代码如下

<!--spring mvc 的DispatcherServlet-->
    <servlet>
        <servlet-name>enterprise-servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--spring mvc 的 配置文件名称,如果配置文件名和<servlet-name>相同则不需要此配置-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:enterprise-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <!--对文件上传的限制-->
        <multipart-config>
            <max-file-size>52428800</max-file-size>
            <max-request-size>52428800</max-request-size>
            <file-size-threshold>0</file-size-threshold>
        </multipart-config>
    </servlet>
    <servlet-mapping>
        <servlet-name>enterprise-servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
问题所在

其中servlet拦截的url-pattern为 / :这代表该servlet拦截所有的请求,包括静态资源文件所发出的请求

如: http://localhost:8080/work/public/image/image.png 该请求会进入DispatcherServlet,然后会检查controller中是否存在该请求映射requestMapping,很明显此时没有相匹配的请求映射,最终页面显示图片加载失败。

解决

方法一:

这里的DispatcherServlet 是spring mvc 中的一个servlet,而面对项目中众多的servlet,他们都会有一个加载顺序。此时我们可以通过激活tomcat的默认servlet default来加载静态资源.但是该servlet必须配置在DispatcherServlet的前面

如下配置:

 <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/public/*</url-pattern><!--public下存放静态文件,包括css,lib,image等-->
 </servlet-mapping>

也可以分别定义:

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

方法二:

spring mvc 提供了解决方法,即在spring mvc 的配置文件中配置一个handler,变化:在走完DispatcherServlet之后如果没有匹配到controller,则会再去请求静态资源,查看是否存在该静态资源,然后加载!

 <mvc:default-servlet-handler/>

详情可以看看这里:springMVC对静态资源访问的处理

免责声明:文章转载自《【spring】静态资源的访问受限解决方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于核空间与像空间的专题讨论[20171120]关于INBOUND_CONNECT_TIMEOUT设置.txt下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

静态文件cdn自解析生成相对路径

一、场景和目标:用户上传一个包含 index.html 的静态资源压缩包,资源内所有文件都是相互依赖的,不需要用户对内部文件内容做任何特殊处理,仅通过服务端逻辑处理达到用户访问 http://xxx.xxx/guid/index.html 时就可以得到这个资源的所有数据并正常浏览。 二、技术:nodejs、expressnpm 包:decompress、r...

静态方法、类方法、实例方法

static 修饰局部变量:延长布局变量的生命周期static 修饰全局变量:当前变量只能在当前文件中使用static 修饰函数: 函数只能在当前文件中使用 静态:与程序的生命周期相同的数据结构,从程序启动时就存在,当程序停止时才被销毁。 静态变量:分为局部静态变量和全局静态变量两种,必须使用 “static” 关键字修饰。 局部静态变量: 一般定...

SpringMVC基础知识

SpringMVC SpringMVC简介: SpringMVC是一个表示层框架,搭建真实环境 SpringMVC的使用方法:注解和配置。(注解为主) SpringMVC是Spring3.x的一个模块,其实就是用MVC提供的表示层框架。 SpringMVC对视图组件没有必然要求,不一定要使用jsp,struts1,struts2规定了只能用jsp。 Spr...

spring启动过程

首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境; 其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个...

HTTP,URL,FS 模块搭建一个静态WEB服务器

WEB服务器: 一般指网站服务器,是指驻留在因特网上某种类型计算机的程序,可以向浏览器等Web 客户端提供文档,也可以放置网站文件让全世界浏览,还可以放置数据文件,让全世界下载,目前最主流的Web服务器有 Apache,Nginx,IIS等。 NodeJS 创建一个WEB服务器, 可以让我们访问Web服务器上面的网站 可以让我们下载Web服务器上面的文件...

普通Java类获取Spring的bean traceofsun的专栏 博客频道 CSDN.NET

普通Java类获取Spring的bean - traceofsun的专栏 - 博客频道 - CSDN.NET 普通Java类获取Spring的bean 分类:Extjs开发2010-08-13 09:47451人阅读评论(0)收藏举报 在SSH集成的前提下。某些情况我们需要在Action以外的类中来获得Spring所管理的Service对象...