`
tmartin
  • 浏览: 104449 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

[转]spring基于url路径匹配用法讲解

    博客分类:
  • J2EE
阅读更多

转自: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来匹配

分享到:
评论
2 楼 tmartin 2013-01-31  
jackyrong 写道
如果有个url ,是要保护的资源url,为/abc/abc.action?d=1&b=2,
设置为/abc/abc.action*,
但居然anturlpattcher,认为/abc/abc.action?d=1&b=2不能匹配
/abc/abc.action*  ,为什么呢?

用“/abc/abc.action**”
1 楼 jackyrong 2013-01-10  
如果有个url ,是要保护的资源url,为/abc/abc.action?d=1&b=2,
设置为/abc/abc.action*,
但居然anturlpattcher,认为/abc/abc.action?d=1&b=2不能匹配
/abc/abc.action*  ,为什么呢?

相关推荐

    Spring MVC 4.2.4.RELEASE 中文文档

    整个文档内容展现了 Spring MVC 的全面功能和使用方法,对于希望深入学习和使用 Spring MVC 框架的开发者来说,这个文档是宝贵的学习资源。翻译注记部分说明了翻译过程中的问题、取舍以及解决方案,反映了翻译者对...

    spring的学习笔记

    - **AspectJ切入点语法详解**:AspectJ是Spring支持的AOP语言,用于定义切点表达式,精确匹配需要织入通知的方法。 ### 4. **资源管理** Spring提供了丰富的资源管理能力,如文件、URL、数据库连接等: - **4.1 ...

    spring使用属性文件

    本文将深入探讨如何在Spring中使用属性文件,并结合给出的博文链接进行详细讲解。 1. **属性文件介绍** 属性文件通常以`.properties`为扩展名,例如`application.properties`或`db.properties`。这些文件包含键值...

    Spring MVC 学习 之 - URL参数传递详解

    本文将深入讲解如何在Spring MVC框架中有效地处理URL参数。 首先,`@Controller`注解用于标记一个类作为Spring MVC的控制器。当应用启动时,Spring会自动扫描带有此注解的类,并根据`@RequestMapping`注解的配置...

    跟我学Spring

    《跟我学Spring》这本书主要涵盖了Spring框架的核心概念和使用方法,包括IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及AOP(Aspect Oriented Programming,面向切面编程)、...

    源码: 看透Spring MVC:源代码分析与实践

    控制器方法通常使用`@RequestMapping`来映射URL路径。 4. **@RequestMapping**:用于将HTTP请求映射到控制器方法,可以根据URL、HTTP方法等进行精确匹配。 5. **ModelAndView**:在控制器方法中返回的对象,包含了...

    shiro官方教程中文版和spring整合说明文档

    本教程结合Spring框架,将深入讲解如何在实际项目中整合Shiro,以提升应用的安全性能。 1. **Shiro的基本概念** - **认证**:验证用户身份的过程,即确定用户是谁。 - **授权**:确认用户有权访问特定资源或执行...

    Spring Mvc中传递参数方法之url/requestMapping详解

    在方法级别上,它用于精确匹配特定的URL路径。例如: ```java @RequestMapping(value = "/testing") public class QuestionSetDisplayController extends BaseController {} @RequestMapping(value = "/applicant/...

    javaspring 培训教程 TP1.docx

    - **Controller定义**:通过注解`@Controller`声明控制器类,并使用`@RequestMapping`指定处理的URL路径。 - **返回类型**:支持多种返回类型,如`String`、`ModelAndView`、`void`等。 - **示例应用**:构建一个...

    spring的注解方式

    9. `@PathVariable`:用于接收URL路径变量的值。 10. `@RequestParam`:处理请求参数,可以指定参数是否必须以及默认值。 11. `@RequestBody` 和 `@ResponseBody`:用于处理HTTP请求体和响应体,常与JSON数据交互...

    跟我学spring3(1-7)1

    本教程通过逐步讲解,帮助读者深入理解Spring的工作机制和使用方法。 **第二章 IoC(Inversion of Control)** IoC是Spring框架的核心概念之一,它改变了传统的对象创建和管理方式。在IoC中,容器负责管理对象的...

    Spring构建mvc工程详细教程.pdf

    `@RequestMapping`注解用于指定请求的URL和处理方法,`value`属性设置请求的路径,`method`属性指定请求类型。`showPage`方法中,`Model`参数用于向视图添加数据,这里添加了一个名为`message`的属性。方法返回一个...

    springboot-security-material.rar

    Spring Security通过`@Secured`或`@PreAuthorize`注解实现方法级别的权限控制,同时可以使用`antMatchers`或`mvcMatchers`来设置URL路径的访问权限。案例中可能涉及如何限制某些URL只有特定角色的用户才能访问。 4...

    spring aop 读写分离

    例如,你可以使用AOP切点表达式来匹配需要执行读操作的方法,并在这些方法执行时选择从库。 ```java @Aspect @Component public class DataSourceAspect { @Autowired private DynamicDataSource ...

    终极模拟考试.docx

    以下将详细讲解基于提供的题目所涉及的Spring知识点: 1. **Spring Security配置**:Spring Security是Spring生态中的安全模块,用于保护Web应用的安全性。在配置Spring Security拦截特定URL时,正确策略是使用`...

    Spring MVC+mybatis实现注册登录功能

    例如,我们需要定义数据源(DataSource)以连接数据库,配置MyBatis的SqlSessionFactory,以及定义Mapper接口的扫描路径,以便Spring能自动发现并代理这些接口。 为了实现注册功能,我们需要创建一个用户实体类...

    基于框架的Web开发-处理数据模型、转发和重定向.docx

    例如,`@RequestMapping(path="/detail/{userName}")`将匹配以`/detail/`开头并带有路径变量`{userName}`的URL请求,`@PathVariable`注解用于获取URL路径中的变量值。 处理模型数据是Spring MVC的核心任务之一。有...

    ssh(structs,spring,hibernate)框架中的上传下载

     其中save(FileActionForm fileForm)方法,将封装在fileForm中的上传文件保存到数据库中,这里我们使用FileActionForm作为方法入参,FileActionForm是Web层的表单数据对象,它封装了提交表单的数据。将...

    SpringMVC学习指南

    - 使用`@RequestMapping`注解定义处理特定HTTP请求的方法,支持URL路径、HTTP方法等多种匹配策略。 5. **模型数据(Model Data)**: - `@ModelAttribute`注解用于将方法参数绑定到模型对象,便于在视图中使用。 ...

    spring MVC中接口参数解析的过程详解

    而`@PathVariable`则用于RESTful风格的URL,将URL路径中的变量映射到方法参数。 不加注解的情况,Spring MVC依然可以解析参数,这得益于其强大的参数绑定机制。当参数为基本类型或Bean时,Spring MVC会自动匹配并...

Global site tag (gtag.js) - Google Analytics