1. 程式人生 > >springmvc學習筆記(11)——SessionAttributes

springmvc學習筆記(11)——SessionAttributes

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})

使用方法都是一樣的,其他具體程式碼就不再演示了。