SpringMVC 参数传递和接收的几种方式
普通传参
测试项目:SpringBoot2.0。不使用 form 表单传参,后端不需要指定 consumes 。
使用 Postman 进行测试。
@PathVariable
只能接收 URL 路径里的参数。
@RequestParam
只能接收 URL 问号后跟着的参数,不管是 GET 还是 POST,虽然一般只有 GET 请求才会在 URL 后边跟参数,问号 ? 后面的部分,使用 & 区分参数。
http://localhost:8080/api/user/login/test?username=2222222&pass=333333333
@RequestParam("username")String username,
@RequestParam("pass")String pass
@RequestBody
只能接收请求体中的参数,也就是只能是 POST 请求才有请求体,GET 请求没有请求体,请求体分两种情况参数
(1)使用String接收
比如前端参数在请求体中传的是 username=18514335982&pass=12345,Content type 为 text/plain;charset=UTF-8
则后台接收到的 param 即为 username=18514335982&pass=12345 格式
@RequestBody String param
(2)使用封装的 bean 或者 JSONObject 接收(常用)
前端必须使用 JSON 格式的数据,Content-Type 必须为 application/json,请求体中参数为 {"username":"18514335982","pass":"12345"}
@RequestBody User user
@RequestBody JSONObject jsonObject
测试代码
@PostMapping("/login/test")
public ResultBuilder userLogin1(@RequestHeader(Constants.ACCEPT_VERSION)String version,
@RequestHeader(Constants.ACCESS_TOKEN)String token,
@RequestParam("username")String username,
@RequestParam("pass")String pass,
@RequestBody User user){
logger.debug("username======" + username);
logger.debug("pass======" + pass);
logger.debug("user---username==" + user.getUsername());
logger.debug("user---pass==" + user.getPass());
return new ResultBuilder(StatusCode.SUCCESS);
}
FORM表单传参
测试项目:SpringBoot2.0
GET方式
前端表单传参
<form action="http://localhost:8080/test" method="get">
<input type="text" name="username" />
<input type="text" name="password"/>
<input type="submit" value="Submit" />
</form>
后端参数接收,因为 form 表单使用 get 方法的时候,Content type 的值默认为空。所以后台接收代码不需要指定 consumes 属性
@ResponseBody
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test1(@RequestParam(value="username") String username,
@RequestParam(value="password") String password){
System.out.println("======GET======");
System.out.println("username=" + username);
System.out.println("password=" + password);
return "SUCCESS";
}
打印结果:
======GET======
username=wangbo
password=123456
可以看出 FORM 表单发出的 GET 请求直接通过注解 @RequestParam 进行参数接口即可。
POST方式
前端表单传参
<form action="http://localhost:8080/test" method="post">
<input type="text" name="username" />
<input type="text" name="password"/>
<input type="submit" value="Submit" />
</form>
后端参数接收,
因为 form 表单使用 post 方法的时候,Content type 的值默认为 application/x-www-form-urlencoded;charset=UTF-8。所以后台接收代码需要指定 consumes 属性。
consumes = "application/x-www-form-urlencoded;charset=UTF-8"
@ResponseBody
@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = "application/x-www-form-urlencoded;charset=UTF-8")
public String test(@RequestParam(value="username") String username,
@RequestParam(value="password") String password,
User user){
System.out.println("======POST======");
System.out.println("username=" + username);
System.out.println("password=" + password);
System.out.println("user=" + user);
return "SUCCESS";
}
打印结果
======POST======
username=wangbo
password=123456
user=username=wangbo; password=123456
可以看出,FORM 表单发出的 POST 请求可以直接通过注解 @RequestParam 进行参数接收,
也可以使用字段对应封装的 Java Bean 对象来接收参数。注意 Java Bean 对象上不需要注解。
User 代码,为了更清楚的打印对象,重写了 toString 代码。
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "username=" + username +"; password=" + password;
}
}
SpringMVC 参数传递和接收的几种方式的更多相关文章
- springmvc url处理映射的三种方式:
一.SpringMVC简介 SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象 ...
- C#中POST数据和接收的几种方式(抛砖引玉)
POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[" ...
- [转]C#中POST数据和接收的几种方式
POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[" ...
- C#中POST数据和接收的几种方式
POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[" ...
- 【Spring】SpringMVC非注解配置的两种方式
目录结构: contents structure [+] SpringMVC是什么 Spring MVC的设计原理 SpringMVC配置的第一种方式 1,复制Jar包 2,Web.xml文件 3,M ...
- springmvc+jpa实现分页的两种方式
1.工具类 public final class QueryTool { public static PageRequest buildPageRequest(int pageNumber, int ...
- SpringMVC返回json数据的三种方式
1.第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew. 如:<bean id="defaultJsonView" cla ...
- SpringMVC返回json数据的三种方式(转)
原文:https://blog.csdn.net/shan9liang/article/details/42181345# 1.第一种方式是spring2时代的产物,也就是每个json视图contro ...
- springmvc获取资源文件的两种方式(超简单)
1 比如我们在sc目录下新建一个db.properties文件内容如下 DriverClass=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306 ...
随机推荐
- postman的安装与使用(模拟请求)
最近需要测试产品中的REST API,无意中发现了PostMan这个chrome插件,把玩了一下,发现postman秉承了一贯以来google工具强大,易用的特质.独乐乐不如众乐乐,特此共享出来给大伙 ...
- Zepto源码(2016)——Zepto模块(核心模块)
// Zepto.js // (c) 2010-2016 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...
- 你不知道的JavaScript--Item18 JScript的Bug与内存管理
1.JScript的Bug IE的ECMAScript实现JScript严重混淆了命名函数表达式,搞得现很多人都出来反对命名函数表达式,而且即便是现在还一直在用的一版(IE8中使用的5.8版)仍然存在 ...
- 34.如何获取app(apk和ipa)中的资源
移动互联网中,主要的两个平台是android和ios,android上文件的安装包是后缀名为apk的文件,ios上文件的安装包是后缀名为ipa的文件,在本文分析一下这两种文件的特点,以及如何用程序去解 ...
- RabbitMQ分布式集群架构和高可用性(HA)
(一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布 ...
- php与html实现交互的基本操作
今天我们来实现php与html页面注册和登录的效果.中国有句古话叫: 第一步:我们来了解一些php的基本格式. <?php php代码 ?> 第二步:了解php与js的一些基本区别 我们在 ...
- React从入门到放弃之前奏(5):ReactRouter4
概念 安装:npm i -S react-router react-router-dom GitHub:ReactTraining/react-router React Router中有三种类型的组件 ...
- 后端传Long类型至前端js会出现精度丢失问题
今天开发遇到个问题,Java后端的Long类型数据,传到前端会出现精度丢失,如:164379764419858435,前端会变成164379764419858430.在浏览器中做测试可知,这就是一个精 ...
- XMR挖矿教程
XMR挖矿教程 XMR介绍 门罗币(Monero,代号XMR)是一个创建于2014年4月开源加密货币,它着重于隐私.分权和可扩展性.与自比特币衍生的许多加密货币不同,Monero基于CryptoNot ...
- Sublime Text3插件安装(经典)
今天我去听数学建模的培训,感觉很有意思,可是我没有报名(QAQ),没有参加培训的报名,不过幸好没有开始选拔比赛 所以我决定学习数学建模方面的知识,要好好学习了! 希望我未来的学弟学妹们!(不要像我这样 ...