如何接收参数:
接收 来自前端(浏览器)传过来的 地址上的参数(参数有多种)!!!!!
我们重点学习:如何接收前端发送的各种类型的参数;!!!!!!
1.param和json
(1)param和JSON的对比:
1.param参数形式:
key=value & key=valeu
2.json参数形式:
{key:value,key:value}
3.param 和 JSON 两种参数形式的比较:
(1)参数编码:
param:Ascall编码; JSON:UTF-8;
(2)参数顺序:
param:参数没有顺序;
JSON:参数有顺序;
(3)数据类型:
param:只支持字符串类型; eg:在前端传来参数:name=张三&age=18 最终都会转换成字符串类型;
json:可以装多种;
(4)嵌套性:
param:无嵌套:只有1层
json:可以无限嵌套,只要符号json的格式;
(5)可读性:
简单的参数:param读起来较为简单
复杂的参数:json读起来清晰;
注意:一般使用JSON,且JSON格式传递要求请求方式必须是POST;!!!!!!!!!
2.param方式如何接收参数:
(2)如何接收前端发送的Json和param类型的参数
接收方式有三种:
1.直接接收:
2.注解指定
3.特殊值
4.使用实体类对象接收;
@RequestMapping("/data")
@ResponseBody
public String data(String name,int age){
System.out.println("name = " + name + ", age = " + age);
return "name =" +name+"age ="+age;
}
@RequestMapping("/data1")
@ResponseBody
public String data1(@RequestParam(value = "account") String name, //value:指定参数名,请求参数必须传account!!!!
@RequestParam(required = false,defaultValue = "1") int page){
System.out.println("name = " + name + ", page = " + page);
return "name = " + name + ", page = " + page;
}
@RequestMapping("/data2")
@ResponseBody
public String data2(@RequestParam List<String> hbs){
System.out.println("hbs = " + hbs);
return "ok";
}
@RequestMapping("/data3")
@ResponseBody
public String data3(User user){
System.out.println("user = " + user);
return user.toString();
}
}
3.路径参数接收:
eg:原来:/user/login?account=root&password=123456
路径传参:/user/login/root/123456:这个root和"123456"本身已经是参数了;
实现步骤:
1.设置动态路径:即使用@RequeatMapping({key1},{key2});
2.接收动态路径参数 :在方法形参中必须使用@PathVariable注解指定参数
因为(String username,String password)是用来接收Param格式的参数的!!!!!
而@PathVariable才是用来接收路径参数的!!!!!!!!;
路径参数演示:
eg: /path/root/密码
*/
@Controller
@RequestMapping("path")
@ResponseBody
public class PathController {
@RequestMapping("{account},{password}")
public String login(@PathVariable(value = "account") String username, @PathVariable String password){
System.out.println("username = " + username + ", password = " + password);
return "username = " + username + ", password = " + password;
}
4.json参数接收:
学习目标:
:在前端发送json格式的请求:我们如何在后端进行接收;
Json格式的数据:前端必须使用 “ Post ”的方式进行请求;
Json是通过体进行发送的
1. Json:是在JS中的一种“ 对象 ”表达方式; 我们使用对应的 “ 实体类 ”进行接收就行了;
2.在handler方法形参处:使用@Request注解指定参数(因为json是放到请求体中的!!!)
3.在配置类最上方:加@EnableWebMvc
注意:@EnableWebMvc: 添加HandlerMapping、HandlerAdapter、以及json转换器
所以加上这个注解之后:我们就不需要在配置类中:写HandlerMapping、HandlerAdapter了!!!!!!!!!
eg:
/handler
@PostMapping("data")
public String data(@RequestBody Person person){
System.out.println("person = " + person);
return person.toString();
}
5.选择请求方式、设计请求参数、请求路径:
(1)
没有请求体:
获取:get
删除:delete
这两种可以使用: /url +路径参数
/url ? +param
注意:使用get/delete 时
1.当参数是id标识时:,选择使用路径传递参数!!!
eg:根据id删除/查询数据:--->: /模块/id
2.当参数不是id,是范围参数时:,选择使用param传递参数!!!
eg: param key=value;
(2)
有请求体:
保存:post
修改:put
这两种可以使用:
/url + 路径参数
/url ? + param
请求体传参(json)!!!一般使用json!!!
注意:当使用post时:我们一般使用请求体json!!!!!