javaweb会话及其会话技术

一、学习目标
1.会话概述
2.Cookie对象
3.Session对象
二、重点知识
1.会话概叙
在客户端与服务器端交互的过程中,会产生一些数据。例如,用户甲和用户乙分别登录了购物网站,甲购买了一个Nokia手机,乙购买了一个iPad,当这两个用户结账时,Web服务器需要对用户甲和乙的信息分别进行保存。在前面章这两个对象都不可行,具体原因:
(1)HttpServletRequest对象,该对象只能保存本次请求所传递的数据。由于购买和结账是两个不同的请求,因此,在发送结账请求时,之前购买请求中的数据将会丢失;
( 2)使用ServletContext 对象保存数据时,由于同一个Web应用共享的是同一个ServletContext对象,因此,当用户在发送结账请求时,由于无法区分哪些商品是哪个用户所购买的,而会将该购物网站中所有用户购买的商品进行结算,这显然也是不可行的;
(3)为了保存会话过程中产生的数据,在Servlet技术中,提供了两个用于保存会话数据的对象,分别是Cookie和Session。
2. Cooklie 对象
cookie是一种会话技术,它用于将会话过程中的数据保存到用户的浏览器中,从而使浏览器和服务器可以更好的地进行数据交互。为了封装Cookie信息,在Servlet API中提供了一个javax.servlet.http.Cookie 类,该类包含了生成Cookie信息和提取Cookie信息各个属性的方法。Cookie 的构造方法和常用方法。
2.1 什么是Cookie?
在现实中,就如同再超市购物时,超市经常会赠送顾客一张会员卡, 卡上记录用户的个人信息(姓名、手机号等)、消费额度和积分额度等。顾客一旦接受了会员卡,以后每次光临该商场时,都可以使用这张会员卡,商场也将根据会员卡上的消费记录计算会员的优惠额度和累加积分。在Web应用中,Cookie的功能类似于这张会员卡,当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息, 这些信息都保存在Cookie 中这样,当该浏览器再次访问服务器时,都会在请求头中将Cookie 发送给服务器,方便服务器对浏览器做出正确的响应。
2.2 Cookie常用的API
(1)构造方法:
1)得到cookie对象:Cookie cookie = new Cookie(String key,String value);
2)在Cookie的构造方法中,参数name用于指定Cookie的名称,value用于指定Gookie的值。需要注意的是,Cookie一旦创建,它的名称就不能更改,Cookie 的值可以为任何值,创建后允许被修改。
3)Cookie类常用的方法:

回写(响应)cookie到浏览器端: response.addCookie(cookie);
得到cookie的名称 :String key= cookie.getName(),
得到cookie的值: String value =cookie.getValue();
给cookie设置生命时长: setMaxAge(int sr);
eg:cookie.setMaxAge(606024*7),说明cookie能存活7天;

2.3 cookie分类:

1)会话级别cookie,浏览器关闭,cookie对象就销毁了;
2)持久化cookie,通过setMaxAge这个方法来设置。

(1)给cookie设置路径、域名:

setPath(路径的url),setDomain(域名);
eg:域名就是服务器名称,比如www.baidu.com

(2)得到cookie: Cookie[] cookies = request.getCookies();
2.4 cookie常用方法
在这里插入图片描述
1)setMaxAge (int expiry )和getMaxAge()方法
上面的这两个方法用于设置和返回Cookie在浏览器上保持有效的秒数,如果设置的值为一个正整数时,刘览器会将Cokie信息保存在本地硬盘中。从当前时间开始,在没有超过指定的秒数之前,这个Cookie都保持有效,并且同一台计算机上运行的该浏览器都可以使用这个Cookie信息。如果设置值为负整数时,浏览器会将Cookie信息保存在缓存中,当浏览器关闭时,Gookie信息会被删除。如果设置值为0时,则表示通知浏览器立即删除这个Cookie信息。默认情况下,Max- Age属性的值是-1。
2 ) setPath ( String uri )和getPath()方法
上面的这两个方法是针对Cookie的Path属性的。如果创建的某个Cookie对象没有设置Path属性,那么该Cookie只对当前访问路径所属的目录及其子目录有效。如果想让某个Cookie项对站点的所有目录下的访问路径都有效,应调用Cookie对象的setPath()方法将其Path属性设置为“/”。
3 ) setDomain ( String pattern )和getDomain()方法
上面的这两个方法是针对Cookie的domain属性的。domain属性是用来指定浏览器访问的域。例如,传智播客的域为“icast.n."。 那么,当设置domain属性时,其值必须以“.”开头,如domain= tcast.c.默认情况下,domain属性的值为当前主机名,浏览器在访问当前主机下的资源时,都会将Cookie 信息回送给服务器。需要注意的是,domain属性的值是不区分大小写的。

使用setMaxAge(int expiry)时,有以下几种情况,如下
1.通常情况下 expiry 参数应为大于0的整数,表示cookie的有效期存活时间
2.如果设置expity参数等于0,表示从客户端删除该cookie
3.设置 expiry 参数为负数或者不设置,表示cookie会在当前窗口关闭后失效

3 Session对象
3.1 什么是session?

session是一种会话管理技术,session用来保存会话过程中的数据,保存的数据存储到服务器端。
session原理:基于cookie实现的,更确切的说是基于会话级别的cookie实现的。

3.2 HttpSession API

session常用方法:
1)得到session的id(JESSIONID对应的值): getId();
2)设置session的生命时长:setMaxInactiveInterval(int interval)
3)销毁session: invalidate();
得到session: HttpSession session = getSession();
session域对象:作用范围一次完整的会话(包含多个请求)
1.存值: setAttribute(String key,Object obj);
2.取值: Object obj =getAttribute(String key);
3.移除: removeAttribute(String key); 
</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值