JavaWeb中用来定义统一的响应结果的result类

简介: JavaWeb中用来定义统一的响应结果的result类

在JavaWeb中,通常会使用一个名为Result的类来表示控制器方法的执行结果。这个类的作用是封装了控制器方法执行后的返回结果,包括要返回的数据、跳转的视图等信息。Result类通常具有以下属性和方法:

  1. 数据属性:用于存储要返回给前端的数据,例如一个对象或者一个集合。
  2. 视图路径属性:用于存储要跳转的视图路径,通常是一个JSP页面的路径。
  3. 重定向标志属性:用于表示是否进行重定向操作。
  4. 错误信息属性:用于存储发生错误时的错误信息。
  5. 构造方法:用于创建Result对象,并设置其中的属性。
  6. Getter和Setter方法:用于获取和设置Result对象的属性值

使用Result类可以提高代码的可读性、可维护性和可扩展性,是一种常见的在JavaWeb开发中处理控制器方法返回结果的方式。

使用Result类的好处有几点:

  1. 封装性Result类封装了控制器方法的执行结果,将数据、视图路径、重定向标志和错误信息等相关信息封装在一个对象中,使得控制器方法的返回结果更加清晰和统一。
  2. 灵活性:通过Result类可以灵活地处理不同情况下的返回结果。可以根据业务需求设置要返回的数据、跳转的视图路径,以及是否进行重定向等操作。
  3. 统一规范:使用Result类可以统一规范控制器方法的返回格式,使得不同的控制器方法返回的结果具有一致的格式和结构,方便前端页面对返回结果的处理和展示。
  4. 错误处理Result类可以用于统一处理错误情况,例如用户不存在、权限不足等情况,通过设置错误信息和错误视图路径,可以向用户提供友好的错误提示页面。
  5. 可扩展性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

发送请求

这样前端就能获得格式化的数据

降低了维护难度和成本

不管哪个方法返回给前端的数据格式是一定的

所以我们就可以 方便管理  方便维护  降低维护成本

目录
相关文章
|
6天前
|
安全 Java 编译器
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
|
6天前
|
安全 Java 编译器
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box&lt;T&gt;`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box&lt;T&gt;` 编译后变为 `Box&lt;Object&gt;`,从而实现无缝交互和减少内存开销。
|
28天前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
29 4
|
3月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
200 58
|
2月前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
3月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
3月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
104 8
|
3月前
|
Java
在Java中定义一个不做事且没有参数的构造方法的作用
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
|
3月前
|
Java Android开发
Eclipse 创建 Java 类
Eclipse 创建 Java 类
40 0
|
2天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
33 14

热门文章

最新文章