requestparam的作用[email protected]详解_weixin_39758956的博客-程序员宅基地

技术标签: requestparam的作用  

@RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上

首先我们需要知道@RequestParam注解主要有哪些参数

1。value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。比如上图中第一个参数如果不设置value="page",则前端传入的参数名必须为pageNum,否则在后台接口中pageNum将接收不到对应的数据

2。required:该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。

3。defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。注意默认值可以使用SpEL表达式,如"#{systemProperties['java.vm.version']}"

如果在请求中传入多个同名参数,比如:url?userName=zhl&userName=holley时怎么办?

其实此时传入的数据格式是:"zhl,holley",即多个数据之间使用逗号分隔开,在后台接口中可以使用数组或者list类型的变量来接收:

public String requestparam8(@RequestParam(value="userName") String [] userNames)

或者

public String requestparam8(@RequestParam(value="list") List list)

@PathVariable绑定uri模板变量值:通过@PathVariable可以绑定占位符参数到方法参数中,例如:

如果请求为"url/info/16",则spring会自动将16绑定到通过@PathVariable注解的同名变量uid上

@CookieValue绑定Cookie数据值

public String test(@CookieValue(value="SESSIONID", defaultValue="") String sessionId)

自动将SESSIONID的值绑定到字符串sessionId上,如果Cookie中没有sessionId时则默认为空

传入数据类型也可以是javax.servlet.http.Cookie类型

public String test2(@CookieValue(value="SESSIONID", defaultValue="") Cookie sessionId)

@RequestHeader绑定请求头数据

@RequestMapping(value="/header")publicString test(

@RequestHeader("User-Agent") String userAgent,

@RequestHeader(value="Accept") String[] accepts)

如上配置将自动将请求头中的“User-Agent"值绑定到userAgent上,将"Accept"的值绑定到accepts上

@ModelAttribute绑定请求参数到命令对象

@ModelAttribute具有三个作用

1.绑定请求到命令对象:放在后台接口方法(控制层)的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用

