不少狀況下頁面上須要不少數據,單單返回頁面是不行的,那麼springmvc如何將數據返回到該頁面呢spring
springmvc提供了四種方式來輸出模型數據session
主要有兩個重要的變量mvc
// 視圖 能夠傳字符串(視圖名字)也能夠傳View對象 private Object view; // 數據模型 本質是一個map private ModelMap model;
視圖相關的方法app
// 設置視圖 public void setViewName(String viewName) { this.view = viewName; } // 獲取視圖 public String getViewName() { return this.view instanceof String ? (String)this.view : null; }
數據模型相關方法this
// 獲取數據模型 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)來將數據放入到請求中code
示例:對象
@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"; } }
因爲自己的博客百度沒有收錄,博客地址http://zhhll.icuget