您现在的位置是:首页 >学无止境 >SpringBoot ( 五 ) 封装响应数据网站首页学无止境

SpringBoot ( 五 ) 封装响应数据

春哥的魔法书 2024-06-15 18:01:02
简介SpringBoot ( 五 ) 封装响应数据

2.6.业务处理

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

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

2.7.封装响应值

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

2.7.1.传值容器

2.7.1.1.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>

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

在这里插入图片描述

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

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

2.7.2.重定向传值

在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";
    }
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。