2.暴露表单引用对象为模型数据:放在处理器的一般方法(非后台接口方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择所在的城市等,而且在执行后台接口方法之前,自动添加到模型对象中,用于视图页面展示时使用

3.暴露@RequestMapping方法返回值为模型数据:放在后台接口方法的返回值上时,世保禄处理方法的返回值为模型数据,用于视图页面的展示时使用

一、绑定请求参数到命令对象

如用户登录,我们需要捕获用户登录的请求参数(用户名、密码)并封装为用户对象,此时我们可以使用@ModelAttribute绑定多个请求参数到我们的命令对象。

public String test1(@ModelAttribute("user") UserModel user)

注解@ModelAttribute("user"),它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性。

绑定请求参数到命令对象支持对象图导航式的绑定,如请求参数包含“?username=zhang&password=123&workInfo.city=bj”自动绑定到user中的workInfo属性的city属性中。

原文:https://www.cnblogs.com/wangchuanfu/p/5913310.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39758956/article/details/111785123

智能推荐

python矩阵的切片(或截取)_不发文不改名的博客-程序员宅基地_python截取三维矩阵

 矩阵一般有行也有列,所以矩阵的截取也需要包含行和列两个参数。  假设a是一个矩阵,a的截取就可写成:a[起始行:终止行,起始列:终止列],中括号中有一个逗号,逗号前的是为了分割行的,逗号后的是为了分割列的。例如:a1=np.array([[1,2,3,4],[5,6,7,8],[11,12,13,14],[2,3,4,5]]) 1 2 3 importnumpy as np a1=np.array([[1,2,3,4],[5,6,7,8].

java读取mysql数据库json类型乱码解决_Haocaibo的博客-程序员宅基地_mysql 读取json乱码

问题背景使用mybatis-plus的QueryWrapper查询数据库,返回的实体中,数据库json类型的字段返回来是乱码的。问题解决1、maven升级mysql-connector-java 到5.1.40,还是不行。2、不用mybatis-plus的查询方法,自己写sql:SELECT id,json_extract(conclusion,'$') conclusion FROM cd_test_record WHERE id = 5这里使用到了json...

PowerDesigner连接MySQL数据库_CodeMonkey_King的博客-程序员宅基地

环境:Windows 7/10、PowerDesigner 16一、使用ODBC连接1.准备工作PowerDesigner本身是32位的程序(此处标记,特别重要),故不管在32位或者64位操作系统中,都需要安装32位的MySQLConnector /ODBC下载地址:http://dev.mysql.com/downloads/connector/odbc/

mac终端连接linux中断,mac电脑iTerm2连接linux服务器断线解决方案_稻草人旅行的博客-程序员宅基地

问题用windows连接linux服务器,方式不少,我最常常用的是xshell。可是xshell没有mac版,那用mac电脑,比较好的命令行软件是什么呢?我用的是iTerm2 ,这个功能确实蛮强大,不少人都在用。可是,你用iTerm2 连接远程linux服务器,假如你去干别的,一会再回到iTerm2 ,你会发现iTerm2 断线了,苦逼的还要再次进行连接,好麻烦!针对这个有没有什么好的解决方案呢?...

axios——有些接口需要传递token,有些接口不需要传递token的处理方法_jiey0407的博客-程序员宅基地_axios传递token

今天在写后台管理系统时,遇到一个问题:请求接口时,接口先是报500服务器错误,然后又报跨域问题。问过后端,后端说请求时不要加token。由于我的其他接口都是要求带有token的,因此需要对axios拦截器单独进行处理。下面对antd框架中的部分内容修改如下:1.request.js文件——添加一个新的axios请求const instancePermission = axios.create({ timeout: 20000, baseURL: BASE_URL, wi

Android软件开发之在程序中时时获取logcat日志信息_GaoMatrix的博客-程序员宅基地

转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6765046Logcat说明Android开发中一共有5个log信息过滤器 分别是 VERBOSE 、DEBUG、 INFO、 WARN、 ERROR,这些各位盆友们应该都知道吧,不知道给我留言哈~~请各位盆友们观察下面的代码,内容为监听一个按钮点

随便推点

网页静态化技术Freemarker——demo(1)_沉默木头人的博客-程序员宅基地

在项目中为什么会使用网页静态化技术呢? 对于一个比较成型的电商网站来说,一个网站中的商品就会有成百上千个甚至上亿;那么问题就来了这些商品对应的每一个商品详情页面中的数据从哪里来呢? 总不能每次都去数据库查询每一个商品的详情数据吧!会有人说可以把这些数据放到缓存中啊,每次按照商品的id去缓存中查询;就拿redis来说是基于内存的key-value数据库,用来做查询算是比较快的了吧,那么既然是基于...

ar - 创建静态库.a文件_swartz_lubel的博客-程序员宅基地

用途说明创建静态库.a文件。用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到。关于Linux下的库文件、静态库、动态库以及怎样创建和使用等相关知识,参见本文后面的相关资料【3】《关于Linux静态库和动态库的分析》。 常用参数格式:ar rcs  libxxx.a xx1.o xx2.o参数r:在库

非IE浏览器 img标签 src值为空时,2次请求问题_weixin_30572613的博客-程序员宅基地

img src值为空时,2次请求以前应该有同学遇到过类似的情况, 当有一个类似如 <img src=’’> 的标签时, 会对页面多出一次请求,根据一篇文章的分析,我猜测是不是所有的会主动引入外部文件的标签都会存在此类问题, 如 embed, link等,于是就以实验的方式加以验证.以下是初步的结论:标签/请求次数/浏览器IE...

php5.6opcache性能提升,php 性能优化之opcache - 让你的php性能提升 50%_weixin_39609051的博客-程序员宅基地

性能提升原理:减少文件解析的时间。我们都知道,程序要运行,得有一个编译或者解析的过程,编译或解析之后的代码才是机器可以运行的。而 php 是一种解析性语言,在使用php来处理http请求的时候,每一个请求到来的时候,都需要把所有用到的文件解析一遍。而用了 opcache 的话,解析一次就可以多次使用,而不需要每次都从硬盘读取文件,然后再解析,所以会有大幅的性能提升。php -v 看看是什么版本的,...

be异机恢复oracle,ORACLE异机表空间基于时间点恢复 (TSPITR) Method(恢复部分表空间)..._coolgo666的博客-程序员宅基地

RMAN Tablespace Point-In-Time Recovery ( TSPITR) enables you to quickly recover one or more tablespaces in an Oracle database to an earlier time, without affecting the state of the rest of the tablesp...

springboot前端上传文件后端接收不到_我为offer而来的博客-程序员宅基地_springboot文件上传获取不到文件

后端代码:/** * 文件上传 * @param file 上传的excel文件 * @return * @throws Exception */ @PostMapping("/uploadExcelItems") @CrossOrigin(allowCredentials = "true", origins = {"*"}) @ResponseBody public ReturnResult<?> upload

推荐文章

热门文章

相关标签