網(wǎng)站首頁 編程語言 正文
SpringMVC中Model和ModelAndView的區(qū)別
兩者的區(qū)別:
在SpringMVC中,Model和ModelAndView都是用于將數(shù)據(jù)傳遞到視圖層的對象
Model是”模型“的意思,是MVC架構(gòu)中的”M“部分,是用來傳輸數(shù)據(jù)的。
理解成MVC架構(gòu)中的”M“和”V“,其中包含”Model“和”View“兩部分,主要功能是:設(shè)置轉(zhuǎn)向地址,將底層獲取的數(shù)據(jù)進行存儲(或者封裝),最后將數(shù)據(jù)傳遞給View。
Model只是用來傳輸數(shù)據(jù)的,并不會進行業(yè)務(wù)的尋址。ModelAndView 卻是可以進行業(yè)務(wù)尋址的,就是設(shè)置對應(yīng)的要請求的靜態(tài)文件,這里的靜態(tài)文件指的是類似JSP的文件。
Model是每次請求中都存在的默認參數(shù),利用其addAttribute()方法即可將服務(wù)器的值傳遞到JSP頁面中。
ModelAndView包含Model和View兩部分,使用時需要自己實例化,利用ModelMap用來傳值,也可以設(shè)置View的名稱。
其次,兩者還有一個最大的區(qū)別,每次發(fā)起請求后Spring MVC會自動創(chuàng)建Model對象,而ModelAndView需要我們自己創(chuàng)建
總結(jié):
雖然Model和ModelAndView都可以用于將數(shù)據(jù)傳遞到視圖層,但ModelAndView更加強大,因為它不僅可以傳遞數(shù)據(jù),還可以指定要呈現(xiàn)的視圖。如果你只需要傳遞數(shù)據(jù)而不關(guān)心視圖,則可以使用Model。但如果你需要同時傳遞數(shù)據(jù)和指定視圖,則應(yīng)該使用ModelAndView。
Model在Controller層的寫法
@Controller //代表這個類會被Spring接管,被這個注解的類中所有方法,如果返回值是String,并且有具體的頁面可以跳轉(zhuǎn),那么就會被視圖解析器解析
public class IndexController {
@RequestMapping("/demo") //意為請求 localhost:8080/demo
public String demo(Model model){
//封裝數(shù)據(jù)(向模型中添加數(shù)據(jù),可以jsp頁面直接取出并渲染)
model.addAttribute("Content","Hello");
//會被視圖解析器處理
return "Hello"; //返回到哪個頁面
}
}
model方法是可以返回一個對象的。model.addAttribute(String s,Object o),返回對象要創(chuàng)建一個實體對象生成getter和Setter,還有同String()方法
ModelAndView在Controller層的寫法
@Controller
@RequestMapping
public class IndexController {
@RequestMapping("/demo2")
public ModelAndView demo2(){
ModelAndView modelAndView = new ModelAndView();
//返回到那個前端文件
modelAndView.setViewName("hello");
modelAndView.addObject("ContentOne","HelloOne");
modelAndView.addObject("ContentTwo","HelloTwo");
System.out.println(modelAndView);
return modelAndView;
}
}
原文鏈接:https://blog.csdn.net/Mr_VK/article/details/132072017
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-07-16 MultipartFile與base64互轉(zhuǎn)
- 2022-10-19 C++線程安全容器stack和queue的使用詳細介紹_C 語言
- 2022-04-09 SpringBoot 項目打包成jar包,并執(zhí)行Jar文件
- 2022-06-14 Docker安裝運行SRS的過程記錄_docker
- 2022-05-13 類實例化 對象的內(nèi)存模型 及 內(nèi)存占用分析
- 2022-05-31 jQuery實現(xiàn)側(cè)邊導(dǎo)航欄及滑動電梯效果(仿淘寶)_jquery
- 2022-04-12 【debug】illegal hardware instruction
- 2022-04-12 安裝zsh&oh-my-zsh(沒有root權(quán)限)
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支