路径变量中使用正则表达式匹配
SpringMVC的处理器映射的请求路径中是可以包含路径变量的,语法是{pathVar},如下面的请求路径映射中就定义了一个路径变量var,则在访问时该变量可以是任意的值,所以在请求时/pathvariable/a
、pathvariable/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所写)
相关推荐
主要介绍了SpringMVC请求的路径变量里面写正则表达式的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
本期博客内容应该不算多,我们此次的目的是通过正则表达式并利用ajax可以实现动态交互的特点,检验注册的用户名以及密码是否合法。 Entity层 该层主要包含一个用户类User,代码如下: package ...
java高级部分(集合、多线程、正则表达式等)--->html5+css3--->javascript--->jquery--->mysql数据库--->jsp/servlet--->oracle数据库--->项目讲解--->Mybatis框架---->spring框架---->...
几乎是网上 能找到的 日志脱敏的所有实现 1、基于正则表达式的 日志脱敏实现 ,扩展logback 、log4j 2、springmvc 返回报文脱敏。 3、基于注解方式的脱敏。 大家选择使用。
springmvc4.2中文文档springmvc4.2中文文档springmvc4.2中文文档springmvc4.2中文文档springmvc4.
在SpringMVC中利用ServletContextListener初始化数据到内存
在springMVC中实现原始的Excel文件下载方式 企业级分布式缓存技术之(redis详解) 企业高并发基石(Tomcat服务器性能优化) spring事务处理 课程文档 高并发之基础数据MySql调优 mongodb 三级联动课程资料 应用架构之...
SpringMVC3.2+JPA使用注解的方式环境搭建
下面小编就为大家分享一篇浅谈SpringMVC jsp前台获取参数的方式 EL表达式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
SpringMVC完整使用教程
关于springmvc中的ModelAndView的详细代码,可以更好的了解spring。
SpringMVC框架下使用Interceptor进行登录验证 链接:http://blog.csdn.net/lazyrabbitlll/article/details/78696168
用SpringMVC+Hibernate 写的一个小小的程序,包含了帖子的新增、删除、查询等功能,不过画面比较简单需要再深度开发
springMVC框架遇到中文乱码的解决思路汇总,包括从配置到注解的详细描述,帮助开发人员解决spirngMVC中文乱码问题
SpringMVC 教程中所需要的jar包,内含spring、mybatis等相关jar包
SpringMvc框架的笔记使用
SpringMVC常用注解,返回方式,路径匹配形式.rar
springmvc和Echarts结合,有两种实现图表的方式:1.直接把所需数据传到jsp页面中的js中;2.通过工具在类中生成类似js代码,转换成JSON字符串后传入到jsp页面中,具体介绍看博文
我之前看spring配置数据库的开发,结果因为不会配置后来没用到,懂得了spring和hibernate和struts2的整和; springmvc确实比struts...这个资源是springmvc的框架demo使用;很基础吧,感谢支持;这个积分能不能修改成3分
返回相同的对象但是json字段不同参考JsonController和BookInfo类捕获Controller中的异常参考ExceptionController和ExceptionAdvice类增加数据校验和分组校验参考ValidationController,UserInfo, ExceptionAdvice路径...