版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33721382/article/details/82931388
一、@RequestParam 注解
在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法的形参。
@RequestParam 注解的作用
value=”name” 表示参数名称。
required=true 表示如果没有传递参数,则会报 400参数异常。
以下对前台传参数的常用方式介绍@RequestParam 注解的作用:
1、GET请求方式传递参数
/**
* @RequestParam注解获取参数(GET请求方式)
* @param paramName
* @return
*/
@GetMapping("/testGet1")
public String testGet1(@RequestParam("paramName") String paramName){
System.out.println("paramName:"+paramName);
return paramName;
}
前台代码:
/**
* GET请求方式传递参数
*
* @author: chenlw
* @date 2018/10/2 23:41
**/
function testGet1() {
$.get(basePath + "/api/params/testGet1?paramName=123", {}, function (data) {
alert("GET请求方式传递参数---后台返回来的参数:" + data);
});
////AJAX传递请求参数(GET请求方式)
// var data = {};
// data.paramName = "111";
// data.paramName1 = "222";
// $.get(basePath + "/api/params/testGet2", data, function (data) {
// alert("AJAX传递请求参数(GET请求方式)---后台返回来的参数:" + data);
// });
}
运行结果:
2、POST请求方式传递参数
后台代码:
/**
* @RequestParam注解获取参数(POST请求方式)
* @param paramName
* @return
*/
@PostMapping("/testPost1")
public String testPost1(@RequestParam("paramName") String paramName){
System.out.println("paramName:"+paramName);
return paramName;
}
前台代码:
/**
* AJAX传递请求参数(POST请求方式)
*
* @author: chenlw
* @date 2018/10/2 23:45
**/
function testPost1() {
var data = {};
data.paramName = "111";
$.post(basePath + "/api/params/testPost1", data, function (data) {
alert("后台返回来的参数:" + data);
});
}
运行结果:
二、@PathVariable注解
@PathVariable注解的作用就是从URL里面读取参数值,可以在@RequestMapping里面添加占位符{paramName},还可以添加正则表达式。如http://localhost:8099/XXX/XXX/XXX/param,这个传递到后台的参数值就是param。@PathVariable注解一般用于传递一个参数的情景,当然也可以通过URL传递多个参数。
1、GET请求方式传递参数
后台代码:
/**
* @PathVariable注解的作用就是从URL里面读取参数值(GET请求方式)
* @param paramName
* @return
*/
@GetMapping("/testGet2/{paramName}")
public String testGet2(@PathVariable String paramName){
System.out.println("paramName:"+paramName);
return paramName;
}
前台代码:
/**
* URL传递参数
*
* @author: chenlw
* @date 2018/10/2 23:45
**/
function testGet2() {
$.get(basePath + "/api/params/testGet2/111112333", {}, function (data) {
alert(" URL传递参数---后台返回来的参数:" + data);
});
}
运行结果:
2、POST请求方式传递参数
后台代码:
/**
* @PathVariable注解的作用就是从URL里面读取参数值(POST请求方式)
* @param paramName
* @return
*/
@PostMapping("/testPost2/{paramName}")
public String testPost2(@PathVariable String paramName){
System.out.println("paramName:"+paramName);
return paramName;
}
前台代码:
/**
* URL传递一个参数(POST请求方式)
*
* @author: chenlw
* @date 2018/10/2 23:45
**/
function testPost2() {
///只传递一个参数
$.post(basePath + "/api/params/testPost2/111112333", {}, function (data) {
alert(" URL传递一个参数(POST请求方式)---后台返回来的参数:" + data);
});
}
运行结果:
3、URL传递多个参数
后台代码:
/**
* @PathVariable注解的作用就是从URL里面读取参数值(GET请求方式)
*
* @PathVariable注解一般用于只传递一个参数的场景,当然也可以传递多个参数。
*
* @param param1 占位符{}添加了正则表达式,限定5位数值,如果传递过来的参数不合要求则不会执行方法的代码。
* @param param2
* @return
*/
@GetMapping("/testGet2_1/{param1:[0-9]{5}}/{param2}")
public String testGet2_1(@PathVariable String param1,@PathVariable String param2){
System.out.println("param1:"+param1);
System.out.println("param2:"+param2);
return param1+","+param2;
}
前台代码:
/**
* URL传递多个参数
*
* @author: chenlw
* @date 2018/10/2 23:45
**/
function testGet2_1() {
///传递两个参数
$.get(basePath + "/api/params/testGet2_1/11111/22222", {}, function (data) {
alert(" URL传递参数---后台返回来的参数:" + data);
});
}
运行结果:
三、SpringMVC的自动匹配
1、GET请求方式传递参数
后台代码:
/**
* springMVC的自动匹配参数(GET请求方式)
*
* 形参paramName会自动匹配请求中key为paramName的参数值。
*
* 可以接收AJAX封装的请求参数
*
* @param paramName
*/
@GetMapping("/testGet3")
public String testGet3(String paramName,String paramName1, Model model){
System.out.println("paramName:"+paramName);
System.out.println("paramName1:"+paramName1);
model.addAttribute("paramName",paramName);
return paramName;
}
前台代码:
/**
* SpringMVC自动匹配参数(GET请求方式)
*
* @author: chenlw
* @date 2018/10/2 23:40
**/
function testGet3() {
$.get(basePath + "/api/params/testGet3?paramName=111¶mName1=222", {}, function (data) {
alert("SpringMVC自动匹配参数---后台返回来的参数:" + data);
});
}
运行结果:
2、POST请求方式传递参数
后台代码:
/**
* springMVC的自动匹配参数(POST请求方式)
*
* 形参paramName会自动匹配请求中key为paramName的参数值。
*
* 可以接收AJAX封装的请求参数
*
* @param paramName
*/
@PostMapping("/testPost3")
public String testPost3(String paramName,String paramName1, Model model){
System.out.println("paramName:"+paramName);
System.out.println("paramName1:"+paramName1);
model.addAttribute("paramName",paramName);
return paramName;
}
前台代码:
/**
* SpringMVC自动匹配参数(POST请求方式)
*
* @author: chenlw
* @date 2018/10/2 23:40
**/
function testPost3() {
$.post(basePath + "/api/params/testPost3?paramName=111¶mName1=222", {}, function (data) {
alert("SpringMVC自动匹配参数---后台返回来的参数:" + data);
});
}
运行结果:
四、SpringMVC的自动装箱(实体类接收参数)
实体类定义如下:
@Data
@Accessors(chain = true)
public class ParamsEntity {
String param1;
String param2;
}
1、GET请求方式传递参数
后台代码:
/**
* SpringMVC的自动装箱(GET请求方式)
*
* SpringMVC会把请求参数装箱到实体类的属性当中,属性名称就是参数名称
*
* @param paramsEntity
* @return
*/
@GetMapping("/testGet4")
public String testGet4(ParamsEntity paramsEntity){
System.out.println("params:"+paramsEntity.toString());
return paramsEntity.toString();
}
前台代码:
/**
* SpringMVC自动装箱(GET请求方式)
*
* @author: chenlw
* @date 2018/10/2 23:40
**/
function testGet4() {
var data = {};
data.param1 = "123";
data.param2 = "2233";
$.get(basePath + "/api/params/testGet4", data, function (data) {
alert("SpringMVC自动装箱---后台返回来的参数:" + data);
});
///使用GET请求方式传递参数
//SpringMVC自动装箱也可以把GET请求的参数自动装箱,将参数值装箱到实体类对应的属性上。
// $.get(basePath + "/api/params/test4?param1=11111¶m2=22222", {}, function (data) {
// alert("后台返回来的参数:" + data);
// });
}
运行结果:
2、POST请求方式传递参数
后台代码:
/**
* SpringMVC的自动装箱(POST请求方式)
*
* SpringMVC会把请求参数装箱到实体类的属性当中,属性名称就是参数名称
*
* @param paramsEntity
* @return
*/
@PostMapping("/testPost4")
public String testPost4(ParamsEntity paramsEntity){
System.out.println("params:"+paramsEntity.toString());
return paramsEntity.toString();
}
前台代码:
/**
* SpringMVC自动装箱(POST请求方式)
*
* @author: chenlw
* @date 2018/10/2 23:40
**/
function testPost4() {
var data = {};
data.param1 = "123";
data.param2 = "2233";
$.post(basePath + "/api/params/testPost4", data, function (data) {
alert("SpringMVC自动装箱---后台返回来的参数:" + data);
});
}
运行结果:
五、结言
以上几种就是常用的后台接收前台请求参数的方法。
Demo下载地址:https://download.csdn.net/download/qq_33721382/10700642
Github:https://github.com/chenliwu/SpringMVCParameterDemo