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

使用方法都是一样的,其他具体代码就不再演示了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值