【简述】

会话可理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个Web资源,然后关闭浏览器,整个过程成为一个会话。

【会话过程中我们要解决的一些问题】

* 每个用户与服务器进行交互的过程中,各自会有一些数据,程序要想办法保存每个用户的数据。

具体例子:用户点击超链接通过一个Servlet购买了一个商品,程序应该保存用户购买的商品,以便于用户点击结账Servlet时,结账的Servlet可以得到用户商品为用户结账。

【Cookie简述】

Cookie是客户端技术。程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的Web资源时,就会带着各自的数据去。这样Web资源处理的就是用户各自的数据了。

【Session简述】

Session是服务端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的Session对象,由于Session为用户浏览器独享,所以用户再访问服务器的Web资源时,就可以把各自的数据放在各自的Session中,当用户再去访问服务器中的其它Web资源时,其它Web资源再从用户各自的Session中取出数据为用户服务。

【Cookie API——javax.servlet.http.Cookie类】

  javax.servlet.http.Cookie类用于创建一个Cookie,response接口中也定义了一个addCookie方法,它用于在其响应头中增加一个相应的Set-Coookie头字段。

同样,request接口中也定义了一个getCookies方法,它用于获取客户端提交的Cookie。

[ 常用方法如下 ]

[1.构造Cookie对象]

public Cookie(String name,String value)  //构造Cookie对象

[2.设置cookie]

setValue()     与  getValue()         //设置和获取Cookie的值

setMaxAge() 与   getMaxAge()     //设置和获取Cookie的有效期

setPath()      与   getPath()         //设置和获取Cookie的有效访问路径

setDomain()  与   getDomain()

[3.发送cookie到浏览器端保存]

void response.addCookie(Cookie cookie);

[4.服务端接受cookie]

Cookie[] request.getCookie();    :接受cookie

getName()  //获取cookie的name

[ 提示  关于setPath ]

* cookie.setPath("/");  可以在webapp(如果是Tomcat)文件夹下的所有应用共享Cookie

* cookie.setPath("/Helloservlet/");   指cookie只能在HelloServlet应用下获得,即便是产生这个Cookie的Web应用也不可以。

【Cookie原理】

1.服务器创建cookie对象,把回话数据存储到cookie对象中。

  new Cookie("name","value");

2.服务器发送cookie信息到浏览器。

  response.addCookie( cookie );

  [举例:响应头]set-cookie:name=Jack ( 隐藏发送了一个set-Cookie名称的响应头 )

3.浏览器得到服务器发送的cookie,然后保存在浏览器端。

4.浏览器在下次访问服务器时,会带着cookie信息

  [举例:请求头]cookie:name=jack   ( 隐藏带着一个叫cookie名称的请求头 )

5.服务器接收到浏览器带来的cookie信息

  request.getCookies();

【案例:利用Cookie技术获得用户上次登录的时间】

[ CookieDemo00.java ]

package com.Higgin.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @WebServlet("/CookieDemo00")
public class CookieDemo00 extends HttpServlet {
public CookieDemo00() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8"); PrintWriter out =response.getWriter();
out.print("您上次访问的时间是:"); //打印到浏览器 //1.获得用户的时间Cookie
Cookie[] cookies=request.getCookies(); //读取浏览器发送请求中的Cookie对象
for(int i=;cookies!=null&&i<cookies.length;i++){
if(cookies[i].getName().equals("lastAccessTime")){
Long cookieValue=Long.parseLong(cookies[i].getValue()); //得到用户上次的访问时间戳
          out.print(cookieValue); //直接打印时间戳了!
//Date date=new Date(cookieValue); //由于Tomcat的时间有点出错,暂时不用这种方式,直接用时间戳
//SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//out.print(dateFormat.format(date)); //打印到页面的是格式化后的时间
}
} //2.给用户回送最新的访问时间
Cookie cookie=new Cookie("lastAccessTime",System.currentTimeMillis()+"");
cookie.setMaxAge(*); //Cookie的寿命为5分钟
cookie.setPath("/HelloServlet"); response.addCookie(cookie);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
} }

