08【SpringMVC的放行规则】
创始人
2024-03-07 06:23:22

文章目录

  • 二、SpringMVC的放行规则
    • 2.1 SpringMVC提供的拦截规则
    • 2.2 缺省Servlet放行
    • 2.3 resources放行
    • 2.4 Handler放行
    • 2.5 放行规则小结


二、SpringMVC的放行规则

2.1 SpringMVC提供的拦截规则

  • *.form:代表以*.form结尾的后缀请求都会进入springmvc管
  • /:代表除了JSP以外拦截所有,html、css、js等静态web资源也会拦截
  • /*:拦截所有请求

2.2 缺省Servlet放行

Tomcat提供的默认servlet(DefaultServlet),处理静态资源的(html/css/js),此Servlet在tomcat/conf/web.xml中有配置

在这里插入图片描述

在这里插入图片描述

配置DefaultServlet需要引入依赖:

org.apache.tomcattomcat-catalina8.5.41provided

回顾Maven依赖范围:

  • compile:编译时存在,测试时存在,运行时存在,会打入war包;(普通jar包)
  • provided:编译时存在,测试时存在,运行时不存在,不会打入war包;(servlet-api)
  • runtime:编译时不存在,测试时存在,运行时存在,会打入war包(mysql驱动)
  • Test:编译时不存在,测试时存在,运行时不存在,不会打入war包(Junit)
  • system:编译时存在,测试时存在,运行时存在,不会打入war包(仅限于本地环境)

在web.xml中配置:

springmvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:dispatcher-servlet.xml

springmvc/

defaultorg.apache.catalina.servlets.DefaultServlet

default*.html

default*.png

缺省servlet放行原理是:如果是配置的后缀请求直接进入缺省servlet,而不是进入SpringMVC进行处理(不会经过SpringVMC)

Tips:配置缺省servlet放行时,SpringMVC的拦截规则不能为/*,因为缺省Servlet不能放行JSP请求,如果SpringMVC拦截规则为/*,然后缺省Servlet又不能放行,那么访问JSP时,会出现404;

2.3 resources放行

web.xml:

springmvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:dispatcher-servlet.xml

springmvc/

在SpringMVC配置文件中配置:





由Spring MVC框架自己按配置的规则处理静态资源,并添加一些有用的附加值功能。


**注意:JSP页面不属于静态资源!** 如果是常见的浏览器能解析的格式,直接按照协议返回,如果不是浏览器能直接解析的会返回下载头导致下载该jsp页面!
  • 修改web.xml:

/*
  • 修改SpringMVC.xml:

访问:http://localhost:8080/jsp/demo01.jsp

在这里插入图片描述

2.4 Handler放行

在SpringMVC配置文件中添加:


SpringMVC会在Spring MVC上下文中定义一个DefaultServletHttpRequestHandler;它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。

这种方式同样只能放行静态资源,JSP不属于静态资源;我们将web.xml中的拦截规则改为如下:


/*

访问:http://localhost:8080/jsp/demo01.jsp

在这里插入图片描述

一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web应用服务器的默认Servlet名称不是"default",则需要通过default-servlet-name属性显示指定:


2.5 放行规则小结

  • 1)缺省Servlet放行:请求没有进入springmvc,而是直接进入缺省servlet进行处理放行
  • 2)resource放行:实质上请求是进入了springmvc然后由springmvc自己处理资源,达到放行效果
  • 3)default-servlet-handler放行:请求进入springmvc然后对其进行筛选,发现是个"静态"资源就交给缺省servlet去处理,但是缺省servlet只会处理静态资源,如果是jsp会特殊处理(下载、无法解析等)!

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...