在web的前后端分离开发过程中,前端发送请求给后端,后端接收请求,响应数据给前端
前端发送数据进行请求
在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。
代码样例:
- //原始方式
- @RequestMapping("/simpleParam")
- public String simpleParam(HttpServletRequest request){
- //获取请求参数
- String name=request.getParameter("name");
- String ageStr=request.getParameter("age");
-
- int age=Integer.parseInt(ageStr);
- System.out.println(name+":"+age);
- return "OK";
- }
前端测试发送的请求:

简单参数:参数名与形参变量名相同,定义形参即可接收参数。
- //方式1
- @RequestMapping("/simpleParam")
- public String simpleParam(String name,Integer age ){
- System.out.println(name+":"+age);
- return "OK";
- }

简单参数: 如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 完成映射。
- //方式2
- @RequestMapping("/simpleParam")
- //这里设置name不是必须传入参数
- public String simpleParam(@RequestParam(name="name" ,required = false) String username, Integer age ){
- System.out.println(username+":"+age);
- return "OK";
- }

注意:@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false。
SpringBoot方式会自动进行类型转换,如上面的age
请求参数名与形参对象属性名相同,定义POJO接收即可

如果对象里面有另一个对象,方式如下:
两个对象如下:
- public class User {
- private String name;
- private Integer age;
-
- private Address address;
- }
- public class Address {
- private String province;
- private String city;
- }
get,set等其他方法已省略
接收方式还是不变如上
- //2. 实体参数
- @RequestMapping("/complexPojo")
- public String complexPojo(User user){
- System.out.println(user);
- return "OK";
- }
发送请求样例如下:

变化是多加了“点”进行访问
数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系

日期参数:使用 @DateTimeFormat注解完成日期参数格式转换


后端响应数据给前端

注意转换为JSON格式
代码样例:
- //响应字符串
- @RequestMapping("/hello")
- public String hello(){
- System.out.println("Hello World ~");
- return "Hello World ~";
- }
-
- //响应对象
- @RequestMapping("/getAddr")
- public Address getAddr(){
- Address addr = new Address();
- addr.setProvince("广东");
- addr.setCity("深圳");
- return addr;
- }
-
- //响应集合
- @RequestMapping("/listAddr")
- public List<Address> listAddr(){
- List<Address> list = new ArrayList<>();
-
- Address addr = new Address();
- addr.setProvince("广东");
- addr.setCity("深圳");
-
- Address addr2 = new Address();
- addr2.setProvince("陕西");
- addr2.setCity("西安");
-
- list.add(addr);
- list.add(addr2);
- return list;
- }
运行后样例:
响应字符串:
- {
- "code": 1,
- "msg": "success",
- "data": "Hello World ~"
- }
响应对象:
- {
- "code": 1,
- "msg": "success",
- "data": {
- "province": "广东",
- "city": "深圳"
- }
- }
响应集合:
- {
- "code": 1,
- "msg": "success",
- "data": [
- {
- "province": "广东",
- "city": "深圳"
- },
- {
- "province": "陕西",
- "city": "西安"
- }
- ]
- }
好处就是只要返回result一个结果,提高代码复用性

代码样例
- @RequestMapping("/hello")
- public Result hello(){
- System.out.println("Hello World ~");
- //return new Result(1,"success","Hello World ~");
- return Result.success("Hello World ~");
- }
-
- @RequestMapping("/getAddr")
- public Result getAddr(){
- Address addr = new Address();
- addr.setProvince("广东");
- addr.setCity("深圳");
- return Result.success(addr);
- }
-
- @RequestMapping("/listAddr")
- public Result listAddr(){
- List list = new ArrayList<>();
-
- Address addr = new Address();
- addr.setProvince("广东");
- addr.setCity("深圳");
-
- Address addr2 = new Address();
- addr2.setProvince("陕西");
- addr2.setCity("西安");
-
- list.add(addr);
- list.add(addr2);
- return Result.success(list);
- }
Result对象代码:
- package com.ithema.pojo;
-
- /**
- * 统一响应结果封装类
- */
- public class Result {
- private Integer code ;//1 成功 , 0 失败
- private String msg; //提示信息
- private Object data; //数据 data
-
- public Result() {
- }
- public Result(Integer code, String msg, Object data) {
- this.code = code;
- this.msg = msg;
- this.data = data;
- }
- public Integer getCode() {
- return code;
- }
- public void setCode(Integer 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;
- }
-
- 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);
- }
-
- @Override
- public String toString() {
- return "Result{" +
- "code=" + code +
- ", msg='" + msg + '\'' +
- ", data=" + data +
- '}';
- }
- }