今天我听了冯老师讲的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