`
yixiandave
  • 浏览: 140812 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用Spring自带工具对uri进行通配符匹配

阅读更多
自己做项目的时候碰到一个要对请求的uri进行过滤的需求,而过滤配置则是在配置文件里以通配符的方式存入的

在网上搜索很久,大部分方法研究都是调用了Spring-security的包。通过阅读Spring源码发现在Spring-core包里已经有相关方法的实现了

对应的类就是org.springframework.util.AntPathMatcher

调用方法很简单,new一个对象后直接调用match方法即可匹配
给出案例:
@Test
    public void testMatch(){
        AntPathMatcher matcher = new AntPathMatcher();
        String pattern = "/abc/**/a.jsp";
        System.out.println("pattern:"+pattern);
        System.out.println("/abc/aa/bb/a.jsp:"+matcher.match(pattern,"/abc/aa/bb/a.jsp"));
        System.out.println("/aBc/aa/bb/a.jsp:"+matcher.match(pattern,"/aBc/aa/bb/a.jsp"));
        System.out.println("/abc/a.jsp:"+matcher.match(pattern,"/abc/a.jsp"));
    }

测试结果:
pattern:/abc/**/a.jsp
/abc/aa/bb/a.jsp:true
/aBc/aa/bb/a.jsp:false
/abc/a.jsp:true

可以看出这个类的匹配大小写敏感,可用通配符为:?,*,**
?表示单个字符
*表示一层路径内的任意字符串,不可跨层级
**表示任意层路径

如果有人对具体实现算法感兴趣可以自行阅读AntPathMatcher类的源码。
分享到:
评论

相关推荐

    SpringBoot之自带工具类常用示例

    在Spring Boot框架中,开发人员可以利用其内置的工具类来简化常见的编程任务,提高开发效率。这些工具类涵盖了许多方面,包括日期时间处理、文件操作、字符串操作等。本篇将详细介绍Spring Boot中的一些常用工具类...

    Android Uri

    在使用 UriMatcher 时,我们可以使用通配符 `#` 和任意字符 `*` 。 2. ContentUris ContentUris 类提供了一些实用的方法来操作 Uri,例如解析 Uri、从 Uri 中获取数据等。 在使用 UriMatcher 和 ContentUris 时,...

    android_springrestful工具包

    综上所述,"android_springrestful工具包"旨在帮助开发者在Android应用中高效、稳定地使用Spring框架进行RESTful服务的开发和调用。通过熟练掌握这些知识点,开发者可以构建出强大且灵活的Android应用。

    Spring Security如何使用URL地址进行权限控制

    Spring Security如何使用URL地址进行权限控制 Spring Security是一个功能强大且广泛应用的Java安全框架,它提供了许多功能,包括身份验证、授权、加密等。其中,权限控制是Spring Security的一个重要组件,它允许...

    Spring文件资源操作和Web相关工具类盘点

    此外,Resource 接口还提供了 URL 和 URI 的获取方法,方便进行网络资源的处理。例如,如果您需要获取文件的 URL 地址,可以调用 `getURL()` 方法。 Spring 提供的 Resource 实现类不仅仅限于 FileSystemResource ...

    consulate-validate-redirect-uri:使用通配符支持对领事馆的简单、安全的重定向 uri 检查

    领事馆验证重定向uri 使用通配符支持对简单、安全的重定向 uri 检查用法只需将consulate-validate-redirect-uri为您的服务器的插件: var consulate = require ( 'consulate' ) , uriCheck = require ( 'consulate-...

    Uri一个URI处理库

    - **安全操作**:Uri库遵循RFC3986标准,对URI进行编码和解码,防止常见的注入攻击。 4. **使用场景**: - **路由处理**:在Web应用中,Uri库可以帮助处理和验证请求的URI,确保路由到正确的控制器和动作。 - **...

    最新Spring Cloud Gateway 官方参考指南-中文版-3.x

    总之,Spring Cloud Gateway是构建现代云原生应用的重要工具,它提供了高效、可扩展的API管理和路由策略,同时利用了Spring生态的优势,如Spring Boot的自动化配置和Spring WebFlux的反应式编程模型。在理解和使用...

    Restful WebService + Spring

    1. **资源(Resources)**:REST服务中的核心是资源,它们通过URI(Uniform Resource Identifier)进行唯一标识。 2. **统一接口(Uniform Interface)**:使用HTTP方法(GET、POST、PUT、DELETE等)来操作资源,...

    查看android.provider包中的uri内容

    描述中提到的“查看android.provider包中的uri内容”,可能是指开发者使用某种工具或者方法来查看和分析`android.provider`包中各个类的`URI`定义和使用情况。这有助于理解如何与系统内容提供者进行交互,获取或修改...

    nginx的server和location匹配规则

    3. 如果前缀通配符匹配失败,Nginx 会使用正则表达式来进行匹配。 Server 块和 Location 块的匹配规则是 Nginx 配置文件中非常重要的一部分,对于虚拟主机和 URL 匹配特定位置的设置起着关键作用。

    uri转字符串路径工具

    uri转字符串路径,解决4.0以上的兼容问题,

    androdi ContentProvider和Uri详解

    使用ContentProvider和Uri进行数据操作时,我们通常会配合ContentResolver。ContentResolver是Android提供的一个接口,用于与ContentProvider进行交互。应用程序通过ContentResolver调用ContentProvider的API,实现...

    博客《Uri详解之——Uri结构与代码提取》对应源码

    例如,使用`Uri.withAppendedPath()`添加路径,使用`Uri.encode()`和`Uri.decode()`进行URL编码解码。 7. **文件Uri与安全问题**: 文件Uri通常以`file:`开头,直接访问可能导致安全问题,例如文件权限泄露。因此...

    uri-template-router:将 URI 与 URI 模板集合中的模板匹配

    将 URI 与一组模板中的匹配。 指定要测试的模板列表,使用{braces}指定变量 无论插入顺序如何,都返回最佳匹配 扩展到任意数量的模板/模式进行测试 支持使用爆炸修饰符的重复表达式 路由存储关联的“matchValue”...

    Android中Intent的Uri使用

    使用`ACTION_VIEW`结合特定格式的地图`Uri`,可以进行路径规划: ```java Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); Intent it = new ...

    SpringCloudGateway2.1使用手册中文版.rar

    在 Spring Cloud Gateway 2.1 版本中,它引入了更多的特性,提升了性能,并对之前的版本进行了优化。 首先,让我们深入理解 Spring Cloud Gateway 的核心概念: 1. **路由(Routes)**:路由定义了请求如何被匹配...

    使用Spring构建Restful的Web服务.pdf

    ### 使用Spring构建RESTful的Web服务 #### REST原则与特性 **REST(Representational State Transfer)**是一种软件架构风格,用于定义客户端与服务器之间交互的标准方法。RESTful Web服务遵循以下核心原则: - *...

    MongoDB初探(二)----使用spring-data配置mongodb

    至此,你已经成功地配置了Spring Data MongoDB,并可以开始使用Repository进行MongoDB的操作。通过这种方式,开发人员可以专注于业务逻辑,而无需关心底层数据库操作的细节,大大提高了开发效率。 标签“源码”和...

    spring3.0+spring security3.1.4 api chm 中文版

    总的来说,这份压缩包包含的两个CHM文件是开发者在使用Spring 3.0和Spring Security 3.1.4时不可或缺的参考资料。通过深入学习这两份文档,开发者能够更好地掌握这两个强大的工具,从而构建出更健壮、更安全的企业级...

Global site tag (gtag.js) - Google Analytics