HTTP协议的无状态
在HTTP协议中无状态的优缺点
a) HTTP交互是无状态的
无状态是指当浏览器发送请求给服务器的时候服务器响应但是同一个浏览器再发送请求给服务器的时候他会响应但是他不知道你就是刚才那个浏览器
b) 优点
i 客户浏览器不会注意到服务器出现故障并重启
ii 在服务器不需要先前信息时它的应答就较快
c) 缺点
i 对于事务处理没有记忆能力可能导致每次连接传送的数据量增大
ii 很难产生收集信息去产生良好用户体验的一组页面
HTTP如果有状态的好处
a) 减少数据的传送量
b) 认证网页可以收集用户的认证信息
c) 可以定义用户的对网页的访问权限
Cookie的原理和应用
Cookie
a) 定义
是一种由服务器发送给客户的片段信息存储在客户端浏览器的内在中或硬盘上在客户随后对该服务器的请求中发回它
b) Cookie规范
i Netscape规范(版本)
ii RFC(HTTP状态管理机制版本)
c) 响应报头
SetCookie: NAME=VALUE; Comment=value; Domain=value; MaxAge=value; Path=value; Secure; Version=*DIGIT
d) 其他
Cookie中文译为小甜饼是由Netscape公司发明的Netscape公司也是最早开发浏览器的公司在互联网刚刚发展的前期它凭借着先入为主的优势Netscape也曾经成为最流行的浏览器但由于windows的普及微软公司将IE浏览器与windows进行绑定销售Netscape逐渐销声匿迹不为人知了但现在大多数的互联网协议与规范都源于Netscape公司的产品Cookie就是其中之后它是一种由服务器发送给客户的片段信息它可以存储在客户端浏览器的内在中或硬盘上然后在客户随后对该服务器的请求中发回它Cookie目前遵循的规范主要是两种一个就是Netscape规范它的规范文件可以在找到另一个是RFC它的规范文件可以在上找到这两个规范规定了在HTTP协议中关于cookie的报头的形式比如在RFC规范中规定了响应报头的形式是这样子的Name是cookie的名字vlue是它的值Name=value属性值对必须首先出现在此之后的属性值对可以以任何顺序出现Comment属性是可选的因为cookies可能包含关于用户私有的信息这个属性允许服务器说明这个cookie的使用用户可以检查这个信息然后决定是否加入或继续会话 Domain属性是可选的用于指定Cookie在哪一个域有效所指定的域必须以点号开始Maxage属性是可选可的用于定义Cookie的生存时间以秒为单位如果超过了这个时间客户端应该丢弃这个cookie如果指定的秒数为表示这个cookie应该立即被丢弃Path属性是可选的用于指定这个cookie在哪一个URL子集下有效Secure属性是可选的它没有值用于指示浏览器使用安全的方式与服务器交互Version属性是必需的它的值是一个十进制的整数标识cookie依照的状态管理规范的版本对于RFC Version应该设为
使用Cookie编程
a) 特点
i 以键值对的方式记录会话跟蹤的内容
ii Cookie的持久性较高
iii 用户可以手动限制cookie的使用
iv Session可以用来替代Cookie
设置一个Cookie
a) 创建cookie:
Cookie c = new Cookie("MyName" "MyValue");
b) Cookie的方法
i getConnment()setComment(String purpose)
ii getDomain()setDomain(String pattern)
iii getMaxAge()setMaxAge(int expiry)
iv getName()getValue()
v setValue(String newValue)
vi getPath()setpath(String uri)
c) 使用cookie
i ResponseaddCookie()
ii RequestgetCoonkie()
实例—登录程序
a) 功能
i 使用cookie来保存用户登录信息
ii 初次登录将信息保存到客户端的硬盘上
iii 再次访问先验证用户登录信息通过后显示欢迎信息
b) 步骤
i 第一步编写LoginServletjava和GreetServletjava
ii 第二步编译JAVA源文件
iii 第三步部署servlet
实例—LoginSerlvet
实例—GreetServlet
向浏览器输出会话
a) Cookie
i 跟蹤跟浏览器有关的会话
ii 有些浏览器不支持
iii 有些用户由于安全原因不使用
b) 重写URL
i 通过一个请求URL的会话ID把一个会话绑定到一个浏览器上
ii 耗费时间去扫描页面和URL重定向
iii 使用encodeURL()和encodeRedirectURL()
Session的原理和应用
Session
a) 定义
i 一个浏览器到一个服务器相关的HTTP交互的集合
ii 是被浏览器访问的Servlet获取的与那些交互相关的数据集合
b) javaxservlet支持的接口
HttpSession接口
a) HttpSession接口中的方法
i public Object getAttribute(String name)
ii public void setAttribute(String nameObject value)
iii public void removeAttribute(String name)
iv public int setMaxInactiveInterval()
v public void invalidate()
补充说明
a) Servlet运行就会创建会话
b) Servlet可以通过下面的方法来获得session对象:
getSession()
c) 任何servlet可以请求创建会话
d) 对处理目标浏览器中请求的所有Servlet都可以访问会话中的信息
e) 会话会由于浏览器的不活跃而超时而失效
Cookie和Session比较
a) session
i 由服务器端创建
ii 由服务端保存信息
iii 打开新的浏览器就会开始一次新的会话
b) Cookie
i 由服务器发送给客户端的片段信息存储在客户端浏览器的内存中或硬盘上
ii 由客户端保存信息
iii 在cookie有效期间内多个浏览器可访问同一个cookie对象
回顾Cookie和Session
Cookie在一个浏览器中存储一个变量和对应的值
Cookie可以由浏览器用户配置
不是所有的浏览器都支持Cookie
可以使用addCookie()和getCookie ()方法获取Cookie
session是由浏览器和网络服务器之间的交互所关联的数据集合
每打开一个浏览器就会创建一个新的session对象
会话开发时存在下列方法:
getSession()
setAttribute(key value)
getAttribute(key)