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

作者:春哥的魔法书 时间:2023-01-17 21:32:51 

业务处理

这是通过 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>

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

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

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";
   }

来源:https://blog.csdn.net/yuanchun05/article/details/130629864

标签:SpringBoot,封装,响应数据
0
投稿

猜你喜欢

  • 关于@Entity和@Table注解的用法详解

    2022-05-15 15:29:04
  • java日期时间操作工具类

    2022-09-03 13:04:58
  • DoytoQuery中关于N+1查询问题解决方案详解

    2022-06-14 12:03:07
  • Java二维数组查找功能代码实现

    2023-01-04 19:47:17
  • Android自定义控件之电话拨打小键盘

    2022-11-17 21:52:08
  • 使用SpringBoot配置https(SSL证书)

    2022-04-03 19:37:00
  • 详解JAVA 弱引用

    2022-03-12 01:30:29
  • JS+Struts2多文件上传实例详解

    2022-02-18 21:08:02
  • 简述Java编程之关系操作符

    2021-08-07 09:44:23
  • 关于C#线程的全面解析

    2021-08-14 11:14:59
  • Android实现背景图滑动变大松开回弹效果

    2022-10-15 10:45:15
  • Java实现的对称加密算法AES定义与用法详解

    2021-10-16 22:16:05
  • RocketMQ消息生产者是如何选择Broker示例详解

    2023-11-10 21:45:49
  • C#实现一阶卡尔曼滤波算法的示例代码

    2022-12-23 05:28:45
  • spring mvc中@PathVariable / 带斜杠方式获取

    2022-09-15 04:47:27
  • C#集合遍历时删除和增加元素的方法

    2021-12-11 18:53:24
  • 基于OpenCv与JVM实现加载保存图像功能(JAVA 图像处理)

    2021-12-27 23:09:33
  • Android平台预置GMS包后关机闹钟失效问题及解决方法

    2022-12-31 05:52:33
  • Android从源码的角度彻底理解事件分发机制的解析(下)

    2023-09-21 11:23:59
  • Android权限HaloPermission详细使用

    2021-08-18 07:14:46
  • asp之家 软件编程 m.aspxhome.com