概述
Cookie技术是浏览器数据存储技术,解决不同的请求需要相同的的请求数据。比如说QQ账号密码的自动登录等。我们把请求需要共享的请求数据,存储在浏览器端,避免用户重复抒写请求数据,但是哪些数据需要用Cookie技术存储起来是主观问题,需要在后台进行响应的时候来告诉浏览器,有些数据其他请求还会使用,需要存储起来。
1次请求加响应
请求:客户端--》服务器
响应:服务器--》响应内容
2次请求
请求:客户端(浏览器判断是否有有效期内的cookie)将cookie发送到--》服务器响应:服务器获取cookie,判断是否是vip用户--》相应内容给到客户端(并可以添加新的cookie或者修改原来的cookie)
cookie数据存储
分为临时存储和定时存储。临时存储:不设置cookie信息存储事件,周期为一次回话,存储在浏览器内存中。定时存储:设置存储时间,周期为事件设置,存储在用户电脑中。
Servlet Cookie处理
Cookie是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。。Java Servlet 显然支持 HTTP Cookie。
识别返回用户包括三个步骤:
1、服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。
2、浏览器将这些信息存储在本地计算机上,以备将来使用。
3、当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。
Cookie 剖析
Cookie 通常设置在 HTTP 头信息中(虽然 JavaScript 也可以直接在浏览器上设置一个 Cookie)。设置 Cookie 的 Servlet 会发送如下的头信息:
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=m.baidu.com
Connection: close
Content-Type: text/html
Set-Cookie 头包含了一个名称值对、一个 GMT 日期、一个路径和一个域。名称和值会被 URL 编码。expires 字段是一个指令,告诉浏览器在给定的时间和日期之后"忘记"该 Cookie。
如果浏览器被配置为存储 Cookie,它将会保留此信息直到到期日期。如果用户的浏览器指向任何匹配该 Cookie 的路径和域的页面,它会重新发送 Cookie 到服务器。浏览器的头信息可能如下所示:
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz
Servlet 就能够通过请求方法 request.getCookies() 访问 Cookie,该方法将返回一个 Cookie 对象的数组。
通过 Servlet 设置 Cookie
通过 Servlet 设置 Cookie 包括三个步骤:
(1) 创建一个 Cookie 对象:您可以调用带有 cookie 名称和 cookie 值的 Cookie 构造函数,cookie 名称和 cookie 值都是字符串。
Cookie
(2) 设置最大生存周期:您可以使用 setMaxAge 方法来指定 cookie 能够保持有效的时间(以秒为单位)。下面将设置一个最长有效期为 24 小时的 cookie。
cookie
(3) 发送 Cookie 到 HTTP 响应头:您可以使用 response.addCookie 来添加 HTTP 响应头中的 Cookie,如下所示:
response
通过 Servlet 读取 Cookie
要读取 Cookie,您需要通过调用 HttpServletRequest 的 getCookies( ) 方法创建一个 javax.servlet.http.Cookie 对象的数组。然后循环遍历数组,并使用 getName() 和 getValue() 方法来访问每个 cookie 和关联的值。
通过 Servlet 删除 Cookie
删除 Cookie 是非常简单的。如果您想删除一个 cookie,那么您只需要按照以下三个步骤进行:
1、读取一个现有的 cookie,并把它存储在 Cookie 对象中。
2、使用 setMaxAge() 方法设置 cookie 的年龄为零,来删除现有的 cookie。
3、把这个 cookie 添加到响应头。
jQuery设置多选项请求:
$
注意:jQuery默认会给表单的key值多添加一个中括号,servlet获取内容是,就变为:request.getParameterValues("hero[]");
Session
用户使用浏览器第一次向服务器发送请求,服务器在接收到请求后,调用对应的Servlet进行处理。在处理过程中,会给用户创建一个session对象,用来存储用户请求处理相关的公共数据,并将此session对象的JSEEIONID以Cookie的形式存储在浏览器中(临时存储,浏览器关闭即失效)。用户在发起第二次请求及后续请求时,请求信息中会附带JSESSIONID,服务器在接收到请求后, 调用对应的Servlet 进行请求处理,同时根据 JSESSIONID 返回其对应的session 对象。
特点
Session 技术是依赖Cookie 技术的服务器端的数据存储技术。
由服务器进行创建
每个用户独立拥有一个session
默认存储时间为 30 分钟作用:
解决了一个用户的不同请求的数据共享问题。
注意:
只要不关闭浏览器,并且 session 不失效的情况下,同一个用户的任意请求在项目的任意Servlet 中获取到的都是同一个session 对象。
作用域: 一次会话
Servlet Session
HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。
Servlet 还提供了 HttpSession 接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。
Servlet 容器使用这个接口来创建一个 HTTP 客户端和 HTTP 服务器之间的 session 会话。会话持续一个指定的时间段,跨多个连接或页面请求。
通过调用 HttpServletRequest 的公共方法 getSession() 来获取 HttpSession 对象,如下所示:
HttpSession
下面总结了 HttpSession 对象中可用的几个重要的方法:
getAttribute(String name)
该方法返回在该 session 会话中具有指定名称的对象,如果没有指定名称的对象,则返回 null。
Enumeration getAttributeNames()
该方法返回 String 对象的枚举,String 对象包含所有绑定到该 session 会话的对象的名称。
long getCreationTime()
该方法返回该 session 会话被创建的时间,自格林尼治标准时间 1970 年 1 月 1 日午夜算起,以毫秒为单位。
getId()
该方法返回一个包含分配给该 session 会话的唯一标识符的字符串。
getLastAccessedTime()
该方法返回客户端最后一次发送与该 session 会话相关的请求的时间自格林尼治标准时间 1970 年 1 月 1 日午夜算起,以毫秒为单位。
getMaxInactiveInterval()
该方法返回 Servlet 容器在客户端访问时保持 session 会话打开的最大时间间隔,以秒为单位。
get改为set就是设置的方法。
删除 Session 会话数据
1、移除一个特定的属性:您可以调用 public void removeAttribute(String name) 方法来删除与特定的键相关联的值。
2、删除整个 session 会话:您可以调用 public void invalidate() 方法来丢弃整个 session 会话。
3、设置 session 会话过期时间:您可以调用 public void setMaxInactiveInterval(int interval) 方法来单独设置 session 会话超时。
web.xml 配置
使用的是 Tomcat,除了上述方法,您还可以在 web.xml 文件中配置 session 会话超时,如下所示:
<session-config>
<session-timeout>15</session-timeout>
</session-config>
上面实例中的超时时间是以分钟为单位,将覆盖 Tomcat 中默认的 30 分钟超时时间。
在一个 Servlet 中的 getMaxInactiveInterval() 方法会返回 session 会话的超时时间,以秒为单位。所以,如果在 web.xml 中配置 session 会话超时时间为 15 分钟,那么 getMaxInactiveInterval() 会返回 900。
最后
以上就是丰富硬币为你收集整理的cookie的生存时间单位是_Cookie和session的全部内容,希望文章能够帮你解决cookie的生存时间单位是_Cookie和session所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复