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>标签

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

2.编写这个handler方法

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

3.编写SUCCESS.jsp,使其显示modelAndView的time值

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

4.运行结果

在index.jsp中点击那个< a>标签后

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

Map及Model

  • Spring MVC 在内部使用了一个org.springframework.ui.Model接口存储模型数据

    演示例子:

    1.在index.jsp中写一个响应这个handler方法的< a>

    SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

    2.编写这个handler方法

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

3.编写这个SUCCESS.jsp,使其显示map里面的内容

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

4.运行结果,点击这个< a>标签

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

@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方法

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

2.编写控制器的handler方法

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

3.编写SUCCESS.jsp使其显示相应的值

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

4.运行结果,点击< a>标签

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

tips:@SessionAtrtributes 指定 放入的值放入的类型

SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes
SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes
SpringMVC_9_ 处理模型数据(一)之ModelAndView、Map、@SessionAttributes

相关文章:

  • 2021-10-20
  • 2022-12-23
  • 2022-02-23
  • 2021-09-19
  • 2022-12-23
  • 2021-06-20
  • 2021-09-10
  • 2021-07-06
猜你喜欢
  • 2021-06-15
  • 2021-08-09
  • 2021-08-03
  • 2021-07-09
  • 2021-06-07
  • 2022-03-08
  • 2021-08-06
相关资源
相似解决方案