SpringBoot基础使用章节,如何用各种奇妙姿势接住前端传过来的值~
获取参数方式1:获取XXX/XXX?user=XXX这种方式的参数
// 获取参数方式1:获取XXX/XXX?user=XXX这种方式的参数
@RequestMapping("/get")
public void get (@RequestParam(name = "user") String user){
System.out.println("接收到参数:"+user);
return "接收到参数:"+user;
}
获取参数方式2:获取路径参数,RestFull风格入参
// 获取参数方式2:获取路径参数,RestFull风格入参
@GetMapping("/path/{user}")
public String path(@PathVariable(name = "user") String user){
System.out.println("接收到参数:"+user);
return "接收到参数:"+user;
}
获取参数方式3:post请求JSON数据格式,各参数名与POJO定义的字段一样
public class Users implements Serializable {
private String name;
private int age;
private Character sex;
@Override
public String toString() {
return "Users{" +
"name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}';
}
}
// 获取参数方式3:post请求JSON数据格式,各参数名与POJO定义的字段一样
@PostMapping("/post/same")
public String same(@RequestBody Users users){
System.out.println("JSON 接到的:"+users.toString());
return "JSON 接到的:"+users.toString();
}
获取参数方式4:获取到请求头参数(一般权限校验可以把授权信息身份信息放header传)
@GetMapping("/heade")
public String heade(@RequestHeader(name = "Content-Type") String contentType, @RequestHeader(name = "Authorization") String authorization){
System.out.println(contentType+"------"+authorization);
return contentType+"------"+authorization;
}
获取参数方式5:post请求JSON数据格式,各参数名与POJO定义的字段完全不一样(需要引入fastJson依赖)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.57</version>
</dependency>
@PostMapping("/fastJson")
public String fastJson(@RequestBody JSONObject param){
System.out.println("JSON :"+param.toJSONString());
return "JSON :"+param.toJSONString();
}
获取参数方式6:post请求JSON数据格式,各参数名与POJO定义的字段完全不一样, 通过HttpServletRequest获取(需要引入fastJson依赖)这种比较麻烦,应该正常使用都不会这样玩
@PostMapping("/httpServletRequest")
public String httpServletRequest(HttpServletRequest param){
JSONObject jsonParam = null;
try {
// 获取输入流
BufferedReader streamReader = new BufferedReader(new InputStreamReader(param.getInputStream(), "UTF-8"));
// 写入数据到Stringbuilder
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = streamReader.readLine()) != null) {
sb.append(line);
}
jsonParam = JSONObject.parseObject(sb.toString());
// 直接将json信息打印出来
System.out.println("转换出来的JSON:"+jsonParam.toJSONString());
} catch (Exception e) {
e.printStackTrace();
}
return "转换出来的JSON:"+jsonParam.toJSONString();
}
获取参数方式7:get或者post请求,都直接用HttpServletRequest接收
@RequestMapping("/testDemo")
public String testDemo(HttpServletRequest request){
String users = request.getParameter("users");
System.out.println("参数:"+users);
return "参数:"+users;
}
这里注意一个误区,就是不一定get请求就只能拼接在URL后,不一定POST请求参数只能放BODY体,其实两种请求方式并无本质上区别。详情请看另外一篇博客:get和post的区别误区
获取参数方式8:get或者post请求,参数名对应的话可以直接获取
@RequestMapping("/sameParamName")
public String sameParamName(String users , String id){
System.out.println("users:"+users+"id: "+id);
return "users:"+users+"id: "+id;
}