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

SpringMVC路径变量中使用正则表达式匹配

阅读更多

路径变量中使用正则表达式匹配

SpringMVC的处理器映射的请求路径中是可以包含路径变量的,语法是{pathVar},如下面的请求路径映射中就定义了一个路径变量var,则在访问时该变量可以是任意的值,所以在请求时/pathvariable/apathvariable/bcd等形式的请求路径都可以映射到下面的处理器方法。

@RequestMapping("/pathvariable/{var}")
public Object testPathVar() {
    return "PathVar";
}

如果有需要,我们还可以通过一个方法参数接收实际访问过程中传递的该路径变量,需要在对应的方法参数上使用@PathVariable标注,如果路径变量的名称和定义的方法参数的名称是一致的,则通常可以不通过@PathVariable的value属性指定方法参数对应的路径变量的名称;如果方法参数的名称和对应的路径变量的名称不一致,则必须如下所示通过@PathVariable的value属性指定对应的路径变量名称。

@RequestMapping("/pathvariable/{var}")
public Object testPathVar(@PathVariable("var") String pathVar) {
    return pathVar;
}

通过方法参数接收的路径变量还会自动的添加到对应的Model中,所以如果上面的示例代码中返回的是一个页面,则我们还可以在对应的页面中通过路径变量名称var获取到传递的实际的路径变量值。

以上介绍的是普通的路径变量使用的方式,它对传递的具体的路径变量值没有什么约束,试想一下,如果我们明确的知道上面的路径变量var的取值只能是小写字母的组合,那么当我们传递的路径变量是abc时是满足我们需求的,可以进入该方法处理,但是当我们传递的路径变量是abc123是不满足我们需求的,这时候也会进入我们的处理方法。虽然我们也可以在我们的处理方法中对路径变量进行校验,但是这明显不是很好的做法,因为严格意义上来说这时候就不应该进入我们的处理器方法。针对这种场景SpringMVC为我们提供了路径变量的正则表达式限定,即允许我们在定义路径变量时指定其需要满足的正则表达式要求,此时只有满足对应正则表达式要求的路径变量才能映射到对应的处理器方法处理。其语法是{varName:regex},varName指定路径变量名,regex定义需要匹配的正则表达式。在下面的示例中只有当我们传递的路径变量regex1是完全由小写字母a-z组成,并且路径变量regex2是由3位的数字组成时才会被映射到下面的处理器方法。比如/pathvariable/a/123是可以映射到下面的处理器方法的,而/pathvariable/a/12a则不能映射到下面的处理器方法。

@RequestMapping("/pathvariable/{regex1:[a-z]}/{regex2:\\d{3}}")
public Object testPathVariableRegex(@PathVariable String regex1, 
    @PathVariable String regex2) {
    Map<String, Object> result = new HashMap<>();
    result.put("regex1", regex1);
    result.put("regex2", regex2);
    return result;
}

如果是上面那样,因为我们已经明确的指定了路径变量regex2需要是3位的数字,所以在方法参数中接收该路径变量时可以把regex2声明为数字类型的,比如下面这样。

@RequestMapping("/pathvariable/{regex1:[a-z]}/{regex2:\\d{3}}")
public Object testPathVariableRegex(@PathVariable String regex1, 
    @PathVariable int regex2) {
    Map<String, Object> result = new HashMap<>();
    result.put("regex1", regex1);
    result.put("regex2", regex2);
    return result;
}

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

0
0
分享到:
评论

