springmvc學習筆記(11)——SessionAttributes
阿新 • • 發佈:2018-12-30
SessionAttributes
這次來學習一個新的註解SessionAttributes
這個註解可以把資料放到Session中,很簡單,看程式碼:
public class Student {
private String id;
private String name;
private String age;
private Address address;
public String getId() {
return id;
}
public void setId(String id) {
this .id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age
+ ", address=" + address + "]";
}
}
@SessionAttributes(value="student" )
@Controller
public class HelloCtrl {
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Model model){
Student student = new Student();
student.setId("123");
student.setName("jack");
student.setAge("22");
model.addAttribute("student",student);
return "hello";
}
}
程式碼解析
有沒有注意到,SessionAttributes這個註解不是放在方法上,而是放在類上。
請注意,該註解一定只能放在類上。
在testSessionAttributes方法中,我們定義了一個變數Student,存入Model返回給介面,SessionAttributes註解的value屬性為student,於是Student student
在存入請求域的同時,也會被存入session域。
前端獲取值:
reqeust:${requestScope.student }<br>
session:${sessionScope.student }
結果截圖:
結果顯示,無論是請求域還是session域中,都能獲取到student
注意:SessionAttributes的value值必須和要存入的session的變數名相同。
SessionAttributes的types屬性
SessionAttributes除了有value屬性,還有types屬性,該屬性可以說明了存入session的型別。比如:
@SessionAttributes(value="student",types={Integer.class})
以上程式碼表示將student物件和型別為Integer的變數存入session。
控制層:
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Model model){
Student student = new Student();
student.setId("123");
student.setName("jack");
student.setAge("22");
model.addAttribute("student",student);
model.addAttribute("count",123);
return "hello";
}
前端獲取值:
reqeust:${requestScope.count }<br>
session:${sessionScope.count }
結果截圖:
事實證明,Integer型別的123被自動存到了session中。
value 和 types屬性都可以存入多個值
@SessionAttributes(value={"student","address"},types={Integer.class,String.class})
使用方法都是一樣的,其他具體程式碼就不再演示了。