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

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 指定 放入的值放入的类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42036647/article/details/85321138
今日推荐