在web.xml中配置SpringMVC
代码如下
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
可以看到,在web.xml中配置SpringMVC时,实际上是配置了一个servlet.
那么,在<servlet-mapping>下的<url-pattern>的匹配规则是怎样的呢?
url-pattern的匹配规则
<url-pattern>中的/实际上是从完整路径中项目名后的内容开始匹配
比如http://localhost:8081/projectName/homepage/test.do ,
/*匹配的就是 /homepage/test.do 这一段
有三种,分别是:
1.精确匹配
<url-pattern>/test/userList.action</url-pattern>
精确匹配就是完全精准地匹配到URL地址
2.路径匹配
<url-pattern>/</url-pattern>
<!--或者-->
<url-pattern>/*</url-pattern>
<!--或者-->
<url-pattern>/base/*</url-pattern>
其中,/和/*的区别是
/ ==> 会匹配到路径型的URL,例如 /abc/test这种类型的路径
/* ==> 则不仅匹配路径型URL,也匹配后缀型URL,例如/abc/test.jsp
因此如果<url-pattren>仅设置为/*的话,那么在请求返回时(请求返回的一般是/WEB-INF/view/XXX.jsp),也会被前端控制器(DispatcherServlet)拦截,导致找不到对应的handler,出现404错误!
如果一定要使用/*的话,可以用/XXX/*这种方法,来避免拦截返回的请求
3.扩展名匹配
<url-pattern>*.do</url-pattern>
<url-pattern>*.action</url-pattern>
<url-pattern>*</url-pattern>//这是错误用法!
<!-- 等等 -->
会拦截以*.do和*.action结尾的请求.
容器匹配顺序
容器会首先进行精确匹配,找不到则进行路径匹配,还找不到就进行扩展名匹配.一旦匹配成功,就不进行下边的匹配.
参考:https://blog.csdn.net/yzh18373476791/article/details/82719848
在web.xml中配置SpringMVC的更多相关文章
- 在web.xml中配置error-page
在web.xml中配置error-page 在web.xml中有两种配置error-page的方法,一是通过错误码来配置,而是通过异常的类型来配置,分别举例如下: 一. 通过错误码来配置error ...
- web.xml中配置log4j
1.将 commons-logging.jar和 log4j.jar加入你的项目中:2.在src/下创建log4j.properties|log4j.xml文件:3.在web.xml中配置log4j的 ...
- web.xml中配置Spring中applicationContext.xml的方式
2011-11-08 16:29 web.xml中配置Spring中applicationContext.xml的方式 使用web.xml方式加载Spring时,获取Spring applicatio ...
- web.xml 中配置了error-page但不起作用问题
问题: 在web.xml 中配置了 error-page,但是好像不起作用,就是跳转不到指定的页面. 配置信息如下: <!-- 400错误 --> <error-page> & ...
- struts2 在 Action 或 Interceptor 中获取 web.xml 中配置的 <context-param> 参数 (这是我的第一篇博文,哈哈。)
最近为了改一个问题,想加一个控制开关,就在web.xml 中配置了一个 <context-param> 参数,并在 Action 或 Interceptor 中获取参数值. 1.在 web ...
- 在web.xml中配置监听器来控制ioc容器生命周期
5.整合关键-在web.xml中配置监听器来控制ioc容器生命周期 原因: 1.配置的组件太多,需保障单实例 2.项目停止后,ioc容器也需要关掉,降低对内存资源的占用. 项目启动创建容器,项目停止销 ...
- 在哪个web.xml中配置welcome页面
是在tomcat的web.xml中配置,而不是在你的%web-project-root%/WEB-INF/web.xml中! 示例 <welcome-file-list> <welc ...
- web.xml中配置启动时加载的servlet,load-on-starup
web.xml中配置启动时加载的servlet,load-on-starup 使用servlet来初始化配置文件数据: 在servlet的配置当中,<load-on-startup>1&l ...
- 使用框架时,在web.xml中配置servlet时,拦截请求/和/*的区别。
关于servlet的拦截设置,之前看了好多,说的都不太清除,明白. 最近明白了一些,总的来说就是保证拦截所有用户请求的同时,放行静态资源. 现整理如下: 一.我们都知道在基于Spring的Applic ...
随机推荐
- day36 06-Hibernate抓取策略:set集合上的抓取策略
你在做查询的时候它可以帮你关联出它的一些相应的关联对象.那么它关联这个对象的时候是在什么时候发送的这些语句以及它是如何把这些数据拿出来的? 知道延迟检索是怎么回事了,而且它也能够产生这个代理对象.当你 ...
- Nginx 编译设置模块执行顺序
Nginx编译时,配置"--add-module=xxx"可以加入模块,当我们需要按照指定顺序来设置过滤模块执行顺序时,先配置的"--add-module=xxx&quo ...
- 【模板】Vector存图 + SPFA
最近愉快地决定要由边集数组转向Vector存图,顺便开始图论集训 老惯例,以题写模板 P1339 [USACO09OCT]热浪Heat Wave 题目描述 The good folks in Texa ...
- selenium(1):python3.6.4+selenium3.0+chrome环境配置
本文为配置过程: python 1.python3.6.4下载安装见python安装说明.(本博客) 2.安装python的集成编译器PyCharm. PyCharm 是由 JetBrains 打造 ...
- temp for @青
4层方法 IBaseController BaseControllerImpl IBaseService BaseServiceImpl IBaseComponent IBaseCompone ...
- Spring Boot → 01:概要
背景 大约20年前,程序员们使用“企业级Java Bean”(EJB)开发企业应用,需要配置复杂的XML. 在二十世纪初期,新兴Java技术——Spring,横空出世.使用极简XML和POJO(普通J ...
- docker.[6] 数据卷
docker.[6] 数据卷 操作指令: # docker run -v /data1:/data2 -i -t centos /bin/bash 参数说明: data1 : 这里指的是宿主机的目录( ...
- 关于父组件通过v-on接收子组件多个参数的一点研究
写组件的时候遇到一个需求,我需要在子组件向父组件传递信息 this.$emit('myEvent', 信息1, 信息2) 在父组件使用v-on来接收 <my-component @myEvent ...
- 【花般绽放】balibali
先放项目地址:https://github.com/1067011734/balibali 感谢无私的程序员们分享 我们边看效果边看代码 项目运行出来的效果 先看Home页面 轮播 //src\pag ...
- 删除重复节点 Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...