转自:http://blog.csdn.net/yan_dk/article/details/7261059
在web应用中,需要对请求url路径进行一些判断匹配,完成一定的功能,如进行访问权限的判断,acegi就采用了路径匹配来判断请求url路径是否为合法,但是没有将api抽取出来,用起来还是依赖性太强,不好做轻量级的扩展。spring提供了工具类AntPathMatcher实现了判断路径匹配,非常简单好用,属轻量级的组件,下面具体谈一下。
先贴一段代码来快速了解一下它的用法(可以看一下代码注释,比较详细),如下:
package test.web;
import org.springframework.util.AntPathMatcher; import
org.springframework.util.PathMatcher;
import
junit.framework.TestCase;
/** * 路径匹配 * @author yandk * @date Feb 15, 2012 */ public
class TestAntPathMatcher extends TestCase{ public void
testMatch(){ PathMatcher matcher = new
AntPathMatcher(); // 完全路径url方式路径匹配 // String
requestPath="http://localhost:8080/pub/login.jsp";//请求路径 // String
patternPath="**/login.jsp";//路径匹配模式
// 不完整路径uri方式路径匹配 // String
requestPath="/app/pub/login.do";//请求路径 // String
patternPath="/**/login.do";//路径匹配模式 // 模糊路径方式匹配 // String
requestPath="/app/pub/login.do";//请求路径 // String
patternPath="/**/*.do";//路径匹配模式 // 包含模糊单字符路径匹配 String
requestPath="/app/pub/login.do";//请求路径 String
patternPath="/**/lo?in.do";//路径匹配模式
boolean result
=matcher.match(patternPath,
requestPath); assertTrue(result); }
|
注:以上代码取消注释的片段,都能通过测试,使用时可根据具体情况调整即可。
总结如下:
ANT方式的通配符有三种:
?(匹配任何单字符),*(匹配0或者任意数量的字符),**(匹配0或者更多的目录)
url路径匹配规则:
URL路径 |
说明 |
/app/*.x |
匹配(Matches)所有在app路径下的.x文件 |
/app/p?ttern |
匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern |
/**/example |
匹配(Matches) /app/example, /app/foo/example, 和 /example |
/app/**/dir/file. |
匹配(Matches) /app/dir/file.jsp,
/app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java |
/**/*.jsp |
匹配(Matches)任何的.jsp 文件 |
最长匹配原则(has more
characters)
说明,URL请求/app/dir/file.jsp,现在存在两个路径匹配模式/**/*.jsp和/app/dir/*.jsp,那么会根据模式/app/dir/*.jsp来匹配
分享到:
相关推荐
本篇文章主要介绍了Spring Boot 定制URL匹配规则的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
NULL 博文链接:https://wulinhaoxia5.iteye.com/blog/1567999
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
pring_3.0_应用springmvc_构造RESTful_URL_详细讲解
主要介绍了spring mvc路径匹配原则详解,小编觉得还是挺不错的,这里分享给大家,需要的朋友可以参考下,下面就和小编一起来看看吧
Spring MVC 配置 urlrewrite 实例
基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 ...
基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的...
(完整版)基于SpringCloud微服务系统设计方案.pdf(完整版)基于SpringCloud微服务系统设计方案.pdf(完整版)基于SpringCloud微服务系统设计方案.pdf(完整版)基于SpringCloud微服务系统设计方案.pdf(完整版)基于Spring...
(完整版)基于SpringCloud微服务系统设计方案.docx(完整版)基于SpringCloud微服务系统设计方案.docx(完整版)基于SpringCloud微服务系统设计方案.docx(完整版)基于SpringCloud微服务系统设计方案.docx(完整版)基于...
基于SpringCloud的在线学习测评系统源码 基于SpringCloud的在线学习测评系统源码 基于SpringCloud的在线学习测评系统源码 基于SpringCloud的在线学习测评系统源码 基于SpringCloud的在线学习测评系统源码 ...
基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的...
基于 Spring Cloud Hoxton 、Spring Boot 2.2、 OAuth2 的RBAC权限管理系统 基于数据驱动视图的理念封装 Ant Design Vue,即使没有 vue 的使用经验也能快速上手 提供 lambda 、stream api 、webflux 的生产实践 ...
spring的ioc容器详细讲解,理解springioc容器
在线教育平台服务端基于Spring Boot构建,采用Spring Cloud微服务框架。 持久层:MySQL、MongoDB、Redis、ElasticSearch 数据访问层:使用Spring Data JPA 、Mybatis、Spring Data Mongodb等 业务层:Spring IOC、...
基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资...
Spring入门到精通详细讲解,配以生动详细的实例,保证你在最短的时间学以致用
主要介绍了如何使用Spring工具类动态匹配url,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
纯文档的spring 知识点讲解,快速学会spring 原理讲解,配置讲解,具体实现讲解,出错排除讲解。