Springboot---Model,ModelMap,ModelAndView

  1. Model(org.springframework.ui.Model)
    Model是一個接口,包含addAttribute方法,其實現類是ExtendedModelMap。
    ExtendedModelMap繼承了ModelMap類,ModelMap類實現了Map接口。
public class ExtendedModelMap extends ModelMap implements Model

在這里插入圖片描述
Model通過以下方法向頁面傳遞參數:
在這里插入圖片描述
例:User1Controller.java

@Controller
public class User1Controller{private static final Log logger = LogFactory.getLog(User1Controller.class);// @ModelAttribute修飾的方法會先于login調用,該方法用于接收前臺jsp頁面傳入的參數@ModelAttributepublic void userModel(String loginname,String password,Model model){logger.info("userModel");// 創建User對象存儲jsp頁面傳入的參數User2 user = new User2();user.setLoginname(loginname);user.setPassword(password);// 將User對象添加到Model當中model.addAttribute("user", user);}@RequestMapping(value="/login1")public String login(Model model){logger.info("login");// 從Model當中取出之前存入的名為user的對象User2 user = (User2) model.asMap().get("user");System.out.println(user);// 設置user對象的username屬性user.setUsername("測試");return "result1";}

前臺:
(1) loginForm1.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>測試Model</title>
</head>
<body>
<h3>測試Model</h3>
<form action="login1new" method="post"><table><tr><td><label>登錄名: </label></td><td><input type="text" id="loginname" name="loginname" ></td></tr><tr><td><label>密碼: </label></td><td><input type="password" id="password" name="password" ></td></tr><tr><td><input id="submit" type="submit" value="登錄"></td></tr></table>
</form>
</body>
</html>

(2) result1.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>測試@ModelAttribute(value="")注釋返回具體類的方法</title>
</head>
<body>
訪問request作用范圍域中的model對象:${requestScope.user.loginname }<br>
訪問request作用范圍域中的model對象:${requestScope.user.password }<br>
訪問request作用范圍域中的model對象:${requestScope.user.username }<br>
<br>
</body>
</html>

運行結果:
在這里插入圖片描述
@ModelAttribute修飾的方法會先于login調用,它把請求參數值賦給對應變量。可以向方法中的Model添加對象,前提是要在方法中加入一個Model類型的參數。

User1Controller.java可以簡化為:

@RequestMapping(value="/login1new")public String login(Model model, @ModelAttribute User2 user){user.setUsername("測試2");System.out.println(user.toString());model.addAttribute("user", user);return "result1";}
  1. ModelMap(org.springframework.ui.ModelMap)
    Spring框架自動創建modelmap的實例,并作為controller方法的參數傳入,用戶無需自己創建對象。
    ModelMap對象主要用于把controller方法處理的數據傳遞到jsp界面,在controller方法中把jsp界面需要的數據放到ModelMap對象中即可。它的作用類似request對象的setAttribute方法。通過以下方法向頁面傳遞參數:
    在這里插入圖片描述
    在視圖層通過request找到ModelMap中的數據。
    Modelmap本身不能設置頁面跳轉的url,可以通過controller方法的返回值來設置跳轉的url

例:User2Controller.java

@Controller
public class User2Controller{private static final Log logger = LogFactory.getLog(User2Controller.class);@ModelAttributepublic void userMode2(String loginname,String password,ModelMap modelMap){logger.info("userMode2");// 創建User對象存儲jsp頁面傳入的參數User2 user = new User2();user.setLoginname(loginname);user.setPassword(password);// 將User對象添加到ModelMap當中modelMap.addAttribute("user", user);}@RequestMapping(value="/login2")public String login2(ModelMap modelMap){logger.info("login2");// 從ModelMap當中取出之前存入的名為user的對象User2 user = (User2) modelMap.get("user");System.out.println(user);// 設置user對象的username屬性user.setUsername("測試");return "result2";}

前臺:result2.jsp

<body>
訪問request作用范圍域中的modelMap對象:${requestScope.user.loginname }<br>
訪問request作用范圍域中的modelMap對象:${requestScope.user.password }<br>
訪問request作用范圍域中的modelMap對象:${requestScope.user.username }<br>
<br>
</body>

運行結果:
在這里插入圖片描述
3. ModelAndView(org.springframework.web.servlet.ModelAndView)
ModelAndView對象有兩個作用:
(1) 設置url地址(這也是ModelAndView和ModelMap的主要區別)。
(2) 把controller方法中處理的數據傳到jsp頁面,在controller方法中把jsp界面需要的數據放到ModelAndView對象中即可。然后return mv。它的作用類似request對象的setAttribute方法。通過以下方法向頁面傳遞參數:
在這里插入圖片描述
在界面上可以通過el變量方式${key}來獲取ModelAndView中的數據。
可通過以下方法設置視圖:
在這里插入圖片描述
controller方法的返回值如果是ModelAndView,則其即包含模型數據信息,又包含視圖信息,這樣SpringMVC將使用包含的視圖對模型數據進行渲染,可以簡單地將模型數據看成一個Map<String, Object>對象。

例:User3Controller.java

@Controller
public class User3Controller{private static final Log logger = LogFactory.getLog(User3Controller.class);@ModelAttributepublic void userMode3(String loginname,String password,ModelAndView mv){logger.info("userMode3");User2 user = new User2();user.setLoginname(loginname);user.setPassword(password);// 將User對象添加到ModelAndView的Model當中mv.addObject("user", user);}@RequestMapping(value="/login3")public ModelAndView login3(ModelAndView mv){logger.info("login3");// 從ModelAndView的Model當中取出之前存入的名為user的對象User2 user = (User2) mv.getModel().get("user");System.out.println(user);// 設置user對象的username屬性user.setUsername("測試");// 地址跳轉,設置返回的視圖名稱mv.setViewName("result3");return mv;}

前臺:result3.jsp

<body>
訪問ModelAndView中的數據:${user.loginname}<br>
訪問ModelAndView中的數據:${user.password}<br>
訪問ModelAndView中的數據:${user.username}<br>
</body>

運行結果:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250128.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250128.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250128.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

東南亞支付——柬埔寨行

考察時間&#xff1a;2018.5.28 至 2018.6.6 為了解柬埔寨大概國情和市場&#xff0c;在柬埔寨開展了為期近10天的工作。 觀察了交通情況&#xff0c;周邊街道的店面與商品&#xff0c;攤販等&#xff0c;也走訪了大學校區&#xff0c;看了永旺商超、本地超市和中國超市&#x…

Puzzle (II) UVA - 519

題目鏈接&#xff1a; https://vjudge.net/problem/UVA-519 思路&#xff1a; 剪枝回溯 這個題巧妙的是他按照表格的位置開始搜索&#xff0c;也就是說表格是定的&#xff0c;他不斷用已有的圖片從(0,0)開始拼到(n-1,m-1) 剪枝的地方&#xff1a; 1.由于含F的面只能拼到邊上&am…

[pytorch、學習] - 5.7 使用重復元素的網絡(VGG)

參考 5.7 使用重復元素的網絡&#xff08;VGG&#xff09; AlexNet在LeNet的基礎上增加了3個卷積層。但AlexNet作者對它們的卷積窗口、輸出通道數和構造順序均做了大量的調整。雖然AlexNet指明了深度卷積神經網絡可以取得出色的結果&#xff0c;但并沒有提供簡單的規則以指導…

springboot---mybits整合

配置 POM文件 <parent> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.6.RELEASE</version><relativePath /> </parent><properties><proj…

使用airdrop進行文件共享

使用airdrop進行文件共享 學習了&#xff1a; https://support.apple.com/zh-cn/HT203106 https://zh.wikihow.com/%E5%9C%A8Mac%E4%B8%8A%E7%94%A8%E8%BF%91%E6%9C%BA%E6%8D%B7%E4%BC%A0%EF%BC%88Airdrop%EF%BC%89%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6 轉載于:https://www.cn…

【鏈表】逆序打印鏈表

1 public class Main {2 3 // 逆序打印鏈表4 public void reversePrint(Node node) {5 if (node null){6 return;7 }8 reversePrint(node.next);9 System.out.println(node.data); 10 } 11 12 public Node crea…

[pytorch、學習] - 5.8 網絡中的網絡(NiN)

參考 5.8 網絡中的網絡&#xff08;NiN&#xff09; 前幾節介紹的LeNet、AlexNet和VGG在設計上的共同之處是&#xff1a;先以由卷積層構成的模塊充分抽取空間特征&#xff0c;再以由全連接層構成的模塊來輸出分類結果。其中&#xff0c;AlexNet和VGG對LeNet的改進主要在于如何…

springboot---集成mybits方法

SpringBoot集成mybatis配置 一個有趣的現象&#xff1a;傳統企業大都喜歡使用hibernate,互聯網行業通常使用mybatis&#xff1b;之所以出現這個問題感覺與對應的業務有關&#xff0c;比方說&#xff0c;互聯網的業務更加的復雜&#xff0c;更加需要進行靈活性的處理&#xff0c…

jQuery源碼解讀

參考 &#xff1a; https://www.cnblogs.com/yuqingfamily/p/5785593.html 轉載于:https://www.cnblogs.com/wfblog/p/9172622.html

info.plist文件里面添加描述 - 配置定位,相冊等

<key>NSAppleMusicUsageDescription</key> <string>App需要您的同意,才能訪問媒體資料庫</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>App需要您的同意,才能訪問藍牙</string> <key>NSCalendar…

[pytorch、學習] - 5.9 含并行連結的網絡(GoogLeNet)

參考 5.9 含并行連結的網絡&#xff08;GoogLeNet&#xff09; 在2014年的ImageNet圖像識別挑戰賽中&#xff0c;一個名叫GoogLeNet的網絡結構大放異彩。它雖然在名字上向LeNet致敬&#xff0c;但在網絡結構上已經很難看到LeNet的影子。GoogLeNet吸收了NiN中網絡串聯網絡的思…

mybits注解詳解

一、mybatis 簡單注解 關鍵注解詞 &#xff1a; Insert &#xff1a; 插入sql , 和xml insert sql語法完全一樣 Select &#xff1a; 查詢sql, 和xml select sql語法完全一樣 Update &#xff1a; 更新sql, 和xml update sql語法完全一樣 Delete &#xff1a; 刪除sql, 和xml d…

使用python裝飾器計算函數運行時間的實例

使用python裝飾器計算函數運行時間的實例 裝飾器在python里面有很重要的作用&#xff0c; 如果能夠熟練使用&#xff0c;將會大大的提高工作效率 今天就來見識一下 python 裝飾器&#xff0c;到底是怎么工作的。 本文主要是利用python裝飾器計算函數運行時間 一些需要精確的計算…

SQLServer用存儲過程實現插入更新數據

實現 1&#xff09;有同樣的數據&#xff0c;直接返回&#xff08;返回值&#xff1a;0&#xff09;。 2&#xff09;有主鍵同樣。可是數據不同的數據。進行更新處理&#xff08;返回值&#xff1a;2&#xff09;&#xff1b; 3&#xff09;沒有數據&#xff0c;進行插入數據處…

[pytorch、學習] - 9.1 圖像增廣

參考 9.1 圖像增廣 在5.6節(深度卷積神經網絡)里我們提過,大規模數據集是成功應用神經網絡的前提。圖像增廣(image augmentation)技術通過對訓練圖像做一系列隨機改變,來產生相似但又不相同的訓練樣本,從而擴大訓練數據集的規模。圖像增廣的另一種解釋是,隨機改變訓練樣本可以…

mysql綠色版安裝

導讀&#xff1a;MySQL是一款關系型數據庫產品&#xff0c;官網給出了兩種安裝包格式&#xff1a;MSI和ZIP。MSI格式是圖形界面安裝方式&#xff0c;基本只需下一步即可&#xff0c;這篇文章主要介紹ZIP格式的安裝過程。ZIP Archive版是免安裝的。只要解壓就行了。 一、首先下…

在微信瀏覽器字體被調大導致頁面錯亂的解決辦法

iOS的解決方案是覆蓋掉微信的樣式&#xff1a; body { /* IOS禁止微信調整字體大小 */-webkit-text-size-adjust: 100% !important; } 安卓的解決方案是通過 WeixinJSBridge 對象將網頁的字體大小設置為默認大小&#xff0c;并且重寫設置字體大小的方法&#xff0c;讓用戶不能在…

[pytorch、學習] - 9.2 微調

參考 9.2 微調 在前面得一些章節中,我們介紹了如何在只有6萬張圖像的Fashion-MNIST訓練數據集上訓練模型。我們還描述了學術界當下使用最廣泛規模圖像數據集ImageNet,它有超過1000萬的圖像和1000類的物體。然而,我們平常接觸到數據集的規模通常在這兩者之間。 假設我們想從圖…

Springboot默認加載application.yml原理

Springboot默認加載application.yml原理以及擴展 SpringApplication.run(…)默認會加載classpath下的application.yml或application.properties配置文件。公司要求搭建的框架默認加載一套默認的配置文件demo.properties&#xff0c;讓開發人員實現“零”配置開發&#xff0c;但…

java 集合(Set接口)

Set接口&#xff1a;無序集合&#xff0c;不允許有重復值&#xff0c;允許有null值 存入與取出的順序有可能不一致 HashSet:具有set集合的基本特性&#xff0c;不允許重復值&#xff0c;允許null值 底層實現是哈希表結構 初始容量為16 保存自定義對象時&#xff0c;保證數據的唯…