12.会话跟踪技术

session:由服务器创建,存在服务器上

Cookie:由服务器创建,存在客户端(本地电脑浏览器缓存)


Session的使用

1.客户端第一次访问Web服务器时,服务器为客户端创建一个会话,并产生唯一的SessionID。

2.服务器响应客户端,将SessionID回传给客户端。

2.客户端再次向Web服务器发出请求时,附带SessionID。服务器根据SessionID来唯一标识客户

 HttpServletRequest创建HttpSession实例

方法名说明
request.getSession() 调用此方法时,容器会先检查客户端先前发送的请求是否建立过HTTP会话,如果没有,容器会创建一个新会话,并赋予一个唯一的会话ID;如果没有则容器会根据可会请求中的会话ID找到匹配的会话
request.getSession(boolean flag)此方法的flag用于指定是否有必要创建一个会话。调用时,如果客户端先前没有建立会话,则此方法返回null

 Session的常用方法

方法名说明
public void setAttribute(String name,Object value)根据指定名称将对象保存至会话中
public Object getAttribute(String name)根据指定名称从会话中获取某个属性的值
public void removeAttribute(String name)从会话中移除指定名称的属性
public String getId()返回Session的ID。该ID由服务器创建,不会重复
public void isNew()判断当前会话是否是新建的会话
public void invalidate()使当前Session失效
public void setMaxInactiveInterval(int seconds)设置Session的有效时间,单位为秒(默认30min)
public int getMaxInactiveInterval()返回Session的有效时间,单位为秒


Cookie的使用

方法说明
Cookie(String name,String value)构造方法,用于创建一个Cookie实例,name用于指定Cookie的名称,value指定他的值
public String getName()用于获取Cookie的名称
public void setValue(String value)用于设置Cookie的值
public String getValue()用于获取Cookie的值
public void setMaxAge()用于设置Cookie在客户端浏览器上保存的有限时间的秒值
public int getMaxAge()用于获取Cookie在客户端浏览器上保存的有限时间的秒值
response.addCookie()向响应中添加cookie
request.getCookies()获取Cookies数组

设置Cookies的有效期时

如果MaxAge设置为负数,表示该Cookie仅在本浏览器或者本窗口打开的子窗口有效。

为负数的Cookie是临时挂起的,不会被持久化(吧内存中的东西以文件的形式存储到本地),也不会写入到Cookie文件中

如果MaxAge设置为0时,则表示删除该Cookie。

失效的Cookie会被浏览器从Cookie文件内容中删除。

如果MaxAge设置为正数,表示该Cookie在指定秒数后失效。


Session与Cookie比较

从存储方式上比较

Cookie中只能保存字符串,不能存储java对象。

Session可以存取任何类型的数据

 从有效期上比较

Cookie设置属性后可以实现永久保存的效果

Session无法实现信息永久有效保存的效果

从服务器负负担上比较

Cookie保存在客户端,不占用服务器资源

Session保存在服务器上。如果访问用户非常多,消耗大量的服务器内存,严重影响服务器性能

从浏览器支持上比较

Cookie需要客户端浏览器支持才可以使用

Session只能在本浏览器窗口及其子窗口有效

从安全性上比较

Cookie是服务器保存在客户端的一组数据,数据容易被窃取

Session的信息保存在服务器端,安全性上要比cookie高很多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值