SpringMVC第六阶段:数据在域中的保存(02) |
您所在的位置:网站首页 › 云数据中心架构包含哪几层 › SpringMVC第六阶段:数据在域中的保存(02) |
数据在域中的保存(02)
1、Map或Model或ModelMap形式保存数据在request域中
在四个域中,我们使用最频繁的域就是request对象。往request域对象中,保存数据,还在以下的几种形式。 我们可以在Controller的方法中,添加Map类型的参数,或者是Model类型的参数。或者是ModelMap类型的参数。都可以直接用来保存域数据到Request对象中。 Map全类名是: java.util.Map @RequestMapping(value = "/mapToRequest") public String mapToRequest(Map map){ System.out.println(" mapToRequest() 方法调用了 "); // 我们把数据保存到Map中,这些数据也会自动的保存到Reqeust域中. map.put("mapKey1", "mapValue1"); map.put("mapKey2", "mapValue2"); return "ok"; }Model全类名是: org.springframework.ui.Model @RequestMapping(value = "/modelToRequest") public String modelToRequest(Model model){ System.out.println(" modelToRequest() 方法调用了 "); // 我们把数据保存到 model 中,这些数据也会自动的保存到Reqeust域中. model.addAttribute("modelKey1", "modelValue1"); model.addAttribute("modelKey2", "modelValue2"); return "ok"; }ModelMap全类名是: org.springframework.ui.ModelMap @RequestMapping(value = "/modelMapToRequest") public String modelMapToRequest(ModelMap modelMap){ System.out.println(" modelMapToRequest() 方法调用了 "); // 我们把数据保存到 model 中,这些数据也会自动的保存到Reqeust域中. modelMap.addAttribute("modelMapKey1", "modelMapValue1"); modelMap.addAttribute("modelMapKey2", "modelMapValue2"); return "ok"; }隐含模型对象 : /** * 不管你是Map,还是Model,还是ModelMap,他们都是 BindingAwareModelMap 类 * class org.springframework.validation.support.BindingAwareModelMap * /\ * || * || * BindingAwareModelMap extends ExtendedModelMap * /\ * || * || * ExtendedModelMap extends ModelMap implements Model * /\ * || * || * ModelMap extends LinkedHashMap * * * BindingAwareModelMap 类是隐含模型对象!!! * BindingAwareModelMap 隐含模型中一般都用来保存 视图渲染时 需要的数据 * 视图 就是页面 ( jsp页面 ) * 渲染 执行 */ @RequestMapping(value = "/mapAndModelAndModelMap") public String mapAndModelAndModelMap( Map map , Model model , ModelMap modelMap ){ // org.springframework.validation.support.BindingAwareModelMap System.out.println( map ); System.out.println( model ); System.out.println( modelMap ); System.out.println(" 最美分隔线================================== "); map.put("mapKey1", "mapValue1"); System.out.println( map ); System.out.println( model ); System.out.println( modelMap ); System.out.println(" 最美分隔线================================== "); model.addAttribute("modelKey1", "modelValue1"); System.out.println( map ); System.out.println( model ); System.out.println( modelMap ); System.out.println(" 最美分隔线================================== "); modelMap.addAttribute("modelMapKey1", "modelMapValue1"); System.out.println( map ); System.out.println( model ); System.out.println( modelMap ); System.out.println(" 最美分隔线================================== "); System.out.println( map.getClass() ); System.out.println( model.getClass() ); System.out.println( modelMap.getClass() ); return "ok"; } 2、ModelAndView方式保存数据到request域中 @RequestMapping(value = "/modelAndViewToReqeust") public ModelAndView modelAndViewToReqeust(){ ModelAndView modelAndView = new ModelAndView("ok"); //使用 ModelAndView 返回值保存数据到 Reqeuat 域中 modelAndView.addObject("mavKey1", "mavValue1"); modelAndView.addObject("mavKey2", "mavValue2"); return modelAndView; } 3、@SessionAttributes保存数据到Session域中@SessionAttributes 注解可以标注在类上。它的作用是指定隐含模型中哪些数据可以保存到Session域中。 @SessionAttributes(value = { "key1","key2" }, types = { String.class, Book.class })value属性,它表示把request域中key为key1,key2的键值对信息,也保存到Session中 types属性,它表示把request域中value类型为String.class或Book.class类型的键值对,也保存到Session中 /** * @SessionAttributes 可以指定哪些隐含模型中的数据也同步保存到Session域中 * names 属性设置哪些 key 数据保存到Session中 * types 属性设置哪些类型的 value 属性也同步到Session中 */ @SessionAttributes(types = {Integer.class,String.class}) @Controller public class ScopeController { @RequestMapping(value = "/sessionAttrubute") public String sessionAttrubute(Map map){ System.out.println(" sessionAttrubute() 方法调用了 "); // 我们把数据保存到Map中,这些数据也会自动的保存到Reqeust域中. map.put("mapKey1", "字符串类型"); map.put("mapKey2", new Integer(100)); return "ok"; } } 4、@ModelAttribute注解@ModelAttribute这个注解可以标注在方法和参数上。 @ModelAttribute三个常见作用: 1、被标注了@ModelAttribute的方法都会在Controller的目标方法之前执行。 2、目标方法的参数(JavaBean对象)会先从隐含模型中获取值传入。( 参数会覆盖隐含模型中的值 ) 3、被标注在参数上,参数值会按照指定的key从隐含模型中获取值。 @ModelAttribute public void modelAttributeFun( Map map ){ // 可以为目标方法准备数据 System.out.println(" modelAttributeFun() 方法被调用了 "); map.put("book1",new Book(100,"国哥,为什么你这么帅,帅的不要不要的!")); } /** * 目标方法的参数,如果是JavaBean,SpringMVC会先把这个参数的类型 * 取类名Book,然后首字母小写.然后到隐含模型中取值传入 */ @RequestMapping(value = "/target") public String target( @ModelAttribute("book1") Book book){ System.out.println(" target() 方法调用了 =====>>>> " + book); return "ok"; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |