1. 程式人生 > >菜鳥SpringMVC學習筆記2——@SessionAttributes註解與@RequestMapping

菜鳥SpringMVC學習筆記2——@SessionAttributes註解與@RequestMapping

Session與Request區別在於,springMVC處理時,將資料放在哪個程序裡。
在瀏覽器呼叫時,會出現區別,一旦弄錯,就會獲取不到資料。

先模擬一個取資料的一個實現。
假裝USER模型是資料庫中的資料,我模擬user屬性如下:

package com.hentities;

public class User {
    private String username;
    private String password;
    private int age;


    private Adress adress;
    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 Adress getAdress() { return adress; } public void setAdress(Adress adress) { this.adress = adress; } @Override public String toString() { return "User [username=" + username + ", password="
+ password + ", age=" + age + ", adress=" + adress + "]"; } public User(){} public User(String userName,String password,int age) { this.username=userName; this.password=password; this.age=age; } }

這裡使用了USER的三個屬性,地址為空
this.username=userName;
this.password=password;
this.age=age;

@RequestMapping("/request")
@Controller
public class SpringMVCtest {

    private static final String SUCCESS="success";

    @RequestMapping("/Session")
    public String testSession(Map<String, Object> map) {
        map.put("user1", new User("A", "123", 12));
        map.put("user2", new User("B", "123", 35));
        map.put("user3", new User("C", "123", 24));
        return SUCCESS; 
    }
}

即目標頁面對映字串“request/Session”時,頁面自動轉向配置路徑下的success.jsp頁面。
我在目標頁面success.jsp嵌入這樣的程式碼:

//div:背景灰色,字型顏色黃色
    <div style="background:#CCC;color:yellow">
        name: ${requestScope.names}
    <br><br>
    request User1: ${requestScope.user1}
    <br>
    session User1: ${sessionScope.user1}
    <br><br>
    request User2: ${requestScope.user2}
    <br>
    session User2: ${sessionScope.user2}
    <br><br>
    request User3: ${requestScope.user3}
    <br>
    session User3: ${sessionScope.user3}
    <br>
    </div>
request為處理request對映中的模型資料,session 為處理session 程序資料,同時獲取user1、user2、user3.

執行之後獲取如下:
這裡寫圖片描述

可以看到request請求域裡,資料都獲取成功了。session請求中資料,都沒有請求到資料。

如何用session也請求到資料?
session有兩個屬性,一個是type,一個value。
value中可以放入字串陣列,type可以放類型別。

其中value為預設

在類上加入註解
例如:

  • 註解一:
@SessionAttributes(value= {"user1","user3"})
  • 註解二:
@SessionAttributes(value={"user2"},types= {String.class})

再或者簡化為:

@SessionAttributes("user2")
//value為預設屬性

這樣,第一個註解是將”user1”,”user3”加入到session中,在瀏覽器中可以session呼叫這兩個模型資料。
同理,第二個註解是將user2加入到session中,在瀏覽器中可以session呼叫這user2模型資料。

執行註解一結果:
這裡寫圖片描述

執行註解二:
這裡寫圖片描述

可以看出,session請求域中成功加入我們指定的模型。