SpringMvc提供了以下途径输出模型数据:

-ModelAndView:处理方法返回值类型为ModelAndView,方法体即可通过该对象添加模型数据

-Map或Model:入参为org.springframework.ui.Model、org.springframework.ui.ModelMap或java.util.Map时,处理方法返回时,Map中的数据会自动添加到模型中去。

-@SessionAttributes:将模型中某个属性暂存到HttpSession中,以便多个请求之间共享这个属性

-@ModelAttribute:方法入参标注该注解后,入参的对象会放到数据模型当中去。

具体做法如下:

package com.seven.demos;

import com.seven.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView; import java.util.Arrays;
import java.util.Date;
import java.util.Map; /**
* Created by hu on 2016/4/2.
*/
@SessionAttributes(types = User.class)//将类型为User的模型数据放在HttpSession中去。
@Controller
@RequestMapping("/SpringMvcTest1")
public class SpringMvcTest1 {
@RequestMapping("/test1")
public ModelAndView test1(){
//定义视图的名字,将会定位到“hujingwei.jsp”
String viewName="hujingwei";
//初始化一个ModelAndView对象
ModelAndView modelAndView=new ModelAndView(viewName);
//向ModelAndView中添加数据对象
modelAndView.addObject("time", new Date());
return modelAndView;
}
/*
* SpringMvc在调用方法前会创建一个隐含的模型对象作为模型数据存储容器
* 如果方法的入参为Map或Model类,SpringMvc会将隐含模型的引用传递给这些入参,
* 在方法体内,开发者可以通过这些入参对象访问到模型中的所有数据,也可以向
* 模型中添加新的属性数据。
* */
@RequestMapping("/test2")
public String test2(Map<String,Object> map){
map.put("name", Arrays.asList("Tom","Jack","Mike"));
//从模型中取得数据
User user= (User) map.get("user");
return "hujingwei";
}
/*
* 若想在多个请求之间共用某个模型属性数据,则可以在控制器类上标注一个@SessionAttributes,SpringMvc将在模型中
* 对应的属性暂存在HttpSession中;@SessionAttributes除了可以通过属性名指定需要放到会话中的属性外,还可以通过
* 模型属性的对象类型指定哪些模型属性需要放到会话中去。
* @SessionAttributes(types = User.class)会将隐含模型中所有类型为User的属性添加到HttpSession中去
* @SessionAttributes(value={"user1","user2"})会将隐含模型中属性名为"user1","user2"的属性添加到HttpSession中去
* 还可以有以下组合:
* @SessionAttributes(value={"user1","user2"},types={Department.class})
* 注: @SessionAttributes不能放在类级别上
* */
@RequestMapping("/test3")
public String test3(Map<String,Object> map,SessionStatus sessionStatus){
map.put("name", Arrays.asList("Tom","Jack","Mike"));
//从模型中取得数据
User user= (User) map.get("user");
return "hujingwei";
}
/*
* @ModelAtrribute
* 在方法的定义上使用@ModelAtrribute注解,那么就可以从隐含的模型数据中获取对象,再将参数绑定到对象中,再传入入参。
* 将方法入参对象添加到隐含模型中。
* 注:@ModelAtrribute也可以修饰目标方法中POJO类型的入参。
* */
/*
* 由@SessionAttributes引发的异常
* 如果在类定义处标注了@SessionAttributes("xx"),则会从会话中获取该属性,并将其赋给该入参,然后再利用请求消息填充该
* 入参对象。如果在会话中找不到对应的对象,则抛出HttpSessionRequiredException异常。
* 如何避免这个异常?如下:假如@SessionAttributes("user")
* @ModelAtrribute("user")
* //该方法会往隐含模型中添加一个名为user的模型属性
* public User getUser(){
* User user=new User();
* return user;
* }
* */
}

  

