装修网站建设方案百度文库,罗夫曼三大社区模式,网页制作基础教程第一版,软件工程师工资高吗数据在域中的保存#xff08;02#xff09;
1、Map或Model或ModelMap形式保存数据在request域中
在四个域中#xff0c;我们使用最频繁的域就是request对象。往request域对象中#xff0c;保存数据#xff0c;还在以下的几种形式。 我们可以在Controller的方法中#x…数据在域中的保存02
1、Map或Model或ModelMap形式保存数据在request域中
在四个域中我们使用最频繁的域就是request对象。往request域对象中保存数据还在以下的几种形式。 我们可以在Controller的方法中添加Map类型的参数或者是Model类型的参数。或者是ModelMap类型的参数。都可以直接用来保存域数据到Request对象中。
Map全类名是
java.util.MapRequestMapping(value /mapToRequest)
public String mapToRequest(MapString,Object map){System.out.println( mapToRequest() 方法调用了 );// 我们把数据保存到Map中,这些数据也会自动的保存到Reqeust域中.map.put(mapKey1, mapValue1);map.put(mapKey2, mapValue2);return ok;
}Model全类名是
org.springframework.ui.ModelRequestMapping(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.ModelMapRequestMapping(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 类 br/* class org.springframework.validation.support.BindingAwareModelMap br/* /\* ||* ||* BindingAwareModelMap extends ExtendedModelMap* /\* ||* ||* ExtendedModelMap extends ModelMap implements Model* /\* ||* ||* ModelMap extends LinkedHashMapString, Object*** BindingAwareModelMap 类是隐含模型对象!!! br/* BindingAwareModelMap 隐含模型中一般都用来保存 视图渲染时 需要的数据 br/* 视图 就是页面 ( jsp页面 )* 渲染 执行*/RequestMapping(value /mapAndModelAndModelMap)public String mapAndModelAndModelMap( Map map , Model model , ModelMap modelMap ){
// org.springframework.validation.support.BindingAwareModelMapSystem.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为key1key2的键值对信息也保存到Session中 types属性它表示把request域中value类型为String.class或Book.class类型的键值对也保存到Session中
/*** SessionAttributes 可以指定哪些隐含模型中的数据也同步保存到Session域中 br/* names 属性设置哪些 key 数据保存到Session中 br/* types 属性设置哪些类型的 value 属性也同步到Session中 br/*/
SessionAttributes(types {Integer.class,String.class})
Controller
public class ScopeController {RequestMapping(value /sessionAttrubute)public String sessionAttrubute(MapString,Object 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( MapString,Object map ){// 可以为目标方法准备数据System.out.println( modelAttributeFun() 方法被调用了 );map.put(book1,new Book(100,国哥,为什么你这么帅,帅的不要不要的!));
}/*** 目标方法的参数,如果是JavaBean,SpringMVC会先把这个参数的类型* 取类名Book,然后首字母小写.然后到隐含模型中取值传入br/*/
RequestMapping(value /target)
public String target( ModelAttribute(book1) Book book){System.out.println( target() 方法调用了 book);return ok;
}