在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 ...
随机推荐
- idea使用docker插件
idea使用docker插件 接着上一篇docker开启远程访问后,我们就可以通过idea使用docker插件把项目部署到docker了. 首先我们先在idea安装docker插件: 在setting ...
- P1561 [USACO12JAN]爬山Mountain Climbing
P1561 [USACO12JAN]爬山Mountain Climbing 题目描述 Farmer John has discovered that his cows produce higher q ...
- LintCode刷题笔记-- BackpackII
标记: 动态规划 问题描述: Given n items with size Ai, an integer m denotes the size of a backpack. How full you ...
- [LeetCode] Evaluate Reverse Polish Notation [2]
题目 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, ...
- 浅析Vue响应式原理(三)
Vue响应式原理之defineReactive defineReactive 不论如何,最终响应式数据都要通过defineReactive来实现,实际要借助ES5新增的Object.definePro ...
- 第一周<单元一聚类>
K-means 聚类算法 初始随机选择 而后不断更新 kmeans 应用 省份归类 调用kmeans方法所需要的参数 n_clusters 指定的聚类中心 init 初始聚类中心的初始化方法 默认k- ...
- less知识点总结(一)
1.unit 删除或更换单位. 参数: dimension: 带单位或不带单位的数字. unit: (可选) 目标单位,如果省略此参数,则删除单位. See convert for changing ...
- let 和const命令
ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效.换句话说,let声明了块级作用域. 输出 看下面代码: 输出: 变量i是var声明的,在 ...
- 介绍(javascript调试)
Chrome developer tool Chrome浏览器得益于其优秀的V8解释器,javascript执行速度和内存占有率表现非常优秀.对于html+css+javascript前台技术的学习或 ...
- MAC使用技巧之苹果电脑抓图截屏方法
用苹果电脑自带的截图功能的快捷键:command+shift+3 三个键按下则抓取/截取全屏 command+shift+4 然后用鼠标框选则抓取该区域的截图 command+shift+4 然后按空 ...