我的学习之路_第三十三章_会话技术session&cookie

会话技术 cookie & session

会话技术:再一段时间内,让服务器记得某个访客,在此段时间内,可以在不同的页面上共享数据。就像是一通电话,只要不挂断,在此
通电话内进行的对象(回答)就是客户端浏览器和服务器之间的请求和响应。


如果商店是服务器,客人是浏览器的话。会话就相当于是客人在商店里注册了会员,
发一张会员卡,会员信息都保存在卡里,卡在用户手里( Cookie )
商店保存会员的手机号,根据手机号可以查找会员信息( 会员信息保存在商店的电脑里 ) ( Session )


Cookie(服务器创建,客户端使用)

保存在浏览器磁盘上的一种会话技术

写入 Cookie :

●Servlet中,创建Cookie对象(字符串的键值对)

Cookie cookie = new Cookie(String name,String value);

●设置Cookie 的相关参数(可省略)
路径;在访问本WEB项目中的哪个路径时携带Cookie(默认为所有页面)

有效期:Cookie在浏览器的磁盘中保存多久(默认是浏览器打开的期间)

●通过响应对象,把Cookie写入的浏览器缓存(磁盘)

resp.addCookie(cookie)

Cookie在被写入浏览器后,之后访问此项目时,所有的请求中自动在请求头中携带之前写入的Cookie。(无论访问本WEB项目中的
哪个页面,Cookie默认是都要携带的)

优点:服务器压力小,断电不消失
缺点:不安全,不可靠

Cookie用法的总结:

写: 创建对象 new Cookie(String name , String value)

设置属性 cookie.setMaxAge()/cookie.setPath() , setMaxAge(0) 相当于删除

写入 resp.addCookie(cookie)

读: Cookie[] req.getCookie() //有可能为空

取得名和值 cookie.getName() / getValue()
其他设置也可以取得 getMaxAge/getPath


Session

保存在服务器内存的一种会话技术

优点:速度快,可以保存对象,安全可靠

缺点:项目关闭会消失,占内存

Session生命周期:

创建:用户第一次访问时创建会话

销毁:超过指定的时间内,用户没有再向项目发送请求(默认是30分钟)

服务器如何区分请求是属于哪一个会话的:

通过一个叫JSESSIONID的cookie来识别的.浏览器在给服务器发请求时,会生成一个随机且唯一的序列号,以JSESSIONID的名字,当成
cookie发给服务器,在某一个时间范围内同一个浏览器发送给同一个WEB项目的JSESSIONID是相同的,所以对于服务器来说,只要请求中的cookie
中的JSESSIONID值相同,就代表这些请求时属于同一个Session(会话)的.


注意:Session只有两种情况会销毁:

第一种: 过期

第二种:项目的非正常关闭:正关闭项目时,Session会被写入磁盘,下次正确启动,保存在磁盘中的Session会被回复到内存中.

如何使用:

如何取得Session:HttpSession req.getSession()

如何使用:Session是域对象

setAttribute()

getAttribute()

removeAttribute()

Session 所代表的范围:某一个客户和服务器之间的在某一段时间内的会话(在这段时间内的请求可以用Session来共享数据)


session主要是 企业开发使用,很少用cookie

互联网项目: 大量使用cookie(可有可无的数据用cookie)

小总结

会话:某个访客在一些请求之间共享数据的技术
Cookie:保存在浏览器磁盘
生命周期:
起始:服务器把Cookie加入响应头发回给浏览器,浏览器把Cookie写入磁盘。
结束:
默认:浏览器关闭
设置了有效期:过期消失
浏览器清理Cookie
用法:
写入:
创建Cookie对象:new Cookie( String name, String value )
可以设置属性:cookie.setMaxAge( int 秒数 ) / cookie.setPath( String 客户端的WEB路径 )
加入响应头:resp.addCookie( cookie ) //不一定能写入,因为浏览器可以设置为禁用Cookie的
读取: Cookie是在路径有效的情况下在浏览器向服务器发请求时自动带在请求头中的
Cookie[] req.getCookies()//可能为null
cookie.getName() / cookie.getValue() / cookie.getPath() / cookie.getMaxAge()
Session: 保存在服务器内存中的
生命周期:
创建:用户第一次访问服务器时创建与服务器之间的会话(Session)
销毁:
过期销毁:项目正常关闭时,Session会被WEB服务器写入磁盘,下次启动时再从磁盘读出,恢复到内存。(过期时间默认为30分钟)
项目非正常关闭:直接在内存中消失
使用方式: Session是域对象
setAttribute
getAttribute
removeAttribute

posted on 2017-07-30 23:35  贾_jia  阅读(115)  评论(0编辑  收藏  举报

导航