SpringMVC_放行静态资源
静态资源到处都是坑!明白原理才能绕过这些坑!
web.xml配置servlet中四种路径的区别
在web.xml文件的配置中,四种路径编写方式优先级如下图:
其中b和d都能接收所有请求,仅仅是在优先级上有区别。
d是优先级最低的,所以如果一个路径有”人”要就不会执行到d,tomcat服务器(无论什么服务器)有一个默认的请求处理方案:在tomcat服务器的配置文件: tomcat8\conf\web.xml中有一个默认的web配置文件,其中配置了jsp和default。
都配置了<load-on-startup>,所以这两个默认请求处理会在tomcat启动时进行加载。
从图中可以看出,jsp配置的url-pattern为*.jsp和*.jspx,优先级高于/的优先级,所以当请求jsp页面时,会由类JspServlet进行处理。
default配置为在请求路径匹配完其他所有Servlet还是没有匹配到的情况下,请求会被发到default,由DefaultServlet进行处理,一般请求的静态资源,无效路径等等都会通过DefaultServlet进行处理。
而在配置springmvc框架时,一般在web.xml中将DispatcherServlet映射路径配置成/
这样配置会覆盖掉tomcat配置的默认的default,而,DispatcherServlet没有处理静态资源的能力,所以会报错或者需要在springmvc中进行关于静态资源的配置。
什么是静态资源?
css、js、图片、html等都是静态资源
放行静态资源
不使用springmvc框架分析
不使用springmvc框架,这些静态资源请求都会由tomcat的默认的default进行处理。
使用了springmvc框架分析
如果配置的DispatcherServlet的映射路径不为/时,对静态资源的请求最终会由tomcat的默认配置来处理,所以不影响静态资源的正常访问。
如果配置的DispatcherServlet的映射路径为/时,会覆盖掉tomcat的默认的default配置,所以需要在springmvc文件中进行配置,对静态资源进行放行。
放行静态资源的三种方式:
方式一:最简单(推荐)
spring mvc配置文件中加入以下内容:
在springmvc文件中配置上<mvc:default-servlet-handler/>,发出静态资源请求后,请求传到DispatcherServlet,DispatcherServlet调用RequestMappingHandlerMapping进行映射匹配,匹配不成功,DispatcherServlet最终会将请求转交给tomcat默认default进行处理。
方式二:更加灵活
在springmvc配置文件中配置
<mvc:resources mapping=”/css/**” location=”/css/”/>
其中,*代表一级目录,**代表多级目录。
方式三:修改DispatcherServlet的映射规则
*.do的优先级高于/,不影响tomcat默认配置的default,所以DispatcherServlet处理不了的会交给tomcat默认default进行处理。
明确:在jsp或html页面中如果有<link> <script><img>,浏览器都会自动发送请求。
其他请求不到静态资源的可能原因
一.jsp或者html界面引用js文件错误
这是一个隐藏很深的坑,编写script时没有写完整,使用360浏览器(谷歌内核)测试还不报错!!
正确编写方式:
二.在WEB-INF目录下的静态资源只有服务器能访问,客户端无法直接访问
众所周知,WEB-INF是被保护的目录,不允许客户端进行访问,这里就涉及两个概念:
请求转发 和 重定向
请求转发会间接的由服务器去访问WEB-INF,所以可以访问,
重定向请求静态资源属于客户端进行请求,所以不能访问静态资源.
SpringMVC_放行静态资源的更多相关文章
- REST风格下如何放行静态资源
在配置DispatcherServlet(前端控制器)时,如果把拦截路径配置成rest风格(即斜杠/),则会将静态资源也一并拦截(比如.css .js ,jpg)为了避免这个情况,可以把拦截路径设置成 ...
- javaweb项目静态资源被拦截的解决方法
<servlet-mapping> <servlet-name>springMvc</servlet-name> <url-pattern>/*< ...
- Spring Boot 静态资源能加载css 不能加载js
Spring Boot 配置拦截器的时候默认 是放行 静态资源 , 也就是说不需要进行配置 registry.addResourceHandler("/**") .addResou ...
- SpringMVC拦截静态资源的解决方法
本文中的各软件版本简要信息: IDE:Myeclise17 JDK:1.8.0_111 spring:5.1.8 springMVC:5.1.8 mybatis:3.2.2 Tomcat:9.0 在使 ...
- SprignBoot是如何访问工程目录下的静态资源?
目录 1.牛刀小试 1.1 图片静态资源的访问 1.2 为静态资源添加访问前缀 1.3 WelCome Page 的奇妙跳转 2.那么,SpringBoot是如何做到的呢? 1. ...
- 1. 处理静态资源 2. controller如何接受请求得参数 3. 如何把controller得数据保存到view. 4. 在controller如何完成重定向到指定路径 5. controller返回json数据
1. 1. 处理静态资源2. controller如何接受请求得参数3. 如何把controller得数据保存到view.4. 在controller如何完成重定向到指定路径5. controller ...
- springmvc中关于静态资源的放行
参考:http://blog.csdn.net/fujiakai/article/details/52504525 方法1. 修改web.xml文件,增加对静态资源的url映射,要加在org.spri ...
- SpringBoot之静态资源放行
为了提高开发效率,编写对应的代码生成器.代码生成器主要有两个方面,一个是在线Web,另外一个是运行某个类. 使用的技术是SpringBoot+MyBatis-Plus+MySQL+JDK8. 在编写在 ...
- 如何在自定义Filter中优雅的实现静态资源放行
在javaweb开发中,过滤器Filter比较常用于类似登录的拦截等场景.但是,当过滤器的配置不当时就会把所有的请求都拦截,静态资源也会被拦截掉,导致静态页面加载不出来. 一般的解决方 ...
随机推荐
- hdu 1754 线段树 水题 单点更新 区间查询
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- [算法]概率与期望DP
前言 前两节主要针对题目分析,没时间的珂以跳过. 初步 首先举一道简单.经典的好题: [Lightoj1038]Race to 1 Again 懒得单独写,安利一下DennyQi同学的博客:https ...
- 【转】Django restful framework中自动生成API文档
转自 https://www.cnblogs.com/sui776265233/p/11350434.html 自动生成api文档(不管是函数视图还是类视图都能显示) 1.安装rest_framewo ...
- THU-CCF WC2019两开花记
今年年初,清华大学举办的THUWC2019即将正式开启,我将继续扮演蒟蒻OIER,努力创造一个菜鸡的形象,THU-CCF WC两爆炸,笑掉各位大牙,大家多多关注. Day0 广州好热啊╰(‵□′)╯! ...
- HBase 集群监控系统构建
HBase 集群监控系统构建 标签(空格分隔): Hbase 一, 集群为什么需要监控系统 总的来说是为了保证系统的稳定性,可靠性,可运维性.具体来说我认为有以下几点: 掌控集群的核心性能指标,了解集 ...
- 测试常用linux命令之系统监测
top命令: cpu使用情况,内存等 du -hs: 查看目录大小 df -h :查看磁盘使用情况 free: 查看电脑整体内存使用情况 uptime:系统时间,用户数目等 vmstat:内存使用,进 ...
- 利用Lucene.net搜索引擎进行多条件搜索的做法
利用Lucene.net搜索引擎进行多条件搜索的做法 2018年01月09日 ⁄ 搜索技术 ⁄ 共 613字 ⁄ 字号 小 中 大 ⁄ 评论关闭 利用Lucene.net搜索引擎进行多条件搜索的做法 ...
- collection:指定要遍历的集合
//查询员工id'在给定集合中(1,6)的 public List<Employee> getEmpsByConditionForeach(@Param("ids")L ...
- 如何解决excel工作簿保护密码
自己的excel文档设置了“保护工作簿”密码,但是密码又忘记了,怎么办? 如果你会编写代码,那么这个问题非常好解决.Excel内置功能不能解决的事儿,自己编写一段代码或许就可以搞定了. 第一步,大家已 ...
- 解决VirtualBox虚拟机装XP无声问题的简便办法
原文地址;http://www.2cto.com/os/201206/134887.html 解决VirtualBox虚拟机装XP无声问题的简便办法 解决VirtualBox虚拟机装XP无声问题的简便 ...