中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用springmvc怎么對模型數據進行處理

發布時間:2021-03-05 14:40:10 來源:億速云 閱讀:161 作者:Leah 欄目:開發技術

使用springmvc怎么對模型數據進行處理?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

springmvc提供了四種方式來輸出模型數據

  • ModelAndView: 處理返回值為ModelAndView時,可以將該對象中添加數據模型

  • Map及Model:入參為Model、ModelMap或Map時,處理方法返回時,Map中的數據會自動添加到模型中

  • @SessionAttributes: 將模型中的某個屬性暫存到HttpSession中,以便多個請求之間共享數據

  • @ModelAttribute: 方法入參標注該注解后,入參的對象就會放到數據模型中

ModelAndView

主要有兩個重要的變量

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

視圖相關的方法

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

數據模型相關方法

// 獲取數據模型
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)來將數據放入到請求中

示例:

@RequestMapping("/modelAndViewTest")
public ModelAndView modelAndViewTest(){
 // 視圖名
 ModelAndView modelAndView = new ModelAndView("modelAndViewTest");
 // 包含的數據
 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";
  }
}

應用在方法的參數上

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

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

舟曲县| 乌海市| 沧州市| 兴和县| 峡江县| 白山市| 海门市| 武邑县| 江孜县| 无棣县| 连南| 淅川县| 宜兴市| 个旧市| 庆云县| 砚山县| 同心县| 中阳县| 乐平市| 金门县| 灵川县| 马尔康县| 蒲城县| 丰镇市| 霍城县| 彩票| 平塘县| 文昌市| 六安市| 宣武区| 文安县| 息烽县| 泰来县| 德令哈市| 仁寿县| 淄博市| 临城县| 重庆市| 绥宁县| 青龙| 汝州市|