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