方案一:Tomcat的defaultServlet来处理静态文件

要放在DispatcherServlet的前面, 让 defaultServlet先拦截请求,这样请求就不会进入Spring了

方案二: 在spring3.0.4以后版本提供了mvc:resource

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

如果出现下面的错误,可能是没有配置的原因。

报错WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'

使用元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中,

key为mapping的URI pattern值,而value为ResourceHttpRequestHandler,

这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath目录,jar包内静态资源的访问.

另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler,

否则无法处理static resources request.

方案三 ,使用

会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回.

DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.

补充说明:多个HandlerMapping的执行顺序问题:

DefaultAnnotationHandlerMapping的order属性值是:0

自动注册的 SimpleUrlHandlerMapping的order属性值是: 2147483646

自动注册 的SimpleUrlHandlerMapping 的order属性值是: 2147483647

spring会先执行order值比较小的。当访问一个a.jpg图片文件时,先通过 DefaultAnnotationHandlerMapping 来找处理器,一定是找不到的,因为我们没有叫a.jpg的Action。然后再按order值升序找,由于最后一个 SimpleUrlHandlerMapping 是匹配 "/**"的,所以一定会匹配上,就可以响应图片。

如何你的DispatcherServlet拦截 *.do,.action这样的URL后缀,就不存在这样的问题。

一般看情况而选择。

静态资源java 配置文件_java web 静态资源访问配置三种方式相关推荐

  1. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)

    Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...

  2. JS基础-Java Class类以及获取Class实例的三种方式

    JS基础-Java Class类以及获取Class实例的三种方式 由于JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名.包名.父类.实现的接口. ...

  3. java反射获取实体类_java 反射获取类对象的三种方式

    Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...

  4. java 多线程编程(包括创建线程的三种方式、线程的生命周期、线程的调度策略、线程同步、线程通信、线程池、死锁等)

    1 多线程的基础知识 1.1 单核CPU和多核CPU 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务.微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那 ...

  5. java 异步事件_处理异步事件的三种方式

    在网站开发中,异步事件是项目必然需要处理的一个环节,也因为前端框架的兴起,通过框架实现的 SPA 已经是快速建构网站的标配了,一部获取数据也就成了不可或缺的一环:本文来就讲一讲 JavaScript ...

  6. java base64 编码 类_java base64编码和解码的三种方式 | 学步园

    方式一:使用commons-codec.jar /** * @param bytes * @return */ public static byte[] decode(final byte[] byt ...

  7. java如何显示当天世界_Java学习笔记——显示当前日期的三种方式

    一.Date类:这是一种过时的表达方式 import java.util.Date;Date date = new Date(); System.out.println((1900+date.getY ...

  8. java计算时间差(耗时计算)的三种方式

    目录 一.System.currentTimeMillis() 二.StopWatch 1.spring 用法 ①.简单用法 ②.说明 ③.方法 ④.详细用法 2.apache 用法 ①.简单用法 ② ...

  9. Java 设计模式之责任链模式实现的三种方式

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 The worst way to miss someone is to be ...

最新文章

  1. Spark在集群中的安装
  2. 看看HashSet源码
  3. 【Golang 基础】Go 语言的程序结构
  4. 2018.8.14-C#复习笔记总
  5. python自动化接口测试中的cookies怎么实现_python接口自动化测试--requests cookies处理...
  6. 字符变量赋值规则_Java的常量、变量、数据类型(基础篇二)
  7. docker 磁盘问题:device or resource busy
  8. 第一章:pip 的安装和使用
  9. uniapp读取和写入文件
  10. Javascript中Math常用操作,向上取整、向下取整、四舍五入
  11. TGA文件格式分析和图片举例
  12. web服务器、数据库服务器
  13. Power Query M函数_我常用的玩法
  14. java遍历json数据_Java 如何遍历JsonObject对象
  15. Ubuntu server 18.04 服务器配置
  16. linux下混杂模式
  17. 22/02/17学习笔记
  18. 【每天学点管理】—如何提高团队的执行力
  19. HW算法题:查找众数及中位数
  20. 发布自己的Python包(Pypi)

热门文章

  1. 用友BIP助力大型企业构建“敏态+稳态”的数智企业摩天
  2. 使用MediaCodeC将图片集编码为视频
  3. Java集合中HashMap日常问题及解决办法
  4. MariaDB Window Functions窗口函数分组取TOP N记录
  5. 用CORS 解决vue.js django跨域调用
  6. rhel7 http实例2
  7. Apache CXF实现WebService发布和调用
  8. oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
  9. C# 调用SQL的存储过程的接口及实现
  10. 基于corosync和NFS服务器实现LNMP的高可用