1) 创建Cookie对象,
public Cookie(java.lang.String name,
java.lang.String value)
参数1:表示cookie名称
参数2:表示cookie名称对应的内容
2) 发送cookie数据(服务器发送cookie数据到浏览器中)
set-cookie:请求头: 携带内容(最基本的方式)
简写方式:服务器发送Cookie
void addCookie(Cookie cookie)
3) 服务器会携带cookie到浏览器(自发:浏览器自发的将cookie保存起来),方便下一次服务器传递数据
4) 服务器获取cookie数据
原理:获取的请求头:cookie名称获取内容(最基本的)
简写方式:
Cookie[] getCookies()

Cookie技术的一些细节:
1) 细节1:当前浏览器中发现中文cookie 数据,获取cooike名称对应的内容,需要进行解密(同时,对中文进行加密)
使用的是两个工具类:URLEncorder类和URLDecorder类
2) 细节2:设置cookie的有效时间
public void setMaxAge(int expiry) :
参数分为三种情况:
1) 如果参数为正整数,表示多少秒之后,cookie数据失效了(不存在了)
2) 如果参数是一个负整数,一般情况指定-1,关闭浏览器,cookie就不存在了
3) 如果参数是一个0,那么指定同名的cookie的名称,然后该cookie数据会被删除掉!
4) 细节3:cookie的有效路径
public void setPath(java.lang.String uri):当前cookie的数据是在有效路径下才会起作用,否则,获取不到cookie数据

一般情况:一个站点可以存储多少个cookie数据,不超过300个,可能用到20个作用

public class CookieDemo extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建cookie对象
Cookie coo = new Cookie("name","Rong"); //中文格式
String name = URLEncoder.encode("蓉","utf-8");
Cookie coo2 = new Cookie("name", name); //设置有效路径
// coo.setPath("/Develop_Servlet_Cookie001");
// coo2.setPath("/Develop_Servlet_Cookie002");
//简写,发送到浏览器
// response.addCookie(coo);
response.addCookie(coo2); //-1:关闭浏览器就删除cookie。正整数:保存时间
coo.setMaxAge(-1);
coo2.setMaxAge(5); //获取cookie参数
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies) {
String coo_name = cookie.getName();
String coo_value = cookie.getValue();
//解析获得的值
String coo_devalue = URLDecoder.decode(coo_value, "utf-8");
System.out.println("名:"+coo_name+"\t值:"+coo_devalue);
}
} } }

输出系统时间和上次登录时间:

public class TimeDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建系统时间,格式化时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String CurTime = sdf.format(new Date()); //获取cookie数据
Cookie[] cookies = request.getCookies(); //设立初始值
String LastTime = null;
//第一次访问
if(cookies==null && LastTime==null){ //输出系统时间
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("第一次系统时间:"+CurTime); //编码,创建cookie文件
String en_time = URLEncoder.encode(CurTime, "utf-8");
Cookie last_cook = new Cookie("lasttime", CurTime);
response.addCookie(last_cook); } //第二次之后访问,遍历输出数据
if(cookies!=null){
for(Cookie cookie:cookies){
//获取数值
LastTime = cookie.getValue();
//解码文件
String de_LTime = URLDecoder.decode(LastTime, "utf-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("上次登录时间"+de_LTime+"<br/>系统时间:"+CurTime); //更新时间
CurTime = URLEncoder.encode(CurTime, "utf-8");
cookie.setValue(CurTime);
response.addCookie(cookie); }
} } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }

Cookie相关基础的更多相关文章

  1. JAVA相关基础知识

    JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

  2. iOS蓝牙开发(二)蓝牙相关基础知识

    原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...

  3. Linux 相关基础笔记

    html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...

  4. linux设备驱动归纳总结(二):模块的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...

  5. linux设备驱动归纳总结(一)内核的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...

  6. selenium webdriver(6)---cookie相关操作

    介绍selenium操作cookie之前,先简单介绍一下cookie的基础知识 cookie cookie一般用来识别用户身份和记录用户状态,存储在客户端电脑上.IE的cookie文件路径(win7) ...

  7. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...

  8. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  9. NIO相关基础篇一

    转载请注明原创出处,谢谢! 说在前面 NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容. 什么是NIO Java NIO( New IO) 是 ...

  10. NIO相关基础篇二

    转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...

随机推荐

  1. CentOS配置Django虚拟环境--坑点总结

    1.CentOS原装有python2.7,编译安装python3.X版本 2.sqlite-devel未安装 3.sqlite3版本过低报错 升级sqlite3版本 参考 https://blog.c ...

  2. Locust 界面简介(非使用级)

    一.认识Locust 1.简介 Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在 ...

  3. DataX更换python3,File “datax.py“, line 114 print readerRef

    datax 报错 File "datax.py", line 114 print readerRef 报错: File "datax.py", line 114 ...

  4. Python工具箱系列(三十)

    PostgreSQL MySQL的口号是"世界上最流行的开源关系型数据库",而PostgreSQL的Slogan则是"世界上最先进的开源关系型数据库(PostgreSQL ...

  5. 2022-12-09:上升的温度。以下的数据输出2和4,2015-01-02 的温度比前一天高(10 -> 25),2015-01-04 的温度比前一天高(20 -> 30),sql语句如何写? DR

    2022-12-09:上升的温度.以下的数据输出2和4,2015-01-02 的温度比前一天高(10 -> 25),2015-01-04 的温度比前一天高(20 -> 30),sql语句如 ...

  6. Django-2:创建项目Project

    命令:django-admin startproject mysite PS C:\Users\liujun> cd e:\pyapp\cmdbPS E:\pyapp\cmdb> djan ...

  7. 【python基础】新建/运行python项目

    1.新建python项目 在编写程序之前,我们需要新建一个项目(Project),在桌面双击PyCharm的快捷方式,等待片刻,打开如下所示的软件界面.点击New Project 在弹出的对话框中,需 ...

  8. Sublime Text Windows/Linux平台快捷键

    编辑 按键 对应命令 Ctrl + X 删除行 Ctrl + 行后插入 Ctrl + ⇧ + 行前插入 Ctrl + ⇧ + ↑ 上移文本/选择 Ctrl + ⇧ + ↓ 下移文本/选择 Ctrl + ...

  9. Spring Boot实现高质量的CRUD-1

    1.前言 ​ 在Spring Boot的SMM框架(SpringBoot+Mysql+Mybatis)的WEB项目中,CRUD(增删改查)大致占了50%-70%左右的工作量.提高CRUD的代码质量,提 ...

  10. CANoe学习笔记(五):Diva自动化测试工程

    内容: Diva工程的建立 Diva工程的配置 测试条例选择 一.新建一个Diva工程 左上角选择New,然后配置好下面部分 二.配置Diva工程 1. 2. 3.配置一些时间参数,按需求填写 4.其 ...