你怎么DispatcherServlet拦截"*.do"这有一个后缀URL。就不存在訪问不到静态资源的问题。 
 假设你的DispatcherServlet拦截"/",为了实现REST风格,拦截了全部的请求。那么同一时候对*.js,*.jpg等静态文件的訪问也就被拦截了。
要解决问题。

目的:能够正常訪问静态文件,不能够找不到静态文件报404。
方案一:激活Tomcat的defaultServlet来处理静态文件
<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>
要配置多个,每种文件配置一个
要写在DispatcherServlet的前面。 让 defaultServlet先拦截请求,这样请求就不会进入Spring了。
Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 -- "default" 
 Google App Engine 自带的 默认Servlet的名字 -- "_ah_default" 
 Resin 自带的 默认Servlet的名字 -- 
"resin-file" 
 WebLogic 自带的 默认Servlet的名字 
-- "FileServlet" 
 WebSphere  自带的 默认Servlet的名字 -- "SimpleFileServlet"
 方案二: 在spring3.0.4以后版本号提供了mvc:resources ,  用法:
<!-- 对静态资源文件的訪问 -->
<mvc:resources mapping="/images/**" location="/images/" />

/images/**映射到 ResourceHttpRequestHandler进行处理,location指定静态资源的位置.能够是web application根文件夹下、jar包里面。这样能够把静态资源压缩到jar包中。cache-period 能够使得静态资源进行web cache


 假设出现以下的错误,可能是没有配置<mvc:annotation-driven />的原因。 
 报错WARNING: No mapping found for HTTP request with URI 
[/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'
 
使用<mvc:resources/>元素,把mapping的URI注冊到SimpleUrlHandlerMapping的urlMap中, 
 key为mapping的URI pattern值,而value为ResourceHttpRequestHandler, 
 这样就巧妙的把对静态资源的訪问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath文件夹,jar包内静态资源的訪问. 
 另外须要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.由于对static uri的defaultHandler就是ResourceHttpRequestHandler, 
 否则无法处理static resources request.
方案三 ,使用<mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
会把"/**" url,注冊到SimpleUrlHandlerMapping的urlMap中,把对静态资源的訪问由HandlerMapping转到 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 处理并返回. 
 DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.
补充说明:多个HandlerMapping的运行顺序问题:
DefaultAnnotationHandlerMapping的order属性值是:0 
  
 <mvc:resources/ >自己主动注冊的 SimpleUrlHandlerMapping的order属性值是: 2147483646
<mvc:default-servlet-handler/>自己主动注冊 的SimpleUrlHandlerMapping 的order属性值是: 2147483647
spring会先运行order值比較小的。

当訪问一个a.jpg图片文件时,先通过 DefaultAnnotationHandlerMapping 来找处理器。一定是找不到的,由于我们没有叫a.jpg的Action。

然后再按order值升序找,由于最后一个 SimpleUrlHandlerMapping 是匹配 "/**"的,所以一定会匹配上。就能够响应图片。

訪问一个图片。还要走层层匹配。不知性能怎样?
最后再说明一下,方案二、方案三 在訪问静态资源时,假设有匹配的(近似)总拦截器,就会走拦截器。假设你在拦截中实现权限检查,要注意过滤这些对静态文件的请求。
怎样你的DispatcherServlet拦截 *.do这种URL后缀,就不存上述问题了。还是有后缀方便。

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/blfshiye/p/4843808.html

springmvc如何访问静态文件,例如jpg,js,css相关推荐

  1. SpringMVC之访问静态文件

    我们在进行springMVC开发时,必定会在jsp页面引入js文件.img文件和css文件.大多数人会将这些分类存放在WebRoot文件下新建的文件夹下面.同时,会在web.xml文件中配置拦截所有请 ...

  2. Springboot访问静态文件的问题(WebContent)

    Springboot访问静态文件的问题 前言 1.创建WebContent并在Facets中配置后依旧无法访问任何资源 ①没有配置Working Directories ②配置好Working Dir ...

  3. Django从理论到实战(part24)--在模板中访问静态文件

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  4. nginx访问静态文件

    1. 访问一个文件 server {listen 80;server_name file.one.cn;access_log /Users/xiaoming/Documents/nginxlog/fi ...

  5. nginx访问静态文件不下载

    1.什么是MIME-TYPE? MIME--Multipurpose Internet Mail Extension(多用途因特网邮件扩展)最初是为了满足电子邮件支持多字符集及附件而出现的.MIME ...

  6. openresty的html文件夹在,Openresty 配置访问静态文件,拆分路径

    http { server { listen 8080; location / { # default_type text/html; # content_by_lua ' # ngx.say(&qu ...

  7. layui外部引入,从文件外部引入js/css

    项目需求 需求是完成一个插入页面webim插件,希望只在页面中引用一条webim.js,即可以将整个webim插入页面,那么我们就需要在引入的这一条webim.js文件内执行一些方法,来讲我们整个插件 ...

  8. 开源 静态 文件 服务器,Node.js搭建静态服务器

    写在开头,本文是node.js最最初级的搭建静态服务器,比较适合新手入门,大神请绕道哦- Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用 ...

  9. Spring中拦截/和拦截/*的区别 - 不能访问到返回的JSP - 访问静态资源(jpg,js等)

    最近碰到了一个spring的web.xml无法跳转到index.html页面的小问题,查了之后从下面这篇文章中受益,特此转发,谢谢!!! 一.我们都知道在基于Spring的Application中,需 ...

最新文章

  1. [TJOI2018]xor
  2. redhat linux创建磁盘分区,redhat6.4 挂载硬盘,创建新分区,删除分区
  3. mysql中的tablefamily_Mysql中的表操作
  4. PowerTip of the Day from powershell.com上周汇总(六)
  5. Android之打开继承DialogFragment对话框里面EditText获取光标并且弹出键盘把底部布局顶上去
  6. IntelliJ IDEA 2019.1 windows找不到文件‘chrome’
  7. 1组第一次作业-小组自我介绍
  8. C#反射调用类的私有方法
  9. PHPExcel如何把该列的值设置为文本无科学计数?
  10. 一文带你了解夜间灯光数据
  11. clickhouse创建外部字典表
  12. 惠普HP2132打印机 803墨盒的简单加墨方法
  13. 对于设计模式中七大原则的理解
  14. 阿里 M8 级大神整理出 SQL 手册:收获不止 SQL 优化,抓住 SQL 的本质
  15. arm架构服务器安装系统教程,docker服务在arm平台上部署安装方法
  16. kaze算法的图像配准研究(2)-匹配
  17. 《实用VC编程之玩转控件》第15课:Tree树形控件
  18. JavaSE基本数据类型
  19. 38个PS常用工具箱快捷键,找工具不慌、不忙、不乱(纯干货)
  20. 计算机上的音乐怎么找,得到APP里面的音频怎样可以在电脑上面听呢? 谢谢了...

热门文章

  1. 数字图像处理的三个层次
  2. 如何设计好词袋模型BoW模型的类类型
  3. Caffe CNN特征可视化
  4. 又一轮电邮中间人攻击来袭 企业如何自保?
  5. Delphi中流对象 TStream
  6. windows php swoole 安装
  7. POJ3133(插头dp)
  8. SCCM 2012 R2---配置客户端发现方法和边界组
  9. tq2440实验手册qt编译问题
  10. 看似简单的问题 静态方法和实例化方法的区别