最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用springmvc處理模型數(shù)據(jù)

 更新時間:2021年03月05日 09:15:45   作者:小菜鳥  
這篇文章主要介紹了如何利用springmvc 處理模型數(shù)據(jù),幫助大家更好的理解和學習使用springmvc,感興趣的朋友可以了解下

springmvc處理模型數(shù)據(jù)

很多情況下頁面上需要很多數(shù)據(jù),單單返回頁面是不行的,那么springmvc如何將數(shù)據(jù)返回到該頁面呢

springmvc提供了四種方式來輸出模型數(shù)據(jù)

  • ModelAndView: 處理返回值為ModelAndView時,可以將該對象中添加數(shù)據(jù)模型
  • Map及Model:入?yún)镸odel、ModelMap或Map時,處理方法返回時,Map中的數(shù)據(jù)會自動添加到模型中
  • @SessionAttributes: 將模型中的某個屬性暫存到HttpSession中,以便多個請求之間共享數(shù)據(jù)
  • @ModelAttribute: 方法入?yún)俗⒃撟⒔夂?,入?yún)⒌膶ο缶蜁诺綌?shù)據(jù)模型中

ModelAndView

主要有兩個重要的變量

// 視圖 可以傳字符串(視圖名字)也可以傳View對象
private Object view;
// 數(shù)據(jù)模型 本質(zhì)是一個map
private ModelMap model;

視圖相關(guān)的方法

// 設置視圖
public void setViewName(String viewName) {
 this.view = viewName;
}
// 獲取視圖
public String getViewName() {
 return this.view instanceof String ? (String)this.view : null;
}

數(shù)據(jù)模型相關(guān)方法

// 獲取數(shù)據(jù)模型
protected Map<String, Object> getModelInternal() {
 return this.model;
}

public ModelMap getModelMap() {
 if (this.model == null) {
 this.model = new ModelMap();
 }

 return this.model;
}

public Map<String, Object> getModel() {
 return this.getModelMap();
}

// 添加視圖模型
public ModelAndView addObject(String attributeName, Object attributeValue) {
 this.getModelMap().addAttribute(attributeName, attributeValue);
 return this;
}

springmvc底層使用request.setAttribute(name,value)來將數(shù)據(jù)放入到請求中

示例:

@RequestMapping("/modelAndViewTest")
public ModelAndView modelAndViewTest(){
 // 視圖名
 ModelAndView modelAndView = new ModelAndView("modelAndViewTest");
 // 包含的數(shù)據(jù)
 modelAndView.addObject("dateTime",new Date());
 return modelAndView;
}

Map及Model

@RequestMapping("/mapTest")
public String mapTest(Map<String,String> map){
 System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap
 map.put("name","張三");
 return "hello";
}

@SessionAttributes

在類上添加@SessionAttributes可以使該類所代表的路徑下的session共享

@Controller
@RequestMapping("helloWorld")
// 設置name屬性共享
@SessionAttributes(value={"name"})
public class HelloWorldController {

 @RequestMapping("/mapTest")
 public String mapTest(Map<String,String> map){
 System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap
 map.put("name","張三");
 return "hello";
 }

 // 可以在該方法中獲取到name值為張三
 @RequestMapping("/sessionAttributes")
 public String sessionAttributes(HttpSession session){
 System.out.println(session.getAttribute("name"));
 return "hello";
 }
}

@ModelAttribute

用在無返回值的方法

package com.yiidian.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;


@Controller
public class ModelAttributeController {
  
  //沒有返回值的情況
  @ModelAttribute
  public void myModel(@RequestParam(required = false) String name, Model model) {
    model.addAttribute("name", name);
  }

  @RequestMapping(value = "/model")
  public String model() {
    return "success";
  }
}

用在帶返回值的方法

package com.yiidian.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;


@Controller
public class ModelAttributeController {

  /**
   * 帶返回值的情況
   * @param name
   */
  @ModelAttribute("name")
  public String myModel(@RequestParam(required = false) String name) {
    return name;
  }

