@PathVariable注解,让spring支持参数带值功能的案例_java

来源:脚本之家  责任编辑:小易  

@PathVariable的作用

获取URL动态变量,例如

  @RequestMapping("/users/{userid}")
  @ResponseBody
  public String getUser(@PathVariable String userid){
    return "userid=" + userid; 
  }

@PathVariable的包引用

spring自从3.0版本就引入了org.springframework.web.bind.annotation.PathVariable,

这是RESTful一个具有里程碑的方式,将springMVC的精华推向了高潮,那个时代,跟微信公众号结合的开发如火如荼,很多东西都会用到URL参数带值的功能。

@PathVariable的PathVariable官方doc解释

- Annotation which indicates that a method parameter should be bound to a URI template variable. Supported for RequestMapping annotated handler methods in Servlet environments.

- If the method parameter is Map<String, String> or MultiValueMap<String, String> then the map is populated with all path variable names and values.

翻译过来就是:

- 在SpringMVC中可以使用@PathVariable注解,来支持绑定URL模板参数(占位符参数/参数带值)

- 另外如果controller的参数是Map(String, String)或者MultiValueMap(String, String),也会顺带把@PathVariable的参数也接收进去

@PathVariable的RESTful示范

前面讲作用的时候已经有一个,现在再提供多一个,别人访问的时候可以http://localhost:8080/call/窗口号-检查编号-1

/**
   * 叫号
   */
  @PutMapping("/call/{checkWicket}-{checkNum}-{status}")
  public ApiReturnObject call(@PathVariable("checkWicket") String checkWicket,@PathVariable("checkNum") String checkNum,
      @PathVariable("status") String status) {
    if(StringUtils.isBlank(checkWicket) || StringUtils.isBlank(checkNum)) {
      return ApiReturnUtil.error("叫号失败,窗口号,检查者编号不能为空");
    }else {
      if(StringUtils.isBlank(status)) status ="1";
      try {
        lineService.updateCall(checkWicket,checkNum,status);
        return ApiReturnUtil.success("叫号成功");
      } catch (Exception e) {
        return ApiReturnUtil.error(e.getMessage());
      }
    }
  }

补充:解决@PathVariable接收参数带点号时只截取点号前的数据的问题

问题:

@RequestMapping(value = "preview/{fileName}", method = RequestMethod.GET)
public void previewFile(@PathVariable("fileName") String fileName, HttpServletRequest req, HttpServletResponse res) {
 officeOnlinePreviewService.previewFile(fileName, req, res);
}

本来fileName参数传的是:userinfo.docx,

但结果接收到的是:userinfo

这显然不是我想要的。

解决方法:

@RequestMapping(value = "preview/{fileName:.+}", method = RequestMethod.GET)
public void previewFile(@PathVariable("fileName") String fileName, HttpServletRequest req, HttpServletResponse res) {
 officeOnlinePreviewService.previewFile(fileName, req, res);
}

参数fileName这样写,表示任何点(包括最后一个点)都将被视为参数的一部分:

{fileName:.+}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持真格学网。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:聊聊@RequestParam,@PathParam,@PathVariable等注解的区别SpringBoot中自定义注解实现参数非空校验的示例基于@PathVariable注解的用法说明处理@PathVariable注解允许参数为空、允许不传参数的问题

  • 本文相关:
  • springboot操作阿里云oss实现文件上传,下载,删除功能
  • 介绍jersey-jersey入门基础
  • jmeter后置处理器实现过程及方法应用
  • javafx实现简易时钟效果(二)
  • java自带的messagedigest实现文本的md5加密算法
  • spring boot task实现动态创建定时任务的方法
  • mybatis的入门示例代码
  • 解决zuulgateway网关添加路由异常熔断问题
  • htmlcleaner使用方法及xpath语法初探
  • java程序实现导出excel的方法(支持ie低版本)
  • Java 求spring用@Autowired进行方法参数注入例子。
  • springmvc中@PathVariable和@RequestParam的区别
  • 怎么动态给java注解参数赋值?
  • Springboot 中有一个带参数的构造函数的service.如...
  • springmvc post请求可以用 requestparam获得到数据吗
  • springmvc 有哪些注解 pathvariable
  • SpringMVC的请求路径写参数,Controller的方法入参...
  • 通过spring mvc提供的哪个注解,可以将rest风格url...
  • java中@RequestMapping注解指定的路径value后面的...
  • 如何获取spring RequestMapping注解所对应的方法及...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页聊聊@requestparam,@pathparam,@pathvariable等注解的区别springboot中自定义注解实现参数非空校验的示例基于@pathvariable注解的用法说明处理@pathvariable注解允许参数为空、允许不传参数的问题springboot操作阿里云oss实现文件上传,下载,删除功能介绍jersey-jersey入门基础jmeter后置处理器实现过程及方法应用javafx实现简易时钟效果(二)java自带的messagedigest实现文本的md5加密算法spring boot task实现动态创建定时任务的方法mybatis的入门示例代码解决zuulgateway网关添加路由异常熔断问题htmlcleaner使用方法及xpath语法初探java程序实现导出excel的方法(支持ie低版本)intellij idea 2020最新激活码(亲java使double保留两位小数的多方intellij idea 2020.2.3永久破解java8 十大新特性详解idea2020.2.2激活码与intellij ijava.net.socketexception: connjava写入文件的几种方法分享2020.2 intellij idea激活与ideajava 十六进制与字符串的转换java环境变量的设置方法(图文教程用java websocket做一个聊天室multipartresolver实现文件上传功能java 日期格式加上指定月数(一个期限)得到实例解析java的jackson库中的数据绑定解决idea中快捷键alt+enter不能使用的问题使用springboot+poi上传并处理百万级数据java版画板的实现方法一次诡异的full gc查找问题全过程java 两个数组合并的几种方法springboot中swagger快速启动流程
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved