会话及会话技术

一、会话概述
目标:了解会话的概念,能够知道会话用于做什么

在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话。在打电话过程中,通话双方会有通话内容,同样,在客户端与服务器交互的过程中,也会产生一些数据。例如,用户甲和乙分别登录了购物网站,甲购买了一个iPhone手机,乙购买了一个iPad,当这两个用户结账时,Web服务器需要对用户甲和乙的信息分别进行保存。为了保存会话过程中产生的数据,Servlet提供了两个用于保存会话数据的对象,分别是Cookie和Session。

二、Cookie对象
(一)什么是Cookie
目标:了解什么是Cookie
1、Cookie的概念
在现实生活中,当顾客在购物时,商城经常会赠送顾客一张会员卡,卡上记录用户的个人信息(姓名,手机号等)、消费额度和积分额度等。顾客一旦接受了会员卡,以后每次光临该商场时,都可以使用这张会员卡,商场也将根据会员卡上的消费记录计算会员的优惠额度和累加积分。在Web应用中,Cookie的功能类似于会员卡,当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,如用户信息和商品信息,这些信息都保存在Cookie中。这样,当该浏览器再次访问服务器时,会在请求头中将Cookie发送给服务器,方便服务器对浏览器做出正确地响应。
2、如何设置Cookie
服务器向客户端发送Cookie时,会在HTTP响应头字段中增加Set-Cookie响应头字段。Set-Cookie头字段中设置的Cookie的具体示例:Set-Cookie: user=howard; path=/;
user表示Cookie的名称,howard表示Cookie的值,path表示Cookie的属性。Cookie必须以键值对的形式存在,Cookie属性可以有多个,属性之间用分号“;”和空格分隔。
2、Cookie操作示意图
当用户第一次访问服务器时,服务器会在响应消息中增加Set-Cookie头字段,将用户信息以Cookie的形式发送给浏览器。一旦用户浏览器接受了服务器发送的Cookie信息,就会将它保存在浏览器的缓冲区中,这样,当浏览器后续访问该服务器时,都会在请求消息中将用户信息以Cookie的形式发送给服务器,从而使服务器分辨出当前请求是由哪个用户发出的。

(二)了解Cookie API
目标:掌握Cookie类的构造方法和常用方法
1、构造方法
Cookie类有且仅有一个构造方法,具体语法格式:public Cookie(java.lang.String name, java.lang.String value);
在Cookie的构造方法中,参数name用于指定Cookie的名称,value用于指定Cookie的值。需要注意的是,Cookie一旦创建,它的名称就不能再更改,Cookie的值可以为任何值,创建后允许被修改。
2、常用方法
方法声明    功能描述
String getName()    用于返回Cookie的名称
void setValue(String newValue)    用于为Cookie设置一个新的值
String getValue()    用于返回Cookie的值
void setMaxAge(int expiry)    用于设置Cookie在浏览器客户机上保持有效的秒数
int getMaxAge()    用于返回Cookie在浏览器客户机上保持有效的秒数
void setPath(String uri)    用于设置该Cookie项的有效目录路径
String getPath()    用于返回该Cookie项的有效目录路径
void setDomain(String pattern)    用于设置该Cookie项的有效域
String getDomain()    用于返回该Cookie项的有效域
void setVersion(int v)    用于设置该Cookie项采用的协议版本
int getVersion()    用于返回该Cookie项采用的协议版本
void setComment(String purpose)    用于设置该Cookie项的注解部分
String getComment()    用于返回该Cookie项的注解部分
void setSecure(boolean flag)    用于设置该Cookie项是否只能使用安全的协议传送
boolean getSecure()    用于返回该Cookie项是否只能使用安全的协议传送
(1)setMaxAge(int expiry)方法和getMaxAge()方法
setMaxAge(int expiry)和getMaxAge()方法分别用于设置和返回Cookie在浏览器上保持有效的秒数。如果设置的值为一个正整数,浏览器会将Cookie信息保存在本地硬盘中。从当前时间开始,在没有超过指定的秒数之前,这个Cookie都保持有效,并且同一台计算机上运行的该浏览器都可以使用这个Cookie信息。如果设置值为负整数,浏览器会将Cookie信息保存在浏览器的缓存中,当浏览器关闭时,Cookie信息会被删除。如果设置值为0,则浏览器会立即删除这个Cookie信息。
(2)setPath(String uri)方法和getPath()方法
setPath(String uri)方法和getPath()方法是针对Cookie的Path属性的。如果创建的某个Cookie对象没有设置Path属性,那么该Cookie只对当前访问路径所属的目录及其子目录有效。如果想让某个Cookie项对站点的所有目录下的访问路径都有效,应调用Cookie对象的setPath()方法将其Path属性设置为“/”。
(3)setDomain(String pattern)方法和getDomain()方法
setDomain(String pattern)方法和getDomain()方法是针对Cookie的domain属性的。domain属性用于指定浏览器访问的域。例如,泸职院的域为“lzy.edu.cn”。设置domain属性时,其值必须以“.”开头,如domain=.lzy.edu.cn。默认情况下,domain属性的值为当前主机名,浏览器在访问当前主机下的资源时,都会将Cookie信息发送给服务器(当前主机)。需要注意的是,domain属性的值不区分大小写。
(三)使用Cookie的语法
1、导入包
import = "javax.servlet.http.Cookie"
2、创建Cookie
Cookie newCookie = new Cookie("parameter", "value");
参数    含义
parameter    用于代表cookie的名称(key)
value    用于表示当前key名称所对应的值
3、写入Cookie
response.addCookie(newCookie)
(四)Cookie案例演示 - 显示用户上次访问时间
1、创建Web项目
Web项目 - CookieDemo

设置项目名称与保存位置

单击【Finish】按钮

2、修改Artifact名称,重新部署项目
在项目结构窗口里修改Artifact名称

编辑服务器配置,重新部署项目,URL变成http://localhost:8080/CookieDemo/

修改首页

启动服务器,查看效果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值