1、Session小结
① Session是存在服务器的内存中;
② 一个用户的浏览器是独占一个session域对象;
③ Session的生命周期默认为30min,可以通过web.xml文件对生命周期进行修改;
修改方式有两种:
a、在tomcat中,conf/web.xml文件中进行修改
<session-config>
<session-timeout>30</session-timeout>
</session-config>
b、在web应用中,web.xml文件
④ Session中可以存放多个属性
⑤ Session中也可以存放多个对象
⑥ Session.setAttribute(‘name’,val),如果名字重复,则会替换该属性。
PS:Cookie知识点补充
在Cookie中,不能够传入中文,否则读取数据出现乱码的情况。
解决方法如下:
存放
使用java.net.URLEncodder.encode(‘胡蝶’,”utf-8”);
可以传入的值转换成为utf-8的格式,
读取值得时候进行解码
使用java.net.URLDecoder.decode(cookie.getvalue(),”utf-8”);
2、Session的生命周期
session.getMaxInactiveInterval(20);表示设置的时间为20S
问题:通过这种方式设置的是session的(间隔时间)发呆时间,那何为发呆时间?
其实所谓的发呆时间就是指如果在这20s的时间内不去访问这个session中存储的属性,该session中的属性 就会失效,也就是说无法访问到,如果在第19S中的时候对该session中的属性进行访问,那session则会从你 19s访问属性的 这一刻重新计算时间。
即表示当时间超过了20s,这个session就不存在了。
¤如果重启tomcat,或者reload web应用或者关机之后,session就会失效。
¤我们也可以通过函数的方式,让session失效
Invalidate()=è该方法是让session中所有的属性失效,一般用于银行的登录系统中,如安全退出。
对比Cookie
Cookie设置的是cookie.getMaxAge(20);
该Cookie设置的生命周期是累计的时间,如果设置为20s那就表示只要超过这20s不访问Cookie中的属性,那该 属性就是失效的。就算在第19S对Cookie中的属性进行访问,在20s之后,Cookie中的属性依然会失效,不会重新 计算时间。