SpringBoot封裝響應數據實現過程詳解
業(yè)務處理
這是通過 Spring 在 Controller中注入Service模型層
而在 Service模型層 結合 Mybatis / Mybatis-Plus 進行數據加工, 數據持久化
封裝響應值
將 業(yè)務處理得到數據封裝到 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", "這是要響應的動態(tài)信息");
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", "這是要響應的動態(tài)信息");
modelMap.addAttribute("data", "這是要響應的動態(tài)信息");
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", "這是要響應的動態(tài)信息");
System.out.println(" controller 中的測試方法 test 11 ");
return "ref";
}
@RequestMapping("/test/test10")
public String test10(HttpServletRequest request){
// 封裝數據
request.setAttribute("data", "這是要響應的動態(tài)信息");
System.out.println(" controller 中的測試方法 test 10 ");
return "ref";
}
}重定向傳值
在SpringBoot 中 重定向 就是 一個方法執(zhí)行完, 再對另一個方法發(fā)請求
這時通過 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封裝響應數據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java8中對于LocalDateTime的序列化和反序列化問題
這篇文章主要介紹了Java8中對于LocalDateTime的序列化和反序列化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06

