不少状况下页面上须要不少数据,单单返回页面是不行的,那么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