網站首頁 編程語言 正文
前言
寫代碼的時候經常遇到model傳值或者HttpServletRequest傳值發現都可以
那兩種的區別在于哪里呢
此處push出代碼展示區別何在
//實現登判斷,并進行相應的跳轉
@RequestMapping("/login")
public String login(String name , String pwd, HttpServletRequest request){
Admin admin = adminService.login(name,pwd);
if(admin != null){
request.setAttribute("admin",admin);
//登錄成功
return "main";
}else{
//登錄失敗
request.setAttribute("errmsg","用戶名或密碼不正確!");
return "login";
}
}
以及通過model書寫的代碼模塊
//實現登判斷,并進行相應的跳轉
@RequestMapping("/login")
public String login(String name , String pwd, Model model){
Admin admin = adminService.login(name,pwd);
if(admin != null){
model.addAttribute("admin",admin);
//登錄成功
return "main";
}else{
//登錄失敗
model.addAttribute("errmsg","用戶名或密碼不正確!");
return "login";
}
}
可以看到兩者的區別在于函數名字不同而已
那其中蘊涵的原理又是如何
1. 定義
1.1 HttpServletRequest
HttpServletRequest對象代表客戶端的請求,當客戶端通過HTTP協議訪問服務器時,HTTP請求頭中的所有信息都封裝在這個對象中
,通過這個對象提供的方法,可以獲得客戶端請求的所有信息
具體其功能函數有如下:
函數 | 功能 |
---|---|
getRequestURL | 返回客戶端請求時的完整URL |
getQueryString | 返回請求行中的參數部分 |
getPathInfo | 返回請求URL中的額外路徑信息 |
getRemoteAddr | 返回發出請求的客戶機的IP地址 |
getRemoteHost | 返回發出請求的客戶機的完整主機名 |
getRemotePort | 返回客戶機所使用的網絡端口號 |
getLocalAddr | 返回WEB服務器的IP地址 |
getLocalName | 返回WEB服務器的主機名 |
1.2 model
關于model的這個類
- 只傳輸數據而不會自動尋址,由于model的每次請求會自動創建對象,所以不用new
ModelAndView會自動尋址,就會鏈接到WebCotent下的view,modelandview請求不會自動創建對象,每次使用都要new
關于ModelAndView這個類可以看我之前的文章
SpringMVC之ModelAndView類詳細分析(全)
srpingMVC內部機制決定的,請求處理方法執行完成后,最終返回一個 ModelAndView 對象。
model數據最終還是寫到HttpServletRequest屬性中,只是model的寫法更體現了MVC思想減少各層間耦合
2. 總結
- Model是每次請求中都存在的默認參數,利用其addAttribute()方法即可將服務器的值傳遞到jsp頁面中;
- ModelAndView包含model和view兩部分,使用時需要自己實例化,利用ModelMap用來傳值,也可以設置view的名稱
關于其寫法的具體展示
具體如下:
- 1.
request.setAttribute("name","manongyanjiuseng");
//把值存到request
其取值具體是通過request.getAttribute(“manongyanjiuseng”) - 2.
modelMap.addAttribute("name","manongyanjiuseng");
//把值存到modelMap
其取值具體是通過${manongyanjiuseng} - 3.
model.addAttribute("name","manongyanjiuseng");
//把值存到model
其取值具體是通過${manongyanjiuseng} - 4.
request.getSession.setAttribute("name","manongyanjiuseng");
//先獲取,在把值存到Session
其取值具體是通過request.getSession().getAttribute(“manongyanjiuseng”)
以上取值中${manongyanjiuseng}這種方式是最快的
也就是model和HttpServletRequest,model的取值比較快
原文鏈接:https://blog.csdn.net/weixin_47872288/article/details/122362891
相關推薦
- 2022-12-22 C語言中字母大小寫轉化簡單示例_C 語言
- 2022-07-10 使用Docker安裝RabbitMQ
- 2023-02-06 python?wordcloud庫實例講解使用方法_python
- 2022-07-15 C++?DLL動態庫的創建與調用(類庫,隱式調用)_C 語言
- 2024-03-10 【Redis】Redis 的主從同步
- 2022-04-25 C#關于Func和Action委托的介紹詳解_C#教程
- 2023-03-22 R語言基礎數據類型的具體使用_R語言
- 2022-06-16 golang組件swagger生成接口文檔實踐示例_Golang
- 最近更新
-
- 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同步修改后的遠程分支