一、url-pattern的三种写法

1、精确匹配。以”/”开头,加上servlet名称

/ad

2、路径匹配。以”/”开头,加上通配符”*”

/*

3、扩展名匹配。以通配符”*”开头,加上扩展名

*.action

二、servlet匹配规则

1、先精确匹配,再路径匹配
例如:

servlet-mapping1:<url-pattern>/ad</url-pattern>
servlet-mapping2:<url-pattern>/*</url-pattern>

当一个请求http://localhost:8080/ad来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配。

2、路径匹配的时候,先最长路径匹配,再最短路径匹配

servlet-mapping1:<url-pattern>/ad/uplaod.jsp</url-pattern>
servlet-mapping2:<url-pattern>/ad/*</url-pattern>

当一个请求http://localhost:8080/ad/upload.jsp来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配

3、扩展名匹配,是单独于精确匹配和匹配的一类扩展名是.action,所以http://localhost:8080/ad.action会被servlet-mapping:<url-pattern>*.action</url-pattern>匹配到。
以上都找不到servlet,就用默认的servlet,配置为<url-pattern>/</url-pattern>


**以上是servlet的匹配规则,总结servlet只能匹配一次成功,匹配就结束了。
下面说的是filter匹配,filter的匹配规则是只要能有匹配上的,有几个就执行几个filter。**

<filter><filter-name>encodeFilter</filter-name><filter-class>com.skylark.common.util.EncodeFilter</filter-class>
</filter>
<filter-mapping><filter-name>encodeFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping><filter><filter-name>initSessionFilter</filter-name><filter-class>com.skylark.service.servlet.InitSessionFilter</filter-class>
</filter><filter-mapping><filter-name>initSessionFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

任何请求过来的时候,都会先 encodeFilter 过滤,再 initSessionFilter 过滤。
总之,只要能匹配上的filter,都要去执行filter

三、Spring MVC的url-pattern /和/*的区别

    <servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springMVC-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/*</url-pattern></servlet-mapping>

其中/和/*的区别:
< url-pattern > / </ url-pattern > 不会匹配到.jsp,即:.jsp不会进入spring的 DispatcherServlet类 。
< url-pattern > /* </ url-pattern >会匹配*.jsp,会出现返回jsp视图时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。

总之,关于web.xml的url映射的小知识:
<url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,.jsp,.js和*.html等)

url-pattern的匹配规则相关推荐

  1. 理论---url pattern 匹配规则

    开始: 在web应用部署描述符中,用于映射的语法规定如下: ①以"/"字符开头,并以"/*"结尾的字符串用于路径映射 ②以"*"开头的字符串 ...

  2. 前端控制器html,DispatcherServlet(前端控制器)访问顺序和url匹配规则

    前端控制器访问流程图: dispatcher代码导入: dispatcher org.springframework.web.servlet.DispatcherServlet 1 login.jsp ...

  3. Django中url匹配规则的补充

    Django中url匹配规则是在urls.py文件中配置的. 1.关于正则匹配优先级 在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条. 在url匹配列表中,如果第一条为正则模 ...

  4. Shiro集成Web时的url匹配规则

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 实现 在上面实现W ...

  5. JavaWeb(十)——jetty服务器、创建jsp项目、servlet生命周期及url的匹配规则

    文章目录 1. jetty服务器的下载与安装 1.1 jetty简介 1.2 jetty的下载与安装 2. idea创建jsp项目 3. idea给jsp项目导入jar包 4. 编写第一个servle ...

  6. Nginx篇之路由匹配规则以及配置url转发

    一.前言 一般我们经常在访问网站时,通常会遇到输入某个页面的网址时,出现路由的转发,重定向等.可能访问的是一个网址,出来的时候就显示的是另外的地址. 这种情况下,通常属于nginx的页面跳转. 二.N ...

  7. 详解IIS中URL重写工具的规则条件(Rule conditions)

    本文结合官方文档和相关示例,详细记录了在IIS中URL重写工具下的规则条件(Rule conditions)的相关说明.规则条件允许我们通过额外的逻辑规则来过滤和匹配规则模式( rule patter ...

  8. location 匹配规则 (NGINX)

    转:https://moonbingbing.gitbooks.io/openresty-best-practices/ngx/nginx_local_pcre.html location 匹配规则 ...

  9. nginx匹配规则说明以及匹配的优先级

    location 匹配规则 语法规则 location [=|~|~*|^~] /uri/ { - } 模式 含义 location = /uri = 表示精确匹配,只有完全匹配上才能生效 locat ...

  10. tomcat首页welcome-file-list设置与url-pattern匹配规则

    一.welcome-file-list 1. <welcome-file-list>标签下可以设置多个首页<welcome-file>,容器启动后会在根目录下依次查找匹配的物理 ...

最新文章

  1. 基础篇9-python基本数据结构-列表
  2. 【c语言】蓝桥杯算法训练 整除问题
  3. 媒体查询 响应式设计
  4. 客户端码农学习ML —— Numpy基本用法
  5. 为PHP设置服务器(Apache/Nginx)环境变量
  6. Android]Android字体高度的研究
  7. Android 系统(56)---深入浅析Android坐标系统
  8. 英语笔记-some words about description of girl
  9. 【博士后招聘】清华大学计算机系自然语言处理与社会人文计算实验室面向海内外招聘博士后...
  10. 实习成长之路:MySQL七:事务到底是隔离的还是不隔离的?
  11. ld.so.conf.d配置文件
  12. js 把含有转义符的字符串转成json格式
  13. erp生产管理系统对电子工厂发挥的作用
  14. 什么是TypeScript
  15. 网络营销教程SEO 第四章.搜索引擎优化基础(第二节)
  16. batchnorm原理及代码详解
  17. EfficientNet B0 训练 Standford 汽车图片分类(对比ResNet34)
  18. linux查显卡型号_Windows/Linux下怎么查看笔记本显卡型号
  19. 高翔视觉SLAM十四讲课本代码运行
  20. 《微信小程序——发送模板消息》详细步骤

热门文章

  1. 请用python编写一个斗地主小游戏,并给出完整代码
  2. python与unity3d语言_Unity3D研究院之多语言用中文做KEY(七十五)
  3. matlab text 旋转,psychtoolbox drawtext导致许多未命中的翻转(matlab)
  4. 16进制编辑器MadEdit
  5. python网页爬虫漫画案例_Python爬虫-用Scrapy框架实现漫画的爬取
  6. 前Google员工夫妇开发情侣应用Avocado 让社交更私密
  7. the foundry mari4.6中文版
  8. 计算机软件技术基础 王海燕,北京大学机械考研经验-北大工学院考研辅导班
  9. 【调剂】中国人民大学信息学院2021年专业硕士研究生(电子信息专业 非全日制) 接收调剂的通知...
  10. 幽默笑话 | 程序员出其不意的搞笑,简直不要太扎心