前言
我们知道在整合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】静态资源的访问受限解决方法的更多相关文章
-
javaweb项目静态资源被拦截的解决方法
<servlet-mapping> <servlet-name>springMvc</servlet-name> <url-pattern>/*< ...
-
IIS开启伪静态后html静态页面无法访问的解决方法
IIS开启伪静态后,发现原本存在的html静态页面无法访问了,显示的404错误.网上查了下,是因为实现伪静态就是使用 URLRewriter 来映射后缀,会把asp等动态页面映射成html,但是原来存 ...
-
Vue Cli 打包之后静态资源路径不对的解决方法
cli2版本: 将 config/index.js 里的 assetsPublicPath 的值改为 './' . build: { ... assetsPublicPath: './', ... } ...
-
No mapping found for HTTP request with URI [/SLSaleSystem/js/jquery.dataTables.min.js] in DispatcherServlet with name &#39;spring&#39; 静态资源文件访问不到,无解!!!!!!!
报错信息: 网上三种修改 web.xml 文件方法尝试未果 尝试未果:<mvc:default-servlet-handler/> 尝试未果:方法2:直接告诉spring,这个你就得这 ...
-
spring boot 添加拦截器的简单实例(springBoot 2.x版本,添加拦截器,静态资源不可访问解决方法)
spring中拦截器主要分两种,一个是HandlerInterceptor,一个是MethodInterceptor 一.HandlerInterceptor HandlerInterceptor是s ...
-
【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问
作者:ssslinppp 参考链接: http://www.cnblogs.com/luxh/archive/2013/03/14/2959207.html http://www.cnb ...
-
解决Django项目静态资源无法访问的问题
静态资源无法访问 url.py中配置 from django.conf.urls import url from django.views import static from django.conf ...
-
SpringMVC 部署项目静态资源文件访问问题
问题:采用SpringMVC 部署项目后程序加载或用浏览器访问时出现类似的警告,2011-01-19 10:52:51,646 WARN [org.springframework.web.servle ...
-
SpringMVC02静态资源的访问
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
随机推荐
-
学习笔记day5:inline inline-block block区别
1. block元素可以包含block元素和inline元素:但inline元素只能包含inline元素.要注意的是这个是个大概的说法,每个特定的元素能包含的元素也是特定的,所以具体到个别元素上,这条 ...
-
PC-老鸟装机
老鸟装机 一.硬件安装莫疏忽 1>安装硬盘有讲究 1.单硬盘+单光驱 IDE1----硬盘(Mastet接口) IDE2----光驱(Mastet接口) ...
-
安装Ubuntu时的硬盘分区方案 转载
安装Ubuntu时的硬盘分区方案 http://www.cnblogs.com/shenliang123/p/3196743.html 如果你准备在硬盘里只安装Ubuntu一个操作系统的话,建议你采用 ...
-
Template7插入动态模板
要完成的效果如下图 其中下面添加出来的订单号和订单总价可以看作是接口请求的数据 实现步骤: 1 下载template7:https://github.com/nolimits4web/template ...
-
记录一次JQuery 动态参数使用
之前动态id 使用时时候一直是复制黏贴的,到自己实际使用的时候却毫无印象,这样不可取呀 $('#id') 取的是 id=‘id’ 的元素 $('#'+id) 才是取id为动态值的时候正确写法 记录 ...
-
python中join()函数、list()函数补充的用法
---恢复内容开始--- Python join() 方法用于将序列中的元素(必须是str) 以指定的字符 连接生成一个新的字符串. list=[','a','b','c'] print(''.joi ...
-
Make a Crystal UVA - 11014 (容斥定理)
题意:给定一个NxNxN的正方体,求出最多能选几个整数点,使得任意两点PQ不会使PQO共线. 思路:利用容斥原理,设f(k)为点(x, y, z)三点都为k的倍数的点的个数(要扣掉一个原点O),那么所 ...
-
Delphi APP 開發入門(一)重生的 Delphi
Delphi APP 開發入門(一)重生的 Delphi 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀 ...
-
(十七)Spring 集成Quartz
在使用jdk的timer时发现无法满足这次的开发需求:即无法在指定的日期进行执行任务.这便引入一个优秀的开源任务调度框架“quartz”.这里加入的是quartz-1.8.6版本.Quart的官网:h ...
-
Spring mvc 启动 和 请求分发
Spring mvc 启动 和 请求分发 启动加载: abstract class HttpServletBean extends HttpServlet void init() initServle ...