springmvc学习(五)——处理模型数据

Spring MVC 提供了以下几种途径输出模型数据:

ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据
Map 及 Model:
入参为org.springframework.ui.Model、org.springframework.ui.ModelMap 或 java.uti.Map
时,处理方法返回时,Map 中的数据会自动添加到模型中。
@SessionAttributes: 将模型中的某个属性暂存到HttpSession
中,以便多个请求之间可以共享这个属性
@ModelAttribute: 方法入参标注该注解后, 入参的对象就会放到数据模型中

1.ModelAndView

控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息,也包含模型数据信息。
添加模型数据:
MoelAndView
addObject(String attributeName, Object attributeValue)
ModelAndView
addAllObject(Map<String, ?> modelMap)
设置视图 :
void setView(View view
)
void setViewName(String viewName)

例子:

jsp代码:

1 <a href="springmvc/testModelAndView">testModelAndView</a><br>

java

1 @RequestMapping(value="/testModelAndView")
2     public ModelAndView testModelAndView(){
3         String viewName=SUCCESS;
4         ModelAndView model=new ModelAndView(viewName);
5         model.addObject("time", new Date());
6         return  model;
7     }

其中,viewname是返回的视图名称,就是这些数据在哪个页面显示的那个页面地址。

model对象可以看成一个存放数据的容器,可以往里面加入键值对的对象,在显示的页面再把其取出来显示

1 time:
2 ${requestScope.time }

可以把MAV理解成M给V数据,springmvc把模型数据放入到了请求域中。

2 .Map 及 Model
Spring MVC 在内部使用了一个org.springframework.ui.Model 接口存储模型数据
具体步骤:
Spring MVC 在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器。如果方法的入参为 Map 或 Model 类型,Spring MVC 会将隐含模型的引用传递给这些入参。在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据

jsp

1 <a href="springmvc/testMap">testMap</a><br>

java

 1 /*
 2      * 目标方法可以添加map类型的参数
 3      * 实际也可以是Model或者ModelMap类型的参数
 4      * org.springframework.validation.support.BindingAwareModelMap
 5      */
 6     @RequestMapping(value="/testMap")
 7     public String testMap( Map<String,Object> map){
 8         System.out.println(map.getClass().getName());
 9         map.put("names", Arrays.asList("王五","张三","李四"));
10
11         return  SUCCESS;
12     }

success.jsp

[email protected]

若希望在多个请求之间共用某个模型属性数据,则可以在控制器类上标注一个 @SessionAttributes, Spring MVC 将在模型中对应的属性暂存到 HttpSession 中。
@SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中
@SessionAttributes(types=User.class) 会将隐含模型中所有类型为 User.class 的属性添加到会话中。
@SessionAttributes(value={“user1”, “user2”})
@SessionAttributes(types={User.class, Dept.class})
@SessionAttributes(value={“user1”, “user2”}, types={Dept.class})

例子

jsp

1 <a href="springmvc/testSession">testSession</a><br>

java

1 @RequestMapping(value="/testSession")
2     public String testSessionAttribute(Map<String,Object> map){
3         User user=new User("baipeng", "123", "[email protected]", 23);
4         map.put("user", user);
5         map.put("school", "cumt");
6         return  SUCCESS;
7     }

结果

请求与与session域中都可以获得到。

时间: 2024-11-05 19:33:30

springmvc学习(五)——处理模型数据的相关文章

springmvc学习笔记(18)-json数据交互

springmvc学习笔记(18)-json数据交互 springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 添加json转换的依赖 配置json转换器 json交互测试 输入json串输出是json串 输入keyvalue输出是json串 本文主要介绍如何在springmvc中进行json数据的交互,先是环境准备和配置,然后分别展示了"输入json串,输出是json串"和"输入key/value,输出是json串"两种情况下

SpringMVC学习(五)——SpringMVC的参数绑定

SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案例代码的编写均建立在前文SpringMVC学习(四)——Spring.MyBatis和SpringMVC的整合的案例基础之上,因此希望读者能仔细阅读这篇文章. 默认支持的数据类型 现在有这样一个需求:打开商品编辑页面,展示商品信息.这是我对这个需求的分析:编辑商品信息,需要根据商品id查询商品信息,然后展示到页面.我这里假设请求的url为/itemEdit.action,由于我想要根据商品id查询商品信息,所以需要传

SpringMVC(十六) 处理模型数据之SessionAttributes

@SessionAttributes原理 默认情况下Spring MVC将模型中的数据存储到request域中.当一个请求结束后,数据就失效了.如果要跨页面使用.那么需要使用到session.而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中. @SessionAttributes参数 1.names:这是一个字符串数组.里面应写需要存储到session中数据的名称. 2.types:根据指定参数的类型,将模型中对应类型的参数存储到session中  3

SpringMVC学习(五)

AJAX 1.AJAX简介 AJAX = Asynchronous JavaScript and XML(异步的JavaScript 和 XML): AJAX不是新的编程语言,而是一种使用现有标准的新方法: AJAX最大的优点式在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容: AJAX不需要任何浏览器插件,但是需要用户允许JavaScript在浏览器上执行. 传统的网页(即不用ajax技术的网页),想要更新内容或者提交一个表单,都需要加载整个网页 使用ajax技术的网页,通

SpringMVC学习五(resultful风格/异常处理/注解)

resultful风格 异常处理 1.Restfule风格 Restfule风格是一种软件架构风格,而不是标准,只是提供了一种设计原则和约束条件.主要适用于客户端和服务器端交互的软件.是基于http协议实现.目的是为了提高系统的可伸缩性,降低应用之间的耦合度,方便框架分布式处理程序.基于这个风格的软件可更加的简单.更有层次,更易于实现缓存的机制. 在resultful风格中,用户请求的url使用同一个URL而用请求方式:get/post/delete/put等方式对请求的处理方法进行区分.这样可

springmvc框架-如何将模型数据传递给视图 也就是Model---&gt;view参数的传递

现在我们将数据从controller层传递给view层 改造controller层代码 前端页面改造 测试: 后台打印: -前台穿过来的值是:zhao 接下来,采用第二种传值的方式进行传递:利用Model对象      org.springframework.ui.Model   可见这个类是一个ui层的类,默认情况下,如果有数据的话,是能够向前端进行传递的 代码改造; 后台打印: -前台穿过来的值是:yong 如果Model不指定键的话,前台默认按照数据的类型进行获取 向前台传递对象信息 原文

前端学习(27)~js学习(五): typeof和数据类型转换

变量的数据类型转换:将一种数据类型转换为另外一种数据类型. 通常有三种形式的类型转换: 转换为字符串类型 转换为数字型 转换为布尔型 typeof 运算符 typeof()表示“获取变量的数据类型”,返回的是小写,语法为:(两种写法都可以) // 写法1 typeof 变量; // 写法2 typeof(变量); typeof 这个运算符的返回结果就是变量的类型.那返回结果的类型是什么呢?是字符串. 返回结果: typeof 的代码写法 返回结果 typeof 数字 number typeof

django 学习-11 Django模型数据模板呈现

1.for author in Author.objects.all(): for book in author.book_set.all(): print   book 2.vim blog/views.py from blog.models  import Author,Book from  django.shortcuts   import  render_to_response def show_author(req): authors = Author.objects.all() re

SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编写均建立在前文SpringMVC学习(五)——SpringMVC的参数绑定的案例基础之上,因此希望读者能仔细阅读这篇文章. 绑定数组 现有这样一个需求:在商品列表页面选中多个商品,然后删除之.下面是我对该需求的分析:此功能要求商品列表页面中的每个商品前有一个checkbook(复选框),选中多个商品后点击删除按钮把商品id传递给Controller,根据商品id批量删除商品信息. 首先将itemList.jsp页面改