url-pattern配置技巧

本文详细解析了Servlet和Filter中的URL-Pattern配置方法,并通过实例展示了如何精确匹配特定路径下的资源请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:url-pattern配置技巧 作者:坯子
  配置Filter-mapping时,配置如下:

 <filter-mapping>
  <filter-name>aFilter</filter-name>
  <url-pattern>/a/*</url-pattern>
 </filter-mapping>
希望能过滤网站a地址下的所有请求。在实际的运行中,它确实能过滤a地址下的,不会过滤b地址下的。但是对于不在子目录下的请求(假如我的站点叫demo),如:http://localhost:8080/demo/aDemo.do,这个请求地址竟然能和 <url-pattern>/a/*</url-pattern>匹配。这显然是错误的。我们仅希望能过滤http://localhost:8080/demo/a/*.do

经查询资料,修改映射为:

 <filter-mapping>
  <filter-name>aFilter</filter-name>
  <url-pattern>/a/*.*</url-pattern>
 </filter-mapping>

Ok!成功!

 

配置servlet的<url-pattern>时,容器会首先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。 如果一个请求匹配多个“目录匹配”,容器会选择最长的匹配。

① 完全匹配

  1. <!-- 必须以一个“/”开头,可以有扩展名,但不是必需的。 -->  
  2. <url-pattern>/test/list.do</url-pattern>  

② 目录匹配

  1. <!-- 必须以一个“/”开头,目录可以是虚拟或实际的,总是以一个“/*”结束 -->  
  2. <url-pattern>/test/*</url-pattern>  

③ 扩展名匹配

  1. <!-- 必须以“*”加“.”加扩展名的形式 -->  
  2. <url-pattern>*.do</url-pattern>  

如果有人还不理解,可看看此文章

 

Servlet和Filter的url匹配以及url-pattern详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值