SpringMVC第六阶段:数据在域中的保存(02)

您所在的位置:网站首页 云数据中心架构包含哪几层 SpringMVC第六阶段:数据在域中的保存(02)

SpringMVC第六阶段:数据在域中的保存(02)

2023-06-02 06:11| 来源: 网络整理| 查看: 265

数据在域中的保存(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