SpringMvc:处理模型数据的更多相关文章

  1. SpringMvc处理模型数据(也就是从数据库中查询出来的数据放到请求域中)

    这讲的是从数据库中查询到的数据,存放到请求域中.然后页面上直接可以从请求域中获取值. 有4种方式: 1):ModelAndView   是作为一个对象. /** * 目标方法的返回值可以是 Model ...

  2. SpringMVC处理模型数据

    目录结构 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

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

    Spring MVC 提供了以下几种途径输出模型数据: ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据Map 及 Model: 入参 ...

  4. SpringMVC:学习笔记(4)——处理模型数据

    SpringMVC—处理模型数据 说明 SpringMVC 提供了以下几种途径输出模型数据: – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添 ...

  5. Spring MVC 处理模型数据

    SpringMVC 处理模型数据: 1 controller接收pojo: <form action="save" method="get"> &l ...

  6. springMVC(6)---处理模型数据

    springMVC(6)---处理模型数据 之前一篇博客,写个怎么获取前段数据:springMVC(2)---获取前段数据,这篇文章写怎么从后端往前端传入数据. 模型数据类型             ...

  7. SpringMVC(十二):SpringMVC 处理输出模型数据之@ModelAttribute

    Spring MVC提供了以下几种途径输出模型数据:1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据:2)Map及Model:处理方法入参 ...

  8. SpringMVC(九):SpringMVC 处理输出模型数据之ModelAndView

    Spring MVC提供了以下几种途径输出模型数据: 1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据: 2)Map及Model:处理方法 ...

  9. SpringMVC(十五) RequestMapping map模型数据

    控制器中使用map模型数据,传送数据给视图. 控制器参考代码: package com.tiekui.springmvc.handlers; import java.util.Arrays; impo ...

随机推荐

  1. Python之list添加新元素、删除元素、替换元素

    Python之list添加新元素 现在,班里有3名同学: >>> L = ['Adam', 'Lisa', 'Bart'] 今天,班里转来一名新同学 Paul,如何把新同学添加到现有 ...

  2. js中!!的作用

    js中!!的作用是: !!一般用来将后面的表达式转换为布尔型的数据(boolean) ===表示类型什么的全部相等(自己写一个if测试一下就好了)!==表示要全部不想等包括类型(一样写一个if)||或 ...

  3. nodejs net模块实现socket

    var net = require('net'); var client = net.connect({port: 8080}, function() { console.log('连接到服务器!') ...

  4. 使用多种客户端消费WCF RestFul服务(三)——.net4.5篇

    .net 4.5篇 在.net 4.5下面微软提供了System.Net.Http.dll可以非常方便的使用HTTP请求(其实是用来支持Asp.Net Web Api的,不过我们可以拿过来用) 服务仍 ...

  5. interview review

    缘起: 因为最近要找工作,自己总结了一下面试的注意事项. 1自我介绍方法 1.基本情况:姓名.年龄.学历.家庭与理想. 简单明了,不要啰嗦. 2.学习能力:专业知识.勤奋好学. 用事实说明学习能力不错 ...

  6. 毕老师的Editplus

    简介 EditPlus是一款由韩国 Sangil Kim (ES-Computing)出品的小巧但是功能强大的可处理文本.HTML和程序语言的Windows编辑器,你甚至可以通过设置用户工具将其作为C ...

  7. 371. Sum of Two Integers

    不用加减法计算两个整数的和.这道题其实是考察一些基本的布尔代数知识.我们知道,二进制表示时: 0 + 0 = 00 1 + 0 = 01 0 + 1 = 01 1 + 1 = 10 所以,两个二进制整 ...

  8. [LeetCode]题解(python):060-Permutation Sequence

    题目来源 https://leetcode.com/problems/permutation-sequence/ The set [1,2,3,…,n] contains a total of n! ...

  9. Swift-09-可空链式调用(Optional Chaining)

    我对这个的理解就是:我们有可能会用到其他的属性或者方法,当我们在使用其他的时候,可以使用点语法去访问另一个的属性,这样的使用,就形成了链式访问. 可空链式调用是一种可以请求和调用属性.方法及下表的过程 ...

  10. Java学习-005-初学常用的几个经典循环控制源代码

    最近一段时间公司 App 改版,一直处在需求评审.代码评审.测试计划.测试用例.用例评审.用例执行.缺陷管理.测试总结的循环中,因而博客也好久没有更新了.虽然工作确实忙了点,但是也是自己懒惰了,从今天 ...