在JavaWeb中,通常会使用一个名为Result
的类来表示控制器方法的执行结果。这个类的作用是封装了控制器方法执行后的返回结果,包括要返回的数据、跳转的视图等信息。Result
类通常具有以下属性和方法:
- 数据属性:用于存储要返回给前端的数据,例如一个对象或者一个集合。
- 视图路径属性:用于存储要跳转的视图路径,通常是一个JSP页面的路径。
- 重定向标志属性:用于表示是否进行重定向操作。
- 错误信息属性:用于存储发生错误时的错误信息。
- 构造方法:用于创建
Result
对象,并设置其中的属性。 - Getter和Setter方法:用于获取和设置
Result
对象的属性值
使用Result
类可以提高代码的可读性、可维护性和可扩展性,是一种常见的在JavaWeb开发中处理控制器方法返回结果的方式。
使用Result
类的好处有几点:
- 封装性:
Result
类封装了控制器方法的执行结果,将数据、视图路径、重定向标志和错误信息等相关信息封装在一个对象中,使得控制器方法的返回结果更加清晰和统一。 - 灵活性:通过
Result
类可以灵活地处理不同情况下的返回结果。可以根据业务需求设置要返回的数据、跳转的视图路径,以及是否进行重定向等操作。 - 统一规范:使用
Result
类可以统一规范控制器方法的返回格式,使得不同的控制器方法返回的结果具有一致的格式和结构,方便前端页面对返回结果的处理和展示。 - 错误处理:
Result
类可以用于统一处理错误情况,例如用户不存在、权限不足等情况,通过设置错误信息和错误视图路径,可以向用户提供友好的错误提示页面。 - 可扩展性:
Result
类可以根据业务需求进行扩展,例如添加其他属性或方法,以满足特定业务场景下的需求。
背景
实际上我们之前所有的springboot程序都设置了响应
响应给客户端服务器
而这些都依赖一个注解 ResponseBody
修饰注解的注解叫做源注解
@ResponseBody
如果加上这个注解 当前类下 方法的所有返回值都会作为响应数据返回给浏览器
如果是数组或者是集合 会自动转换成json
返回值不同
通过RequestBody处理后返回给前端的也不同
那么前端解析数据的方式五花八门
增加了成本
导致了项目不变管理 难以维护
所以我们设置了一个统一的响应结果
通用性
这样项目的管理和维护就变得很容易
Result类 代码
自己整的 手搓了一个简单的Result不需要引入依赖
code响应码 和前端的一个约定
message提示信息
data返回的数据 对于一些查询的数据返回查询数据我们都返回给data数据里面
之后前端拿回的所有数据都是这样的一种格式的数据
只需要对这一种数据进行解析就行了
package com.bigdata.pojo; public class Result{ private Integer code; private String msg; private Object 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; } //定义静态方法 帮助我们快速构造result对象 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 success(String msg){ return new Result(1,msg,null); } }
案例
package com.bigdata.springboottext; import com.sun.net.httpserver.Authenticator; import jakarta.servlet.http.HttpServletRequest; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import pojo.Address; import pojo.Result; import pojo.User; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; @RestController public class RequestController { @RequestMapping("/hello") public Result Param1(){ System.out.println("Hello World"); return new Result(1,"success","Hello world"); } @RequestMapping("/hi") public Result Param2(){ System.out.println("Hello World"); return Result.success("Hello world"); } @RequestMapping("/list") public Result Param3(){ List<Address>list=new ArrayList<>(); Address addr=new Address(); addr.setProvince("江苏"); addr.setCity("扬州"); list.add(addr); return Result.success(list); } }
启动springboot
发送请求
这样前端就能获得格式化的数据
降低了维护难度和成本
不管哪个方法返回给前端的数据格式是一定的
所以我们就可以 方便管理 方便维护 降低维护成本