網站首頁 編程語言 正文
從控制器類向前端頁面跳轉時,傳遞參數
modelandview 中的model
1.原生方式request
thymeleaf 獲得要訪問頁面的string 值之后,加上前綴加上后綴 ,請求轉發,跳轉至該頁面,所以可以直接設置請求的參數。
點我使用原生的request設置request的attribute
?控制方法:
@RequestMapping(value = "yuansheng_request")
public String display_yuansheng_request_attribute(HttpServletRequest request)
{ request.setAttribute("name","zyk");
//thymeleaf加上前后綴之后,請求轉發方式跳轉該頁面,所以可以使用request設置請求
return "sucess";
}
?sucess頁面:
servlet原生方式獲取數據:
?2.原生session方式
點我使用原生設置session的attribute
?控制方法
@RequestMapping(value = "/test_session")
public String display_session(HttpSession session)
{
session.setAttribute("sesson","session_zyk");
return "sucess";
}
?success頁面
session獲取:
3.原生application方式
@RequestMapping(value = "/test_application")
public String display_application(HttpSession session)
{
ServletContext application= session.getServletContext();
application.setAttribute("testapplication","application_zyk");
return "sucess";
}
點我使用原生設置application的attribute
success頁面?
application獲取:
4.ModelAndView設置參數(官方推薦)
點我使用ModelAndView設置request的attribute
控制方法:?
@RequestMapping(value = "ModelAndView_request")
public ModelAndView display_modelandview()
{
ModelAndView mav=new ModelAndView();
mav.addObject("modelandview_name","zyk_mvn");
mav.setViewName("sucess");
return mav;
}
?sucess頁面
modelandview方式獲取:
5.model設置參數
控制方法
@RequestMapping(value = "/Model_Request")
public String display_model(Model model)
{
model.addAttribute("model_name","zyk_model");
System.out.println(model.getClass().getName());
return "sucess";
}
點我使用Model設置request的attribute
sucess頁面?
model方式獲取:
6.map方式設置參數
點我使用testMap設置request的attribute
?控制方法
@RequestMapping(value = "/testMap")
public String display_model(Map map)
{
map.put("test_map","zyk_map");
System.out.println(map.getClass().getName());
return "sucess";
}
success頁面
map方式獲取:
7.modelmap設置參數
點我使用testMap設置request的attribute
@RequestMapping(value = "/testmodelmap")
public String display_model(ModelMap modelmap)
{
modelmap.addAttribute("testscope","zyk_modelmap");
System.out.println(modelmap.getClass().getName());
return "sucess";
}
success頁面
modelmap方式獲取:
學習源碼
在每個方法設置參數的地方打斷點debug調試,在方法棧(就是進入棧中的方法,方法只有進入棧中才可以執行)中,
發現他們都被DispatcherServlet方法調用了
即DispatcherServlet是先于控制方法中的添加屬性語句(?modelmap.addAttribute("testscope","zyk_modelmap");舉個栗子)執行的,并在執行過程中調用了控制方法中添加屬性的語句
?DispatherServlet這個方法,點進去會發現是這一句 mv=....
而mv是個modelandview對象? ? ? ? ?所以得出結論如下
?看源碼的結論:不管用如上的哪種方式,即使是原生request,也會把請求數據放入model,請求頁面放入view,最后返回一個modelandview對象
驗證:
在mv=...下面打個斷點,等它執行完控制器中添加的屬性的語句,會發現?mv中已經有剛才傳遞的數據了
原文鏈接:https://blog.csdn.net/sharesb/article/details/124356839
相關推薦
- 2022-12-29 Kotlin面向對象知識點講解_Android
- 2023-06-18 c#關于非托管內存的釋放問題及解讀_C#教程
- 2022-06-06 C++中隊列queue的用法實例詳解_C 語言
- 2022-12-04 C#實現Oracle批量寫入數據的方法詳解_C#教程
- 2022-06-04 Jenkins初級應用Publish?Over?SSH插件配置_安裝教程
- 2023-03-01 shell?創建子進程及并行延時執行命令方法_linux shell
- 2022-08-20 python?tkinter庫的Text記錄點擊路經和刪除記錄詳情_python
- 2022-08-10 Python進階學習修改閉包內使用的外部變量_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支