您好,登錄后才能下訂單哦!
使用springmvc怎么對模型數據進行處理?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
ModelAndView: 處理返回值為ModelAndView時,可以將該對象中添加數據模型
Map及Model:入參為Model、ModelMap或Map時,處理方法返回時,Map中的數據會自動添加到模型中
@SessionAttributes: 將模型中的某個屬性暫存到HttpSession中,以便多個請求之間共享數據
@ModelAttribute: 方法入參標注該注解后,入參的對象就會放到數據模型中
主要有兩個重要的變量
// 視圖 可以傳字符串(視圖名字)也可以傳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; }
@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可以使該類所代表的路徑下的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"; } }
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"; }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。