SpringMVC提供了以下几种途径输出模型数据:
- ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据
- Map 及 Model:入参为org.springframework.ui.Model、org.springframework.ui.ModelMap或java.uti.Map时,处理方法返回时,Map中的数据会自动添加到模型中。
- @SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性
- @ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中
ModelAndView
-
控制器处理方法的返回值如果为ModelAndView,则其既包含视图信息,也包含模型数据信息。
演示例子:
1.在index.jsp中写一个响应handler的< a>标签
2.编写这个handler方法
3.编写SUCCESS.jsp,使其显示modelAndView的time值
4.运行结果
在index.jsp中点击那个< a>标签后
Map及Model
-
Spring MVC 在内部使用了一个org.springframework.ui.Model接口存储模型数据
演示例子:
1.在index.jsp中写一个响应这个handler方法的< a>
2.编写这个handler方法
3.编写这个SUCCESS.jsp,使其显示map里面的内容
4.运行结果,点击这个< a>标签
@SessionAttributes
-
若希望在多个请求之间共用某个模型属性数据,则可以在控制器类上标注一个@SessionAttribute,SpringMVC将在模型中对应的属性暂存到HttpSession中。
-
@SessionAttributes除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中
例子程序:
前提User.java
package com.springmvc.entities; public class User { private String username; private String password; private int age; private String email; private Address address; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + ", age=" + age + ", email='" + email + '\'' + ", address=" + address + '}'; } public User(String username, String password, String email, int age) { this.username = username; this.password = password; this.age = age; this.email = email; } }
1.在index.jsp中写一个< a>响应handler方法
2.编写控制器的handler方法
3.编写SUCCESS.jsp使其显示相应的值
4.运行结果,点击< a>标签
tips:@SessionAtrtributes 指定 放入的值 和 放入的类型