获取请求参数并响应:
响应:
在Controller类或方法上加上@ResponseBody注解,可以将方法返回值直接响应,如果返回值是实体对象或者集合,将转换为json格式响应。如下例:
@RestController=@ResponseBody+@Controller;(@Controller只能作用与类上)
将返回信息进行封装,固定响应信息的格式。
public class Result {private int code;private String msg;private Object data;public static Result success(Object data){return new Result(1,"success",data);}public static Result success(){return new Result(1,"success",null);}public static Result error(String msg){return new Result(0,msg,null);}public Result(int code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}public Result() {}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}@Overridepublic String toString() {return "Result{" +"code=" + code +", msg='" + msg + '\'' +", data=" + data +'}';}
}
获取请求参数
- 简单参数:
定义方法形参,请求参数名与形参变量名一致。
如果不一致,通过@RequestParam手动映射。
数据传递要使用基本类型的包装类,否则不传递此数据会报错,当使用了@RequestParam映射时,required默认为true,则此参数必须传递
@RestController
public class getParameter { @RequestMapping("/user/getUser")
// 数据传递要使用基本类型的包装类,否则不传递此数据会报错,当使用了@RequestParam映射时,required默认为true,则此参数必须传递public Result test1(@RequestParam(value="name",required=false) String username, Integer age){System.out.println(username+":"+age);return Result.success(username+":"+age);}
}
- 实体参数:
请求参数名,与实体对象的属性名一致,会自动接收封装参数。
//生成toString、set和get方法,如果生成了构造方法,一定要提供一个无参构造函数
public class User {private String name;private Integer age;private Integer sex;private Address address;
}
public class Address {private String privence;private String city;
}
@RequestMapping("/user/userObjectParameter")public Result test3(User user){System.out.println(user);return Result.success(user);}
- 数组集合参数:
数组:请求参数名与数组名一致,直接封装。
集合:请求参数名与集合名一致,@RequestParam绑定关系
// 数组@RequestMapping("/user/array")public Result test4(String[] habby){System.out.println(Arrays.toString(habby));return Result.success(habby);}
// 集合@RequestMapping("/user/list")public Result test5(@RequestParam List<String> habby){System.out.println(habby);return Result.success(habby);}
- 日期参数:
使用@DateTimeFormat定义接收日期的格式。
// 时间,根据ISO 8601规范,日期和时间之间应该用大写字母"T"分隔。@RequestMapping("/user/date")public Result test6(@DateTimeFormat(pattern="yyyy-MM-dd HH-mm-ss") LocalDateTime date){System.out.println(date);return Result.success(date.toString().replace("T"," "));}
- JSON参数:
使用@RequestBody绑定关系(注意请求方式为post)
// json@RequestMapping("/user/json")public Result test7(@RequestBody User user){System.out.println(user);return Result.success(user);}
- 路径参数
使用@PathVariable绑定关系
// 路径参数@RequestMapping("/userPath/{id}/{name}")public Result test8(@PathVariable String id, @PathVariable String name){System.out.println(id + ":" + name);return Result.success(id+":"+name);}