SpringBoot封装响应数据实现过程详解

 更新时间:2023年05月12日 11:04:19   作者:春哥的魔法书  
这篇文章主要介绍了SpringBoot封装响应数据实现过程,SpringBoot响应数据封装是指在SpringBoot应用程序中,将返回的数据进行封装,以便于前端页面或其他客户端使用,感兴趣想要详细了解可以参考下文

业务处理

这是通过 Spring 在 Controller中注入Service模型层

而在 Service模型层 结合 Mybatis / Mybatis-Plus 进行数据加工, 数据持久化

封装响应值

将 业务处理得到数据封装到 Model作用域中, 伴随着转页将信息传递到页面

传值容器

Model

在Controller中新建立 方法 test08, 并在参数中增加 Model, 注意导包

通过 Model 的 .addAttribute(key, value); 封装数据

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.ui.Model;
@Controller
public class TestController {
    @RequestMapping("/test/test08")
    public String test08(Model model){
        // 封装数据
        model.addAttribute("data", "这是要响应的动态信息");
        System.out.println(" controller 中的测试方法 test 08 ");
        return "ref";
    }
}

修改ref.html页面 使用 thymeleaf 接值

<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    hello spring boot <br>
    <span th:text="${data}"></span>
</body>
</html>

在 浏览器中测试, 页面显示接收到的信息

ModelMap

Model 类 有个简化版本 ModelMap ,

因为此类是继承自 HashMap, 所以可以使用.put( "key", value);进行数据封装

当然还是可以使用 .addAttribute("key", value); , 推荐使用这个方法 , 相比 put()方法, 这个方法增加验证代码

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.ui.ModelMap;
@Controller
public class TestController {
    @RequestMapping("/test/test09")
    public String test09(ModelMap modelMap){
        // 封装数据
        // modelMap.put("data", "这是要响应的动态信息");
        modelMap.addAttribute("data", "这是要响应的动态信息");
        System.out.println(" controller 中的测试方法 test 09 ");
        return "ref";
    }
}

HttpServletRequest

本质上 Model 相当于 Request 作用域 , SpringBoot 也提供了 Request的使用

同样 可以使用参数传入 , 如 : test10

也可以通过 Spring 的依赖注入方式 , 如 : test11

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
@Controller
public class TestController {
    @Autowired
    private HttpServletRequest request;
    @RequestMapping("/test/test11")
    public String test11(){
        // 封装数据
        request.setAttribute("data", "这是要响应的动态信息");
        System.out.println(" controller 中的测试方法 test 11 ");
        return "ref";
    }
    @RequestMapping("/test/test10")
    public String test10(HttpServletRequest request){
        // 封装数据
        request.setAttribute("data", "这是要响应的动态信息");
        System.out.println(" controller 中的测试方法 test 10 ");
        return "ref";
    }
}

重定向传值

在SpringBoot 中 重定向 就是 一个方法执行完, 再对另一个方法发请求

这时通过 Model 就不能传递值, 可以通过 RedirectAttributes 传值

从 test12 重定向 到 test13 以 data 为标识进行传值

    @RequestMapping("/test/test12")
    public String test12(RedirectAttributes redirectAttributes){
        // 封装数据
        redirectAttributes.addAttribute("data", "这是重定向传递的信息");
        System.out.println(" controller 中的测试方法 test 12 ");
        return "redirect:test13";
    }
    @RequestMapping("/test/test13")
    public String test13(String data){
        System.out.println("data = " + data);
        System.out.println(" controller 中的测试方法 test 13 ");
        return "ref";
    }

到此这篇关于SpringBoot封装响应数据实现过程详解的文章就介绍到这了,更多相关SpringBoot封装响应数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Java实现多线程的三种方式

    详解Java实现多线程的三种方式

    这篇文章主要为大家详细介绍了Java实现多线程的三种方式,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 详解JAVA Stream流

    详解JAVA Stream流

    这篇文章主要介绍了JAVA Stream流的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • java如何实现判断文件的真实类型

    java如何实现判断文件的真实类型

    本篇文章主要介绍了java如何实现判断文件的真实类型,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • mybatis-plus多表分页查询最佳实现方法(非常简单)

    mybatis-plus多表分页查询最佳实现方法(非常简单)

    这篇文章主要给大家介绍了关于mybatis-plus多表分页查询最佳实现方法,文中介绍的方法非常简单,MyBatis-Plus中分页查询是比较方便的,这个功能在网站中也是非常常用的,这方面的知识点是必备的知识点,需要的朋友可以参考下
    2023-08-08
  • Java Netty HTTP服务实现过程解析

    Java Netty HTTP服务实现过程解析

    这篇文章主要介绍了Java Netty HTTP服务实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Spring中使用Async进行异步功能开发实战示例(大文件上传为例)

    Spring中使用Async进行异步功能开发实战示例(大文件上传为例)

    本文以大文件上传为例,首先讲解在未进行程序异步化时,程序的运行机制和具体表现,然后讲解如何进行异步化的改造,让程序进行异步执行,通过本文不仅能让你掌握如何进行Event的事件开发,同时还能掌握在Spring中如何进行异步开发,熟悉@Async的具体用法,感兴趣的朋友一起看看吧
    2024-08-08
  • Java线程安全中的原子性浅析

    Java线程安全中的原子性浅析

    这篇文章主要介绍了Java线程安全中的原子性,原子性是指一条线程在执行一系列程序指令操作时,该线程不可中断。一旦出现中断,那么就可能会导致程序执行前后的结果不一致
    2023-02-02
  • Java 虚拟机栈详解分析

    Java 虚拟机栈详解分析

    在线程创建时,JVM会为每个线程创建一个单独的栈空间。JVM的栈内存不需要是连续的。JVM在栈上会进行两个操作:压入和弹出栈帧。对于一个特定的线程来说,栈被称为运行时栈。这个线程调用的每个方法会被存储在响应的运行时栈里,包括了参数,局部变量,计算媒介和其他数据
    2021-11-11
  • Java 反射机制

    Java 反射机制

    这篇文章简要的说明了Java的反射机制,Java的反射是框架设计的灵魂,本文通过例子能看的更加清晰的理解
    2021-06-06
  • 详解Spring如何扫描自定义的注解

    详解Spring如何扫描自定义的注解

    本文给大家详细介绍了Spring如何扫描自定义的注解,在Spring中,可以使用注解来实现依赖注入、AOP等功能,同时,Spring也支持自定义注解,使得开发人员可以更灵活地使用注解,需要的朋友可以参考下
    2024-02-02

最新评论