Cookie相关基础
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相关基础的更多相关文章
- JAVA相关基础知识
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...
- iOS蓝牙开发(二)蓝牙相关基础知识
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
- Linux 相关基础笔记
html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...
- linux设备驱动归纳总结(二):模块的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...
- linux设备驱动归纳总结(一)内核的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...
- selenium webdriver(6)---cookie相关操作
介绍selenium操作cookie之前,先简单介绍一下cookie的基础知识 cookie cookie一般用来识别用户身份和记录用户状态,存储在客户端电脑上.IE的cookie文件路径(win7) ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- NIO相关基础篇一
转载请注明原创出处,谢谢! 说在前面 NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容. 什么是NIO Java NIO( New IO) 是 ...
- NIO相关基础篇二
转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...
随机推荐
- 从ajax到跨域引发的相关面试题总结
转载请注明出处: 1.ajax异步和同步的区别 Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新 ...
- Nginx的负载均衡策略
Nginx的负载均衡策略 个人博客地址: https://note.raokun.top 拥抱ChatGPT,国内访问网站:https://www.playchat.top 共六种: 轮询.权重.ip ...
- React 富文本编辑 braft-editor
推荐一种react-富文本编辑器,braft-editor braft-editor的github:https://github.com/margox/braft-editor braft-edito ...
- [C++基础入门] 8、结构体
文章目录 8 结构体 8.1 结构体基本概念 8.2 结构体定义和使用 8.3 结构体数组 8.4 结构体指针 8.5 结构体嵌套结构体 8.6 结构体做函数参数 8.7 结构体中 const使用场景 ...
- 虚拟机中Docker下部署gitlab
一.安装Gitlab 1.拉取镜像并启动 由于服务器的80端口可能被占用,所以这里我们改成了其他端口来启动 docker run -d -p 2443:443 -p 5678:80 -p 2222:2 ...
- 2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n <= 3 * 10^5, 0 <= 数值
2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组. n <= 3 * 10^5, 0 &l ...
- 2022-06-03:a -> b,代表a在食物链中被b捕食, 给定一个有向无环图,返回这个图中从最初级动物到最顶级捕食者的食物链有几条。 来自理想汽车。
2022-06-03:a -> b,代表a在食物链中被b捕食, 给定一个有向无环图,返回这个图中从最初级动物到最顶级捕食者的食物链有几条. 来自理想汽车. 答案2022-06-03: 拓扑排序. ...
- 2021-06-20:已知一个消息流会不断地吐出整数 1~N,但不一定按照顺序依次吐出。如果上次打印的序号为i, 那么当i+1出现时,请打印 i+1 及其之后接收过的并且连续的所有数,直到1~N全部接
2021-06-20:已知一个消息流会不断地吐出整数 1~N,但不一定按照顺序依次吐出.如果上次打印的序号为i, 那么当i+1出现时,请打印 i+1 及其之后接收过的并且连续的所有数,直到1~N全部接 ...
- 2021-08-14:给定两个字符串S和T,返回S的所有子序列中有多少个子序列的字面值等于T。
2021-08-14:给定两个字符串S和T,返回S的所有子序列中有多少个子序列的字面值等于T. 福大大 答案2021-08-14: 样本对应模型. 时间复杂度:O(N^2). 空间复杂度:O(N^2) ...
- flutter填坑之旅(环境搭建篇)
自从Google 在 2018 世界移动大会上发布 Flutter 的 Beta 版本,看看官方的介绍Flutter widgets are built using a modern framewor ...