java 放行文件_SpringMVC_放行静态资源

静态资源到处都是坑!明白原理才能绕过这些坑!

web.xml配置servlet中四种路径的区别

在web.xml文件的配置中,四种路径编写方式优先级如下图:

20c061067d841dfe52d7673704ca1dff.png

其中b和d都能接收所有请求,仅仅是在优先级上有区别。

d是优先级最低的,所以如果一个路径有”人”要就不会执行到d,tomcat服务器(无论什么服务器)有一个默认的请求处理方案:在tomcat服务器的配置文件: tomcat8\conf\web.xml中有一个默认的web配置文件,其中配置了jsp和default。

都配置了,所以这两个默认请求处理会在tomcat启动时进行加载。

337fdd3db034c739fdb014c9386b4321.png

a88fe457bae3ca3abe8f1b57805429a0.png

从图中可以看出,jsp配置的url-pattern为*.jsp和*.jspx,优先级高于/的优先级,所以当请求jsp页面时,会由类JspServlet进行处理。

default配置为在请求路径匹配完其他所有Servlet还是没有匹配到的情况下,请求会被发到default,由DefaultServlet进行处理,一般请求的静态资源,无效路径等等都会通过DefaultServlet进行处理。

而在配置springmvc框架时,一般在web.xml中将DispatcherServlet映射路径配置成/

32fb9e6cb818741ef066e6b96c2bd44b.png

这样配置会覆盖掉tomcat配置的默认的default,而,DispatcherServlet没有处理静态资源的能力,所以会报错或者需要在springmvc中进行关于静态资源的配置。

什么是静态资源?

css、js、图片、html等都是静态资源

放行静态资源

不使用springmvc框架分析

不使用springmvc框架,这些静态资源请求都会由tomcat的默认的default进行处理。

使用了springmvc框架分析

如果配置的DispatcherServlet的映射路径不为/时,对静态资源的请求最终会由tomcat的默认配置来处理,所以不影响静态资源的正常访问。

如果配置的DispatcherServlet的映射路径为/时,会覆盖掉tomcat的默认的default配置,所以需要在springmvc文件中进行配置,对静态资源进行放行。

放行静态资源的三种方式:

方式一:最简单(推荐)

spring mvc配置文件中加入以下内容:

9b7de5b1da201af3af480806cfbf2457.png

在springmvc文件中配置上,发出静态资源请求后,请求传到DispatcherServlet,DispatcherServlet调用RequestMappingHandlerMapping进行映射匹配,匹配不成功,DispatcherServlet最终会将请求转交给tomcat默认default进行处理。

方式二:更加灵活

81f746b2431b0825a064c6813707ffd4.png

在springmvc配置文件中配置

其中,*代表一级目录,**代表多级目录。

方式三:修改DispatcherServlet的映射规则

f2e64108a5b39960e7ac644f6c71a618.png

*.do的优先级高于/,不影响tomcat默认配置的default,所以DispatcherServlet处理不了的会交给tomcat默认default进行处理。

明确:在jsp或html页面中如果有

其他请求不到静态资源的可能原因

一.jsp或者html界面引用js文件错误

bc25628c87e7a57e9d841bcddf3e096d1d4.png

这是一个隐藏很深的坑,编写script时没有写完整,使用360浏览器(谷歌内核)测试还不报错!!

正确编写方式:

1322126-20190627221258161-1049960454.png

二.在WEB-INF目录下的静态资源只有服务器能访问,客户端无法直接访问

众所周知,WEB-INF是被保护的目录,不允许客户端进行访问,这里就涉及两个概念:

请求转发 和 重定向

1322126-20190627221307872-232048382.png

请求转发会间接的由服务器去访问WEB-INF,所以可以访问,

重定向请求静态资源属于客户端进行请求,所以不能访问静态资源.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值