  @RequestMapping(value = "/model")
  public String model() {
    return "success";
  }
}

應用在方法的參數(shù)上

@ModelAttribute("name")
public String myModel(@RequestParam(required = false) String name) {
  return name;
}

//應用在方法的參數(shù)行
@RequestMapping(value = "/model")
public String model(@ModelAttribute("name") String name) {
  System.out.println("name="+name);
  return "success";
}

以上就是利用springmvc 處理模型數(shù)據(jù)的詳細內(nèi)容,更多關(guān)于springmvc 處理模型數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Maven項目如何查找jar包是由哪個依賴引入的

    Maven項目如何查找jar包是由哪個依賴引入的

    這篇文章主要介紹了Maven項目如何查找jar包是由哪個依賴引入的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • JAVA中的FileWriter流解析

    JAVA中的FileWriter流解析

    這篇文章主要介紹了JAVA中的FileWriter流解析,FileWriter類提供了多種寫入字符的方法,包括寫入單個字符、寫入字符數(shù)組和寫入字符串等,它還提供了一些其他的方法,如刷新緩沖區(qū)、關(guān)閉文件等,需要的朋友可以參考下
    2023-10-10
  • Java零基礎入門數(shù)組

    Java零基礎入門數(shù)組

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-04-04
  • java本機內(nèi)存分配Native?memory?allocation?mmap失敗問題解決

    java本機內(nèi)存分配Native?memory?allocation?mmap失敗問題解決

    這篇文章主要介紹了java本機內(nèi)存分配Native?memory?allocation?mmap失敗問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • idea文件被鎖無法更改問題

    idea文件被鎖無法更改問題

    這篇文章主要介紹了idea文件被鎖無法更改問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • JAVA中方法的聲明及使用方式(繼承、多態(tài)、封裝)

    JAVA中方法的聲明及使用方式(繼承、多態(tài)、封裝)

    這篇文章主要介紹了JAVA中方法的聲明及使用方式(繼承、多態(tài)、封裝),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 一個簡陋的java圖書管理系統(tǒng)

    一個簡陋的java圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了一個簡陋的java圖書管理系統(tǒng),簡單的實現(xiàn)功能測試,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Spring?Boot集成etcd的詳細過程

    Spring?Boot集成etcd的詳細過程

    etcd是一個分布式鍵值存儲數(shù)據(jù)庫,用于共享配置和服務發(fā)現(xiàn),etcd采用Go語言編寫,具有出色的跨平臺支持,很小的二進制文件和強大的社區(qū),這篇文章主要介紹了SpringBoot集成etcd,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合Redis實現(xiàn)緩存分頁數(shù)據(jù)查詢功能

    SpringBoot整合Redis實現(xiàn)緩存分頁數(shù)據(jù)查詢功能

    類似淘寶首頁,這些商品是從數(shù)據(jù)庫中查出來的嗎,答案肯定不是,本文我們就通過一個案例實操一下,首頁熱點數(shù)據(jù)怎么放到Redis中去查詢,感興趣的同學可以參考一下
    2023-06-06
  • java實現(xiàn)隨機輸出300題四則運算

    java實現(xiàn)隨機輸出300題四則運算

    本文主要介紹了java實現(xiàn)隨機輸出300題四則運算實例,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03

最新評論

保康县| 泗阳县| 酉阳| 永定县| 宜宾市| 乌海市| 昂仁县| 交口县| 永泰县| 璧山县| 亚东县| 天水市| 左权县| 长寿区| 灵寿县| 河曲县| 峡江县| 扶沟县| 右玉县| 连江县| 沂南县| 贵南县| 延吉市| 蒙自县| 安图县| 绥芬河市| 电白县| 绥江县| 萨嘎县| 白河县| 漯河市| 江门市| 丁青县| 武定县| 韩城市| 白朗县| 科技| 云南省| 武义县| 土默特右旗| 紫金县|