JavaWEB中的Cookie
来源:互联网 发布:导游软件 编辑:程序博客网 时间:2024/06/05 20:21
今天我们来说一说在JavaWEB项目中遇到的Cookie的问题。
1. 提出问题
WEB协议是一种无状态协议,即WEB服务器本身并不可以识别出哪些请求是同一个浏览器发出的,因为浏览器的请求都是孤立的。但是,我们希望WEB服务器可以提供一种机制来唯一的标识一个浏览器,并且记录这个浏览器的状态。这里的一个浏览器也可以指代会话对象。
2.会话和会话状态
① 会话:WEB浏览器和WEB服务器之间连续的一系列的请求和响应的过程称之为会话。
② 会话状态:指的是WEB浏览器和WEB服务器在会话过程中产生的状态信息,这些状态信息的作用是可以让WEB服务器将同一个会话中的一系列的请求和响应关联起来。
3.WEB服务器实现有状态的会话的两种方式
有状态的会话,WEB服务器要从大量的请求中分辨出哪些请求属于同一个浏览器,即WEB服务器可以识别同一个浏览器的请求,这就需要WEB浏览器对其发出的每一个请求都进行标识,属于同一个会话中的请求消息都附带同样的标识号,而属于不同的会话当中的请求则总是附带不同的标识号,这个唯一的标识号就是会话ID,即SessionID。
① Cookie机制
② Session机制
4.Cookie机制
① Cookie机制采用在客户端即浏览器端保存HTTP状态消息的方案。
② 实现原理
当浏览器第一次发出请求时,服务器会在相应头中设置一个set-Cookie的响应头字段,同时传递给浏览器一个小文本文件,一旦浏览器保存了某个Cookie,那么它以后每次访问服务器,都会在请求头中添加Cookie字段将其再返回给服务器。
③ 一个Cookie只可以标识一种信息,且至少含有一个标识符请求名称name和标识符请求值value。
④ 一个web站点可以给同一个浏览器发送多个Cookie,一个浏览器也可以保存多个web站点提供的cookie。
⑤ 一般浏览器只允许保存300个cookie,每个站点最多只能有20个cookie,每个cookie的大小限制是4KB。
5.在servlet中使用cookie
① servletAPI提供了一个类Cookie,用来封装Cookie的信息和操作其中信息的方法。
构造器(String name,String value) getName() get/setValue() get/setPath() set/getMaxAge()
② HttpServletResponse中提供了一个方法可以将Cookie对象从服务器端返回到浏览器端,addCookie(Cookie cookie)
③ HttpServletRequest提供了一个方法可以将Cookie对象从浏览器中的请求中获取出来,getCookies(),返回的是一个Cookie的数组对象。
6.发送一个Cookie
① 在保存在服务器端的JSP中创建一个Cookie对象,其中包含name和value值。
② 然后对这个Cookie对象设置最大有效时长,使用setMaxAge()方法,参数的单位是S。
③ 将这个Cookie对象从保存在服务器端的JSP中发送到浏览器中,调用response.addCookie(Cookie cookie)方法。
需要注意的是:默认情况下,若不为某个Cookie对象设置在浏览器存活的最大时长,那么这个Cookie对象在浏览器的生命周期就默认是会话级别的,且会话级别的Cookie存放在浏览器的内存中,当浏览器关闭时,这个Cookie就删除了;而如果对某个Cookie设置了存放浏览器的最大时长,那么这个Cookie就不再是会话级别的Cookie了,它将保存在电脑的磁盘中,直到超过我们设置的最大时长(即使关闭浏览器关闭了一次回话之后,再打开浏览器,这个Cookie依然有效)。我们通过setMaxAge(s)方法来对某个Cookie进行在浏览器上生命周期时长的设定。值为0表示浏览器接收到Cookie对象后立即删除,值为负数表示创建Cookie,置为整数表示当前Cookie存活在浏览器上的时长,单位为秒。
④如何删除一个Cookie
即通过cookie.setMaxAge(0)方法设置这个Cookie对象的存活时长为0,并且调用response.addCookie()方法将这个Cookie对象再返回给浏览器,那么浏览器在接收到响应的时候就会立即删除这个Cookie对象。
7.设置Cookie的作用路径
我们知道Cookie对象只可以作用当前Cookie所在JSP文件的同级文件,或其同级文件的子文件,而不可以作用上级文件的同级文件及同级文件的子文件。但是我们希望Cookie可以作用在整个项目工程中,就需要我们在创建好一个Cookie之后调用其setPath()方法来设置当前Cookie作用的路径了。
需要注意的是,方法的参数可以是/,代表当前WEB应用的根目录,也可以是request.getConteexPath()代表当前WEN站点的根目录。
- JavaWeb中的Cookie
- javaWeb中的cookie
- javaweb中的cookie
- javaweb中的cookie技术
- javaweb中的cookie
- javaWeb中的Cookie
- JavaWEB中的Cookie
- javaweb中的cookie的应用
- Javaweb中的cookie与session
- JavaWeb之-------------网页中的Cookie技术
- JavaWeb开发中的会话技术[Cookie/Session]
- 【JavaWeb】Cookie
- JavaWeb Cookie
- javaWeb---cookie
- JavaWeb Cookie
- 【JavaWeb】cookie与session
- JavaWeb---Cookie的使用
- javaweb--Cookie&Session
- 高德地图通过经纬度定位并打上标记
- HttpClient post提交请求乱码问题解决
- 深度优先搜索--N皇后问题
- 菜鸟笔记0913
- CyberLink AudioDirector Ultra v6.0.5626 中文免费版
- JavaWEB中的Cookie
- Maven
- Spring(23)——SPEL表达式(一)
- 浅谈JAVA设计模式--单列模式
- 【手机+PC】获取用户地理位置、显示获取城市的天气
- 根据16S预测微生物群落功能最全攻略
- SQL执行时间(开销比例)
- Google-gson下载——链接
- 数组相同数据的合并(提取)