1. 程式人生 > >SpringMVC_9_ 處理模型資料(一)之ModelAndView、Map、@SessionAttributes

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

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述