1. 注解

@PathVariable、(路径变量)
@RequestHeader、(获取请求头)
@ModelAttribute、(获取request域属性)
@RequestParam、(获取请求参数)
@MatrixVariable、(矩阵变量)
@CookieValue、(获取Cookie值)
@RequestBody(获取请求体【POST】方式,【get】方式无请求体)

矩阵变量注意事项:

  1. 矩阵变量需要在springBoot中手动开启(原理详见开发小技巧)
  2. 根据RFC3986的规范,矩阵变量应当绑定在路径变量中!
  3. 若是有多个矩阵变量,应当使用英文符号; 进行分隔。
  4. 若是一个矩阵变量有多个值,应当使用英文符号,进行分隔,或之命名多个重复的key即可。
    如:/ cars / sell; low=34; brand=byd , audi , yd

实例:

@RestController
public class ParameterTestController {//  car/2/owner/zhangsan@GetMapping("/car/{id}/owner/{username}")public Map<String,Object> getCar(@PathVariable("id") Integer id,@PathVariable("username") String name,@PathVariable Map<String,String> pv,@RequestHeader("User-Agent") String userAgent,@RequestHeader Map<String,String> header,@RequestParam("age") Integer age,@RequestParam("inters") List<String> inters,@RequestParam Map<String,String> params,@CookieValue("_ga") String _ga,@CookieValue("_ga") Cookie cookie){Map<String,Object> map = new HashMap<>();//        map.put("id",id);
//        map.put("name",name);
//        map.put("pv",pv);
//        map.put("userAgent",userAgent);
//        map.put("headers",header);map.put("age",age);map.put("inters",inters);map.put("params",params);map.put("_ga",_ga);System.out.println(cookie.getName()+"===>"+cookie.getValue());return map;}@PostMapping("/save")public Map postMethod(@RequestBody String content){Map<String,Object> map = new HashMap<>();map.put("content",content);return map;}//1、语法: 请求路径:/cars/sell;low=34;brand=byd,audi,yd//2、SpringBoot默认是禁用了矩阵变量的功能//      手动开启:原理。对于路径的处理。UrlPathHelper进行解析。//              removeSemicolonContent(移除分号内容)支持矩阵变量的//3、矩阵变量必须有url路径变量才能被解析@GetMapping("/cars/{path}")public Map carsSell(@MatrixVariable("low") Integer low,@MatrixVariable("brand") List<String> brand,@PathVariable("path") String path){Map<String,Object> map = new HashMap<>();map.put("low",low);map.put("brand",brand);map.put("path",path);return map;}// /boss/1;age=20/2;age=10@GetMapping("/boss/{bossId}/{empId}")public Map boss(@MatrixVariable(value = "age",pathVar = "bossId") Integer bossAge,@MatrixVariable(value = "age",pathVar = "empId") Integer empAge){Map<String,Object> map = new HashMap<>();map.put("bossAge",bossAge);map.put("empAge",empAge);return map;}
}

2. Servlet API

WebRequest、ServletRequest、MultipartRequest、 HttpSession、javax.servlet.http.PushBuilder、Principal、InputStream、Reader、HttpMethod、Locale、TimeZone、ZoneId

ServletRequestMethodArgumentResolver 以上的部分参数

@Override
public boolean supportsParameter(MethodParameter parameter) {Class<?> paramType = parameter.getParameterType();return (WebRequest.class.isAssignableFrom(paramType) ||ServletRequest.class.isAssignableFrom(paramType) ||MultipartRequest.class.isAssignableFrom(paramType) ||HttpSession.class.isAssignableFrom(paramType) ||(pushBuilder != null && pushBuilder.isAssignableFrom(paramType)) ||Principal.class.isAssignableFrom(paramType) ||InputStream.class.isAssignableFrom(paramType) ||Reader.class.isAssignableFrom(paramType) ||HttpMethod.class == paramType ||Locale.class == paramType ||TimeZone.class == paramType ||ZoneId.class == paramType);
}

3. 复杂函数

Map、Model(map、model里面的数据会被放在request的请求域 request.setAttribute)、Errors/BindingResult、RedirectAttributes( 重定向携带数据)
ServletResponse(response)、SessionStatus、UriComponentsBuilder、ServletUriComponentsBuilder

Map<String,Object> map,  Model model, HttpServletRequest request 都是可以给request域中放数据,
request.getAttribute();

Map、Model类型的参数,会返回 mavContainer.getModel();—> BindingAwareModelMap 是Model 也是Map

mavContainer.getModel(); 获取到值的


