今天我听了冯老师讲的session课程:我做了简单的笔记
1. session用来存取大量的数据;可以看做一个容器;
2. 用sessionID(String类型的,唯一的,保存在客户端)来标识session,
3. session保存在服务器端,session多了会降低服务器的性能
4. 采用cookie保存sessionId
5. 由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,
6. 一种是作为URL路径的附加信息,表现形式为http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbz
7. WoWiBYEnLerjQ99zWpBng!-145788764
8. 另一种是作为查询字符串附加在URL后面,表现形式为http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEb
9. 另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器,这种技术现在已较少应用.
10. session cookie是存储于浏览器内存中的,并不是写到硬盘上的
11. ,session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本。
12. 关闭浏览器,只会使浏览器端内存里的session cookie消失,但不会使保存在服务器端的session对象消失
1. 服务器创建session
a) 获取和request对象相关的session,如果有,则取得session,如果没有则创建新的session:HttpSession session=request.getSession(true);
b) request.getSession(false):获取和request对象相关的session, 如果有,则取得session,如果没有,则返回null,
c) request.getSession与request.getSession(true)相同;
2. 获取sessionID:
a) session.getID();
b) isNew ():判断是否是新创建的Session,如果是新创建的Session,返回true,否则返回false
c) getMaxInactiveInterval() :读取当前Session可以处于不活动状态的最大时间间隔,可以在tomcat的con/web.xml里面配置
d) session.getCreationTime() :获得Session对象的创建时间
e) session.getLastAccessedTime():最后一次操作时间
f) 转换时间:new Date(session.getCreationTime());
3. 注销功能:
a) 删除session:session.invalidate() 使当前的Session失效,servlet 容器会释放HttpSession对象占用的资源
4. Session的超时管理
a) WEB服务器采用“超时限制”的办法来判断客户端是否还在继续访问,可以在tomcat的con/web.xml里面配置,如果某个客户端在一定的时间之内没有发出后续请求,WEB服务器则认为客户端已经停止了活动,结束与该客户端的会话并将与之对应的HttpSession对象变成垃圾。
b) 可以在自己的web.xml里面配置超时时间<session-config><session-outtime>20</session-config></session-config>,他会覆盖服务器的配置
c) 也可以用session.setMaxInactiveInterval(10)参数是秒;设置的是当前会话的失效时间,不是整个web服务的,他可以覆盖当前工程的配置;
5. session在下列情况下被删除:
a) 程序调用HttpSession.invalidate()
b) 距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间
c) 服务器进程被停止
6. session对象的主要方法:
a) session中如何存放对象:String username=“zhang”;session.setAttribute(“username_1”,“username”)
i. 第一个参数为key(值为String),第二个参数为value(值为Object)
b) 获取sessio对象的值:session.getAttribute(“username_1”);
i. 返回值为String, ,如果key不存在则返回null