Web应用中,会话指在一段时间内,一个用户通过浏览器与服务器之间进行的一系列的请求和响应的交互过程。在一个会话中,用户可以访问该Web应用系统中包括网页在内的多种资源。
当用户(浏览器)向Web应用服务器发送第一次请求时,服务器会为该用户创建一个唯一标识的会话,会话一直延续到访问结束(浏览器关闭或用户长时间不访问Web应用)。JSP使用session对象表示会话,即将信息保存在session对象中,方便用户在这个会话中随时获取。
session运行机制
当Web应用系统接收到客户端浏览器的请求时,首先检查服务器是否已经为这个客户端创建了session,即判断客户端的请求中是否包含了一个session ID(session唯一标识),如果包含sessionID,则服务器就会通过sessionID找到对应的session,以确定是这个客户端访问服务器;而如果客户端的请求中没有sessionID,服务器会为该客户端创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端。
客户端没有禁用cookie的情况下,客户端使用cookie保存sessionID。如果cookie禁用,则会自动转化为用URL-rewriting(URL重写,URL中包含sessionID)技术实现。
session常用方法
setAttribute:设置指定名字的参数值;session中保存的对象随Tomcat服务器正常关闭(通过shutdown.bat关闭)而保存到work文件夹相应目录中(Tomcat安装根目录\work\Catalina\localhost\XXX),随Tomcat的启动而重新使用。
getAttribute:获取指定属性的值,如果该属性值不存在则返回null;
removeAttribute:删除session中的一个属性
getId():获取sessionID
isNew():每个请求是否会产生新的session对象
setMaxInactiveInterval():设置停止操作后session对象的有效时间。
session与cookie比较
session | cookie | |
---|---|---|
保存位置 | 服务器端 | 浏览器客户端 |
存储类型 | 对象 | 字符串 |
生命周期 | 随会话结束而关闭 | 可指定时长 |
存放信息重要性 | 重要信息 | 非重要信息 |