4. 自定义对象参数

可以自动类型转换与格式化,可以级联封装。

 /***     姓名: <input name="userName"/> <br/>*     年龄: <input name="age"/> <br/>*     生日: <input name="birth"/> <br/>*     宠物姓名:<input name="pet.name"/><br/>*     宠物年龄:<input name="pet.age"/>*/@Datapublic class Person {private String userName;private Integer age;private Date birth;private Pet pet;}@Datapublic class Pet {private String name;private String age;}

Spring Boot普通参数与基本注解相关推荐

  1. Spring Boot 接口参数自动加解密

    本文标题:Spring Boot 接口参数自动加解密 原始链接: https://www.shuibo.cn/102.html 许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链 ...

  2. Spring Boot + Mybatis 配合 AOP 和注解实现动态数据源切换配置

    Spring Boot + Mybatis 配合 AOP 和注解实现动态数据源切换配置 前言: 1. 数据库准备: 2. 环境准备: 3.代码部分 4. 测试: 5.等等 6.配合注解实现 7 .测试 ...

  3. spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例...

    本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...

  4. 如何优雅的实现 Spring Boot 接口参数加密解密?

    点击关注公众号,Java干货及时送达 加密解密本身并不是难事,问题是在何时去处理?定义一个过滤器,将请求和响应分别拦截下来进行处理也是一个办法,这种方式虽然粗暴,但是灵活,因为可以拿到一手的请求参数和 ...

  5. Spring Boot 最最最常用的注解梳理

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:blog.csdn.net/zhanglong_4444 一 ...

  6. Spring Boot教程(一)注解配置与EhCache使用

    2019独角兽企业重金招聘Python工程师标准>>> 快速入门 首先,下载样例工程chapter3-2-2.本例通过spring-data-jpa实现了对User用户表的一些操作, ...

  7. bean validation校验方法参数_项目启动时首先校验Spring Boot配置参数

    1. 概述 在项目实际开发过程中,为了更好的复用,我们参考Spring Boot Starters,封装了许多企业内部中间件的starter.这些中间件的接入都需要申请并在项目中配置一些特定的参数.我 ...

  8. Spring Boot(5)---常用注解总结

    Spring Boot常用注解总结 @RestController和@RequestMapping注解 @RestController注解,它继承自@Controller注解.4.0之前的版本,Spr ...

  9. Spring Boot 自动配置之条件注解

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot 神奇的自动配置,主要依靠大量的条件注解来使用配置自动化. 根据满足某一个特定条件创建一个特定的Bean ...

最新文章

  1. 使用apache的ab对想迪科技站点www.thinkdee.com进行压力测试
  2. 图的基本操作及其相关应用
  3. HttpClient, 使用C#操作Web
  4. 日志插件 log4net 的使用
  5. 试写函数显示当前具体时间:
  6. vue2.0 watch的注意事项
  7. linux常用命令:top 命令
  8. 【Python CheckiO 题解】Time Converter (12h to 24h)
  9. android 传感器ceshi,Android代码-传感器-测试手机支持那几种传感
  10. Socket中如何设置连接超时
  11. C++ 类型转换操作与操作符重载 operator type() 与 type operator()
  12. Xcode中打印显示Unicode的解决办法
  13. iis6.0远程代码执行漏洞
  14. GPC凝胶色谱理论和应用(一)
  15. CodeSmith 简单使用和常用模板
  16. java ajax教程_JAVA AJAX教程第一章—初识AJAX
  17. linux 电源管理 regulator,Linux电源管理-Linux regulator framework概述
  18. CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程
  19. oracle merge into 用法详解
  20. screen命令后台运行程序

热门文章

  1. Win10开始菜单点击没有反应打不开怎么办?
  2. 经纬恒润荣获海克斯康“最佳业绩奖”
  3. 项目:家庭收入支出记账软件(JAVA语言)
  4. AD21覆铜,包地,补泪滴,有图
  5. 对辛辛那提原始数据集(ims)数据划分正常,内圈故障,滚动体故障,外圈故障(python代码),可作为自己故障诊断模型实验的另一个数据集(因为CWRU普遍而言,准确度和被使用频率已经极高)
  6. 智能窗帘控制(语音、时间、光、红外)
  7. A类博士后年薪30万起!北邮人工智能学院郭军教授实验室招聘博士后研究人员...
  8. Figma又崩了,但我们P事没有
  9. 开源项目管理软件排名_2015年排名前5位的开源项目管理工具
  10. 安全态势感知系统java_代码分析平台CodeQL学习手记(十三) - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com...