当前位置: 首页 > news >正文

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<String,Object> 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 类 <br/>* class org.springframework.validation.support.BindingAwareModelMap <br/>*                                  /\*                                  ||*                                  ||*           BindingAwareModelMap extends ExtendedModelMap*                                  /\*                                  ||*                                  ||*           ExtendedModelMap extends ModelMap implements Model*                                  /\*                                  ||*                                  ||*              ModelMap extends LinkedHashMap<String, 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为key1,key2的键值对信息,也保存到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(Map<String,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( Map<String,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";
}
http://www.lryc.cn/news/90894.html

相关文章:

  • Springboot +spring security,认证方式---HTTP基本认证的实现
  • 2023年系统分析师案例及论文(回忆版)
  • 数据结构与算法面试题
  • C Primer Plus第十章编程练习答案
  • 奇舞周刊第493期:Hook 革命!浅谈 React 新 Hook 的未来与思想
  • 文件包含的本质、预处理符号、# vs ##
  • 【JavaSE】Java基础语法(三十九):网络编程入门
  • 中间件SOME/IP简述
  • [自学记录03|百人计划]移动端GPU的TB(D)R架构基础
  • 详解Java枚举
  • ES6-ES13学习笔记(4.0)
  • 线段树C++详细讲解和个人见解
  • 构建sysbench的镜像
  • leetcode解题思路分析(一百四十)1201 - 1208 题
  • FPGA设计的指导性原则 (一)
  • 【架构】常见技术点--服务治理
  • 手撕数据结构—单链表
  • Benewake(北醒) 快速实现 TF02-i-RS485 与电脑通信操作说明
  • 【分享】科大讯飞星火认知大模型(初体验)
  • logstash 采集应用日志切割问题
  • 计算机网络实验:认识Packet Tracer软件
  • 【MySQL新手到通关】第六章 时间日期函数
  • 深蓝学院C++基础笔记 第 1 章 C++初探
  • 【配电网重构】基于混合整数二阶锥配电网重构研究(Matlab代码实现)
  • Kubernetes mysql 实战以及外部存储处理 [一]
  • 使用【Python+Appium】实现自动化测试
  • 位图和布隆过滤器
  • Eclipse 教程Ⅳ
  • Webpack搭建本地服务器
  • 基于Go开发PaaS平台3