相关推荐

    SpringMVC请求的路径变量里面写正则表达式的方法

    这时,我们可以在路径变量的定义中使用正则表达式来实现这一需求。 在Spring MVC的`@RequestMapping`注解中,我们可以为路径变量指定一个正则表达式,从而限制该变量的取值范围。例如: ```java @RequestMapping(...

    通过正则表达式使用ajax检验注册信息功能

    本期博客内容应该不算多,我们此次的目的是通过正则表达式并利用ajax可以实现动态交互的特点,检验注册的用户名以及密码是否合法。 Entity层 该层主要包含一个用户类User,代码如下: package ...

    正则表达式详讲

    java高级部分(集合、多线程、正则表达式等)---&gt;html5+css3---&gt;javascript---&gt;jquery---&gt;mysql数据库---&gt;jsp/servlet---&gt;oracle数据库---&gt;项目讲解---&gt;Mybatis框架----&gt;spring框架----&gt...

    SpringMVC常用注解,返回方式,路径匹配形式.rar

    2. 正则表达式:`@RequestMapping("/users/{id:\\d+}")`,`{id:\\d+}`是一个占位符,匹配数字格式的ID。 3. 路径变量:如上所述,`@GetMapping("/users/{userId}")`,`{userId}`是一个变量,可以从URL中提取。 4. ...

    springmvc log4j2 logback 注解 jackson 日志脱敏实现源码

    1. **基于正则表达式的日志脱敏实现**:正则表达式是一种强大的文本处理工具,它可以用于查找、替换或匹配特定模式。在日志脱敏中,可以通过定义正则表达式来识别并替换敏感字段。这个实现可能扩展了`Logback`和`Log...

    Springmvc中 RequestMapping 属性用法归纳.docx

    - C) 正则表达式:虽然Spring MVC并不直接支持正则表达式,但可以通过自定义拦截器或者使用Spring WebFlux的`@Pattern`注解实现更复杂的模式匹配。 通过灵活地配置`@RequestMapping`的属性,开发者可以构建出高度可...

    jetbrick-springmvc jar包(包含源码)

    2. **URL映射**:Jetbrick-SpringMVC提供了强大的URL映射机制,支持动态参数、正则表达式等,使得路由更加灵活和直观。 3. **模板引擎**:它集成了一些常见的模板引擎,如FreeMarker、Velocity,提供了统一的API,...

    Java实现网路爬虫爬取新闻信息

    在数据抓取过程中,正则表达式(Regex)是一种强大的文本处理工具,用来匹配和提取特定模式的字符串。例如,我们可以用正则表达式从HTML文档中找到新闻标题、内容和发布时间等信息。正则表达式的使用需要一定的技巧...

    论坛java源码(SpringMVC+Hibernate+EL表达式)

    对于初学者来说,这个项目是一个很好的实践平台,可以学习如何整合SpringMVC和Hibernate,理解MVC模式,以及如何在实际项目中使用EL表达式。通过阅读和修改源码,可以深入理解Web开发流程和技术栈。 7. **开发环境...

    java干货(有视频)

    - **配置前端控制器**:类似于SpringMVC中的DispatcherServlet。 - **定义处理器映射器**:实现请求URL到具体处理器的映射。 - **实现处理器适配器**:封装对处理器的调用逻辑。 - **创建视图解析器**:将逻辑视图...

    SpringMVC详解

    @RequestMapping可以指定URL路径、HTTP方法(GET、POST等),甚至可以定义更复杂的映射规则,如通配符和正则表达式。 6. **数据绑定** SpringMVC提供了强大的数据绑定功能,可以自动将请求参数绑定到控制器方法的...

    浅谈SpringMVC jsp前台获取参数的方式 EL表达式

    本文将探讨SpringMVC中如何通过EL(Expression Language)表达式在JSP页面上获取这些参数。 **1. SpringMVC控制器向JSP传递参数** 在SpringMVC的控制器方法中,我们可以使用以下几种方式将数据传递到视图层(JSP)...

    SpringMVC帮助文档

    通过@RequestMapping注解,可以指定URL路径、请求方法(GET、POST等),甚至使用通配符和正则表达式进行复杂映射。 8. **数据绑定** SpringMVC提供了强大的数据绑定功能,能够自动将HTTP请求参数绑定到Controller...

    基于ssm+vue的电子书籍敏感字识别系统.zip

    3. 使用匹配算法检查书籍内容中的每个单词,找出敏感字。 4. 返回敏感字列表和相关信息给前端展示。 5. 可选功能:提供敏感字替换建议或自动过滤。 6. 微信小程序端同步显示结果,提供移动设备上的便捷操作。 该...

    springmvc所使用的jar

    12. **jakarta-regexp.jar**(或 **oro.jar**):正则表达式库,一些旧版本的 Spring MVC 可能会用到。 13. **commons-fileupload.jar**:用于处理文件上传请求。 14. **commons-collections.jar**:提供了一些...

    SpringMVC教程中所需要的jar

    在SpringMVC中,以下是一些重要的jar包及其作用: - **spring-webmvc.jar**:这是Spring MVC的主要实现库,包含了控制器、视图解析器、数据绑定等功能。 - **spring-context.jar**:提供了上下文支持,包括依赖注入...

    SpringMVC完整使用教程

    你可以直接在方法签名中使用参数,如 `String name` 来获取请求参数;或者使用 `@RequestParam` 注解指定参数名。对于复杂的数据结构,可以使用 POJO 类绑定请求参数值,SpringMVC 会自动将请求参数填充到对象中。...

    SpringMVC中Model和ModelAndView的EL表达式取值方法

    接下来,我们将深入探讨如何在Spring MVC中使用Model、ModelAndView以及EL表达式进行数据取值。 1. **Model对象** Model对象通常是一个`java.util.Map`实例,用于存放控制器处理业务逻辑后需要传递给视图的数据。...

    SpringMVC初学者使用的CRUD

    - 掌握HTTP请求和响应的工作原理,以及如何在SpringMVC中传递参数。 通过这个小demo,初学者可以逐步熟悉SpringMVC的架构,掌握Web应用开发中的基本操作,为后续深入学习打下坚实基础。在实践中,还可以尝试引入更...

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

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

Global site tag (gtag.js) - Google Analytics