本文标识 : jsbt0003
本文编辑 : Jack 风
编程工具 : IDEA
阅读时长 : 7分钟
::: 参数传递: 参数传递可以说是服务端和外界沟通的主要方式, 这节是非常重要的! :::
本节内容包括:
通过url传参
|---get方式Url传参
|---@PathVariable 即:url/id/2019 形式
|---@RequestParam 即:url?username=a2data形式
|---POST方式传参
|---@RequestParam
|---请求体中加入文本
配置文件传参
@PathVariable
@RestController
public class HelloController {
@GetMapping("/hello/{name}")
public String hello(@PathVariable("name") String name){
// 形参的name可以随意
System.out.println("获取到的name是:"+name);
return "hello ,您好,感谢 "+name+"对A2Data的关注";
}
}
@RequestParam 如果请求参数的名字跟方法中的形参名字一致可以省略@RequestParam("name")
@GetMapping("/hello")
public String hello(@RequestParam("name") String name){
System.out.println("获取到的name是:"+name);
return "hello "+name;
}
@RequestParam+默认参数
@GetMapping("/hello")
public String hello(@RequestParam(value = "name",defaultValue = "a2data") String name){
System.out.println("获取到的name是:"+name);
return "hello "+name;
}
注意:如果没有指定默认值,并且没有传递参数将会报错
RequiredStringparameter'name'isnotpresent
:name参数没有提供
@GetMapping("/hello")
public String hello(@RequestParam(value = "name",required = false) String name){
System.out.println("获取到的name是:"+name);
return "hello "+name;
}
@RestController
public class HelloController {
public static Logger log = LoggerFactory.getLogger(HelloController.class);
@PostMapping("/user")
public String add(@RequestParam("name") String name,@RequestParam("age") Integer age){
log.info(name+" "+age);
return "name:"+name+"\nage:"+age;
}
}
post不能用浏览器直接访问,这里用Postman测试:
通过HttpServletRequest获取输入流
@PostMapping("/PostString")
public String postString(HttpServletRequest request) {
ServletInputStream is = null;
try {
is = request.getInputStream();
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[1024];
int len = 0;
while ((len = is.read(buf)) != -1) {
sb.append(new String(buf, 0, len));
}
System.out.println(sb.toString());
return sb.toString();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
if (is != null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@PostMapping("/save")
@ResponseBody
public Map<String,Object> save(@RequestBody User user){
Map<String,Object> map = new HashMap<String,Object> ();
map.put("user",user);
return map;
}
@PostMapping("/user")
public String user(@RequestBody User user){
log.info(user.toString());
return null;
}