[ 第一次访问 http://localhost:8080/HelloServlet/CookieDemo00  ]

[ 5分钟内再次访问  第二次访问在5分钟内,所以是带着Cookie数据的 ]

[ 5 分钟之后 访问 Cookie失效  效果等同于第一次访问]

【Cookie注意点】

* 一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(Name)和设置值(Value)。

* 一个Web站点可以给一个Web浏览器发送多个Cookie,一个Web浏览器也可以存储多个Web站点提供Cookie。

* cookie的数据类型只能保存非中文字符串类型的。可以保存多个cookie,浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie大小限制为4KB。

* 如果创建了一个Cookie,并将它发送到浏览器,默认情况下它是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若用户希望该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时间设置为0即命令浏览器删除该Cookie。

* 注意,删除cookie时,path必须一致,否则将无法删除。

 【Cookie细节】

* void setPath( String uri ):设置cookie的有效访问路径。有效访问路径指的是cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie信息,否则不带cookie信息。

* void setMaxAge( int expiry ):设置cookie的有效时间

  [ 正整数 ]:表示cookie保存在浏览器的缓存目录中(硬盘中),数值表示保存的时间。

  [ 负整数 ]:表示cookie的数据保存浏览器的内存中。浏览器关闭cookie就丢失了!

  [    零    ]:表示删除同名的cookie数据。

15_会话技术_Cookie的更多相关文章

  1. cookie会话技术

    会话技术 B/S请求是无状态无记忆的,脚本与脚本之间是没有联系的,导致不能进行连续的业务逻辑 Cookie技术:将会话数据保存在浏览器端 原理:服务器向浏览器发送指令,用来管理存储在浏览器端的cook ...

  2. 关于PHP中会话技术的知识点分享

    前言:在PHP中会话技术也是特别重要的,主要应用在免登录,保存一些持久化数据等等的方面,但是后期的介绍中,我将会放弃这种技术改用redis方法来替换这种方法. (一)cookie技术(即数据缓存在客户 ...

  3. PHP会话技术

    由于HTTP协议是无连接.无状态的,所以HTTP协议无法记住客户端的信息.为了弥补HTTP协议的这两种不足,所以出现了会话技术. 1 Cookie技术 1.1 什么是Cookie 服务器端,将能够唯一 ...

  4. 会话技术( Cookie ,Session)

    会话技术:    会话:浏览器访问服务器端,发送多次请求,接受多次响应.直到有一方断开连接.会话结束.        解决问题:可以使用会话技术,在一次会话的多次请求之间共享数据.           ...

  5. Java Web之会话技术

    客户端与服务器通信过程中,会产生一些数据.比如,A和B分别登陆了某宝购物网站,A买了一个Android手机,B买了一个iPhone手机,当结账时,web服务器需要分别对用户A和B的信息分别保存.根据J ...

  6. JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)

    1.转发和重定向 HttpServletResponse response 转发: RequestDispatcher dispatcher = request.getRequestDispatche ...

  7. JSP入门&会话技术

    一.JSP    1.jsp技术        jsp是sun提供动态web资源开发技术.为了解决在Servlet中拼写html内容css.js内容十分不方便的问题,sun提供了这样一门技术.如果说S ...

  8. JavaWeb基础: 会话技术简介

    会话技术 用户使用Web应用的过程实际是调用了一系列的Servlet来组合处理请求,从而完成整个业务流.不同Servlet组合起来为用户服务的时候就会遇到一个数据共享和传输的问题,如何让多个Servl ...

  9. servlet会话技术:Cookie

    什么是会话会话可以简单理解为:用户开一个浏览器访问某个网站,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话.会话过程中需要解决的一些问题每个用户在使用浏览器与服务器进 ...

随机推荐

  1. 【Stage3D学习笔记续】真正的3D世界(六):空间大战

    这就是书上的最终效果了,一个完整的空间大战游戏: 点击查看源码 这里并没有太多的新知识,所涉及的东西更多的是游戏开发方面的优化和技巧,下面我们大家一起来看看: 飞船: 类似粒子效果中的粒子创建方法,我 ...

  2. RocketMQ常用命令

    转自:http://jameswxx.iteye.com/blog/2091971 1.1. 控制台使用 RocketMQ 提供有控制台及一系列控制台命令,用于管理员对主题,集群,broker 等信息 ...

  3. ThindPad x230 无法U盘启动

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. CRM-BP相关FUNCTION

    获取BP的地址信息:BUPA_ADDRESS_GET_DETAIL 修改BP的信息:CRM_WAP_BP_CHANGE BUTO50存放2个BP之间的关系 获取BP的角色 BAPI_BUPA_ROLE ...

  5. [置顶] 用Wireshark保存RTP的负载码流

    这段时间工作太忙,有些日子没写文章了,今天准备了一篇Wireshark工具的一个小功能,在验证码流的时候非常好用,闲话不说,直接说步骤: 1.打开Wireshark抓取流媒体码流,然后用RTP过滤: ...

  6. NYOJ109 数列转换 【守恒法】

    数列转换 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 有一个数列a1,a2,a3...an,每次能够从中随意选三个相邻的数ai-1 ,ai , ai+1 ,进行例 ...

  7. POJ 3104 Drying 二分

    http://poj.org/problem?id=3104 题目大意: 有n件衣服,每件有ai的水,自然风干每分钟少1,而烘干每分钟少k.求所有弄干的最短时间. 思路: 注意烘干时候没有自然风干. ...

  8. OpenCV Mat 类型定义和赋值

    1.一般的Mat定义方法:cv::Mat M(height,width,<Type>),例: cv::Mat M(480,640,CV_8UC3); 表示定义了一个480行640列的矩阵, ...

  9. 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能

    Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ...

  10. [Server Running] [Node.js, PM2] Using PM2 To Keep Your Node Apps Alive

    PM2 is a production process manager for Node.js applications with a built-in load balancer. It allow ...