菜鳥SpringMVC學習筆記2——@SessionAttributes註解與@RequestMapping
阿新 • • 發佈:2019-01-31
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請求域中成功加入我們指定的模型。