您的位置:首页 > 编程语言 > Java开发

SpringMVC学习(六)之处理数据模型

2017-03-05 10:45 555 查看

一、ModelAndView

在控制器的目标方法中返回 ModelAndView

/**
* 目标方法的返回值可以是 ModelAndView 类型
* 其中可以包含视图和模型信息
* SpringMVC 会吧 ModelAndView 的 model 中的数据放入到 request 域对象中
*/
@RequestMapping("/testModelAndView")
private ModelAndView testModelAndView(){
String viewName = SUCCESS;
ModelAndView mv = new ModelAndView(viewName);

//添加模型数据到 ModelAndView 中,
mv.addObject("time", new Date());

return mv;
}


在跳转页面上从请求域获取数据模型信息

time: ${requestScope.time }


URL请求:

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


二、Map

开控制器的目标方法中可以添加Map类型的参数,数据将存储到请求域

@RequestMapping("/testMap")
private String testMap(Map<String, Object> map){
System.out.println(map.getClass().getName());
map.put("names", Arrays.asList("Tom", "Jake", "Mari"));
return SUCCESS;
}


在成功跳转页面显示Map的值:

names:${requestScope.names }


URL请求:

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


三、SessionAttributes注解

在前两个处理模型方法中,都是将数据存储到请求域中,而使用@SessionAttributes注解能够将数据存储到 Session 域和request域中

@SessionAttributes(value={"user"}, types={String.class})
@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {

private static final String SUCCESS = "success";

/**
* @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上是使用 value 属性值),
* 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上是使用 types 属性值)
*
* 注意:该注解只能放在类的上面,而不能修饰方法
*/
@RequestMapping("/testSessionAttributes")
private String testSessionAttribures(Map<String, Object> map){
User user = new User("aaa", 20);
map.put("user", user);
map.put("str", "aaaaaaaaa");
return SUCCESS;
}
}


在跳转页面显示存储在session中的数据:

request: ${requestScope.user }<br>
session: ${sessionScope.user }

<br><br>
request: ${requestScope.str}<br>
session: ${sessionScope.str}


URL请求:

<a href="springmvc/testSessionAttributes">testSessionAttributes</a>
<br><br>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc