`
234390216
  • 浏览: 10229942 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462463
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775252
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398183
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:394950
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679881
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530777
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183618
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467466
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151280
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68026
社区版块
存档分类
最新评论

SpringMVC路径匹配中使用通配符

阅读更多

SpringMVC路径匹配中使用通配符

@RequestMapping中指定的路径也可以使用通配符*,表示任意字符。如下的处理器方法可以映射请求/antstyle/a,可以映射请求/antstyle/b,但是它不能映射请求请求/antstyle/a/b,因为它只能映射一级路径。

@RequestMapping("/antstyle/*")
public Object testAntStyle() {
    return "antStyle";
}

通配符不是只能放在最后的,它也可以放在其它位置。下面的示例中就是把通配符放在中间位置,它可以映射请求/antstyle/a/bcd,也可以映射请求/antstyle/ab/bcd

@RequestMapping("/antstyle/*/bcd")
public Object testAntStyle() {
    return "antStyle";
}

通配符还可以匹配以某字符结束的路径。如下处理器方法可以映射/antstyle/后路径以bcd结尾的路径,比如/antstyle/abcd/antstyle/bcd等。

@RequestMapping("/antstyle/*bcd")
public Object testAntStyle() {
    return "antStyle";
}

通配符还可以匹配以某字符开始的路径。如下处理器方法可以映射/antstyle/abc/antstyle/abcd等。

@RequestMapping("/antstyle/abc*")
public Object testAntStyle() {
    return "antStyle";
}

一个星号只能匹配一级路径,如果需要匹配任意的多级路径则可以使用两个星号。如下处理器方法可以映射任何请求路径以/antstyle/开头的请求,如/antstyle/a/antstyle/a/b等。

@RequestMapping("/antstyle/**")
public Object testAntStyle() {
    return "antStyle";
}

一个星号与两个星号还可以一起使用,此时一个星号还是匹配任意字符,但是只能在当前层级,而两个星号还是可以匹配任意的层级,所以如下可以匹配/antstyle/abca/xxx/xxx等。

@RequestMapping("/antstyle/abc*/**")
public Object testAntStyle() {
    return "antStyle";
}

请求映射路径中使用了通配符时,也还是可使用路径变量的,它们是相互独立的。如下代码中我们就在请求路径中同时使用了路径变量和通配符。

@RequestMapping("/antstylewithpathvariable/*/{path}/abc")
public Object testAntStyleWithPathVariable(@PathVariable String path) {
    return "ant style with path variable, path is " + path;
}

同时存在路径变量和通配符匹配时的优先级关系

当一个请求路径可以匹配多个处理器方法时,SpringMVC将优先匹配路径映射更精确的那个。

  • 拥有更少的路径变量和通配符的路径映射更精确。比如/hotels/{hotel}/*拥有一个路径变量和一个通配符,那么它会比/hotels/{hotel}/**更精确,会优先匹配,因为后者拥有一个路径变量和两个通配符。
  • 如果两个路径映射的通配符数量是一样的,则指定的信息更多那个路径会更精确,比如/hotels/abc*/hotels/*更精确。
  • 路径变量比通配符更精确。比如/hotels/{hotel}/hotels/*更精确。
  • 默认映射/**比其它所有的路径映射的优先级都低,比如/{a}/{b}就比它更精确。
  • 拥有两个通配符的路径映射比其它没有两个通配符的路径映射的优先级都低,比如/abc/**的优先级低于/abc/{a}

(注:本文是基于Spring4.1.0所写)

0
2
分享到:
评论

相关推荐

    spring mvc路径匹配原则详解

    Spring MVC 中的路径匹配原则是指在配置拦截器时,使用 `<mvc:mapping/>` 子标签指定需要拦截的路径。该标签的 `path` 属性用来指定需要拦截的路径,例如 `<mvc:interceptor><mvc:mapping path="/" />...

    springMVC中 RequestMapping的使用.docx

    3. **路径匹配模式**: - `**`:匹配任意数量的路径层次。 - `*`:匹配任意长度的路径(但不包括`/`)。 - `?`:匹配单个字符。 - `{}`:路径变量。 #### 四、总结 通过上述分析可以看出,`@RequestMapping`...

    SpringMVC四种映射方式实例代码

    - **通配符映射**:`@RequestMapping("/path/*")`,星号(*)代表任意字符,这种映射方式可以匹配以指定路径开头的所有请求。 - **精确匹配**:`@RequestMapping("/path")`,这种是最基础的映射,只匹配完全相同的...

    跟开涛学SpringMVC(6.2)SpringMVC3强

    2. **通配符和占位符**: SpringMVC的请求映射允许使用通配符(如`*`)和占位符(如`:paramName`)。通配符可以匹配任何字符序列,而占位符则会捕获实际的值,可以用于动态路由。例如,`/users/{userId}`将匹配形如/...

    基于框架的Web开发-RequestMapping通配符和占位符.doc

    当我们使用通配符时,需要注意的是,它们会影响URL匹配的精确度。例如,如果将`@RequestMapping`的URL设置为`"/register*"`,它将匹配`"/user/register.html"`、`"/user/register.x"`,甚至`"/user/register/extra...

    springmvc-demo04-请求细节说明.zip

    4. **通配符**: 在路径中可以使用`*`作为通配符。例如,`@RequestMapping("/files/*")`可以匹配所有以"/files/"开头的路径。 5. **多属性组合**: `@RequestMapping`还可以同时处理多个属性,如`value`(定义请求...

    spring MVC 3.0实战指南

    匹配单个字符,*匹配任意数量的字符,**匹配多层路径),还支持带占位符的URL,例如/user/{userId},其中{userId}是一个变量,可通过@PathVariable注解绑定到控制器方法的参数上。 在HTTP请求数据绑定方面,...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_5_常用注解 共22页.pptx

    - `value`:指定处理的请求URI路径,支持通配符和正则表达式。 - `method`:指明接受的HTTP请求方法(如GET、POST)。 - `params`:用于指定匹配或不匹配的请求参数。 - `headers`:用于指定匹配或不匹配的请求...

    详解SpringMVC中设置静态资源不被拦截的问题

    另一种方式是在Spring MVC的配置文件中使用`<mvc:resources>`标签来指定静态资源的路径和映射。虽然在提供的代码中这部分注释掉了,但正确的使用方式如下: ```xml **" location="/WEB-INF/css/"/> **" location="/...

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

    对于支持Ant风格的URL配置,`@RequestMapping`可以通过通配符`*`来匹配多个路径。例如: ```java @GetMapping("/geturlant/**.html") public String getUrlAnt(HttpServletRequest request) { // ... } ``` 这个...

    ssm框架分页及模糊查询

    4. **MyBatis-Plus**:MyBatis-Plus提供了更强大的查询API,可以直接在Java代码中使用`eq`, `like`, `likeRight`等方法进行模糊查询。 然而,要注意的是,文中提到的分页存在bug,这可能源于配置问题、SQL编写错误...

    类似淘宝京东的查询功能源码

    该项目可能使用了Eclipse IDE进行开发,使用了SpringMVC或Struts2等MVC框架来简化开发,同时可能还依赖了其他JavaWeb开发库,如Hibernate进行数据持久化,或者MyBatis进行SQL映射。 总结来说,这个项目涵盖了...

    跟我学Spring,Spring3学习资料

    - **Resource通配符路径:** 提供了类似于Ant风格的路径模式匹配,用于访问多个资源。 ### 5. Spring表达式语言(SpEL) - **SpEL概述:** 简介了SpEL的用途以及基本语法。 - **SpEL基础与语法:** 详细解释了SpEL...

    Spring MVC--2.@RequestMapping 映射请求

    `@RequestMapping`支持通配符`*`,如`/users/*`,这意味着它将匹配所有以`/users/`开头的请求路径。 ### 8. 注解属性 `@RequestMapping`还有一些其他属性,如`produces`和`consumes`,用于指定响应内容类型和接受的...

    Spring杂谈

    - **Resource通配符路径**:支持Ant风格的路径模式匹配。 ### Spring表达式语言(SpEL) Spring表达式语言是一个功能强大的表达式语言,它支持在运行时查询和操作对象图。 - **SpEL基础**:提供了一套表达式语法...

    spring mvc学习笔记

    2. **定义通知方法**:在切面类中使用 AOP 注解来定义不同类型的通知方法。 3. **配置自动代理**:在 Spring 配置文件中启用 AOP 支持,如 `<aop:aspectj-autoproxy/>`。 #### 四、切点表达式的使用 切点表达式...

    java微信公众号MVC开发框架

    url-pattern模式匹配微信公众号平台服务器配置的URL配置,如果需要处理多个微信公众号,可以配置多个servlet-mapping或者使用路径通配符匹配多个url链接。 3、spring配置文件 spring配置文件applicationContext.xml...

Global site tag (gtag.js) - Google Analytics