初识cookie
package day01.cookies;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* cookie中需要注意的点:
* 1) 在cookie中添加中文的value的时候,需要使用
* URLEncoder和URLDecoder进行编码和解码
* URLEncoder.encode()
* URLDecoder.decode()
* 2) cookie中有一个设置生存空间的setPath()方法
* 作用是cookie在这个设置的路径中,才会被携带
* cookie.setPath(String path)
* 3) cookie的生存时间,setMaxAge(int time)
* 其中的time:
*
* 正整数:在XX秒之后失效
*
* (默认)负整数:在浏览器关闭的时候失效:负数的值没有关系 -1和-10000效果相同
*
* 0:
* 一般用于删除同名的cookie,比如现在浏览器中有一个stu_name的cookie
* 我再创建一个stu_name的cookie,提交覆盖之后,设置它的生存时间为0
* 当前就结束。
* Cookie c = new Cookie("stu_name", "xxx");
* c.setMaxAge(0);
*
* @author mzy
*
* cookie的限制:
* 一个浏览器最多放300个cookie,一个站点最多有20个cookie
* 每个cookie的大小限制为4kb。
*
*cookie的类型单一(数据类型不丰富)
*并且在浏览器中可以查看,相对不安全;
*但是cookie足够简单,并且数据是存在浏览器的,
*不会占用服务器的资源;减轻服务器的负担;
*
*
*session的引入:
* 大小没有了限制,且类型更丰富,并且更安全;
*session就是用来弥补cookie的。
*
*/
public class CookieDemo01 extends HttpServlet {
private static final long serialVersionUID = 1271099427163484729L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// 1. 使用响应头:(设置cookie中的数据)
response.setHeader("set-cookie", "name=mzy");
// 名字相同的cookie属性会覆盖
// response.setHeader("set-cookie", "name=zxr");
/*
* 每次为服务器的response存入cookie的时候,
* 都要进行setHeader的操作,显得比较繁琐;
* 设计者引入面向对象的思想进行设计
* 设计出了cookie操作的简化版本:
*
* response.addCookie(cookie);
*/
// 2. 使用请求头获取cookie里面的数据
String c1 = request.getHeader("cookie");
/*
* 同样:
* 浏览器在下次访问服务器的时候,
* 开发者也得通过请求头进行cookie
* 数据的传输的话,也显得比较繁琐
* 推出getHeader("cookie");的简化
* 版本
*
* request.getCookie();
* 因为cookie中的数据可能有多条
* 所以此方法返回的是一个Cookie
* 类型的数组
* Cookie[] cookies = request.getCookies();
*/
// System.out.println(c1);
// 全部使用简化版本的操作
// 1) 创建cookie对象,保存会话数据
Cookie cookie1 = new Cookie("stu_name", "mzy");
/*
* 设置有效路径:(默认如果你不设置的话,就设置到当前的目录下)
* cookie的setPath的作用就是设置cookie的使用范围:
* 当我们在访问对应的path路径下的时候,才会携带这条cookie
* 信息,其它的时候,并不会携带此cookie的信息。
*/
// cookie1.setPath("/MyFirstServlet");
/*
* 设置有效时间:
* 正整数:表示超过了正整数的数值的时间,cookie就会丢失!(保存在硬盘中)
* 负整数:表示浏览器关闭了,cookie信息就丢失!(保存在浏览器内存)
* 什么都不设置默认情况下就是一个负整数;
* 0:表示删除同名的cookie
* 删除同名的cookie的原理就是,提交一个同名的cookie;
* 比如都是stu_name 进行提交了之后
* 设置这个cookie的有效时间为0;表示立即消失
*/
// cookie1.setMaxAge(20); // 20秒之后就清除这个cookie信息
cookie1.setMaxAge(-1); // 这个负数的值本身没有关系,负多少都一样
Cookie cookie2 = new Cookie("stu_id", "1633140111");
/*
* 但是在cookie中存入中文信息的时候要注意
* 如果不对cookie中的中文信息进行加密的话
* 就会出现错误!500(服务器端的错误)
*
* 使用之前的URLEncoder进行加密
* 使用之前的URLDecoder进行解密
*/
String name = URLEncoder.encode("张三", "utf-8");
Cookie cookie3 = new Cookie("stu_name", name);
/*
* cookie中同名的信息只能存储一个。(默认为存储后者)
*/
response.addCookie(cookie1);
response.addCookie(cookie2);
response.addCookie(cookie3);
Cookie[] cookies = request.getCookies();
int len = 0;
if(cookies != null) {
for (Cookie cookie : cookies) {
String value = cookie.getValue();
value = URLDecoder.decode(value, "utf-8");
System.out.println(cookie.getName()+"="+value);
len++;
}
System.out.println(len);
} else {
System.out.println("cookies中没有数据");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
}
}
初识cookie的更多相关文章
- ASP.NET 初识Cookie
1.ASP.NET中使用Cookie 0.说明 Cookie存在客户端电脑上,Session存在服务器上,所以保存登录信息等敏感信息时不能使用Cookie,用户个性化设置可以使用Cookie 1.新建 ...
- django的Cookie Session
Cookie 初识cookie的设置和获取 示例 from django.shortcuts import render, redirect from django.shortcuts import ...
- 《深入浅出Node.js》第8章 构建Web应用
@by Ruth92(转载请注明出处) 第8章 构建Web应用 一.基础功能 请求方法:GET.POST.HEAD.DELETE.PUT.CONNECT GET /path?foo=bar HTTP/ ...
- [oldboy-django][2深入django]cookies + session
1.1 cookies - 初识cookie a.cookie是保留在浏览器端的键值对 b.服务端可以向客户端写cookie c.客户端每次发送请求,会携带cookie一起发送过去,而且cookie是 ...
- Django框架 之 Cookie和Session初识
Django框架 之 Cookie和Session初识 浏览目录 Cookie介绍 Django中的Cookie Session 一.Cookie介绍 1.Cookie产生的意义 众所周知,HTTP协 ...
- Cookie初识篇
一.什么是Cookie Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109和2965都 ...
- 初识 Asp.Net内置对象之Cookie对象
Cookie对象 Cookie对象用于保存客户端浏览器请求的服务器页面,也可用于存放非敏感性的用户信息,信息保存的时间可以根据用户的需要经行设置.并非所有的浏览器都支持Cookie,并非数据信息都是以 ...
- AJAX异步、sweetalert、Cookie和Session初识
一.AJAX的异步示例 1. urls.py from django.conf.urls import url from apptest import views urlpatterns = [ ur ...
- cookie的初识和运用(js和jq)
cookie是什么 cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是JavaScript本身 ...
随机推荐
- PAT乙级:1015 德才论 (25分)
1015 德才论 (25分) 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人 ...
- Linux下系统防火墙的发展历程和怎样学好防火墙(iptalbes和firewalld)
有关firewalld和iptables详细使用的文章 iptables详解 firewalld详解 =====================================华丽的分割线====== ...
- js 正序、倒序、按字段排序方法
js 基础--sort方法: arrayObject.sort(sortby); 参数:定义排序规则(正序.倒序.按字段排序)的函数: 返回值:对数组的引用.请注意,数组在原数组上进行排序,不生成副本 ...
- django中路由配置的正则
在django中配置路由遇到正则的坑: django2.x版本中使用re_path来进行正则表达式的匹配 用法如下: from Django.urls import re.path(导入re_path ...
- netcore一键nssm发布为windows服务
AntDeploy 是我开发一款开源一键部署工具包 发布功能支持: docker容器一键部署 docker镜像一键发布 支持iis一键部署 windows服务一键部署 linux服务一键部署 支持增量 ...
- Hadoop 3.1.1 - Yarn - 使用 FPGA
在 Yarn 上使用 FPGA 前提 YARN 目前只支持通过 IntelFpgaOpenclPlugin 发布的 FPGA 资源 YARN NodeManager 所在的机器上必须预先安装供应商的驱 ...
- Java数组06——冒泡排序
冒泡排序 例子: package array; import java.util.Arrays; public class ArrayDemon08 { public static ...
- .NET Core/.NET5/.NET6 开源项目汇总13:模板引擎
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- [C++]-map 映射
map用来存储排序后的由键和值组成的项的集合.键必须唯一,不同的键可以对应同一个值,在map中键保持逻辑排序后的顺序(以键为标准). 代码 #include<iostream> #incl ...
- [开源]入坑Qt,我的第一个小程序:MD5计算器
版权声明 --------- 本文仅在知乎与博客园发布.开发者为szx0427 MFC和Win32搞了好几年了,也算是懂了个皮毛,但是一直觉得用这两者开发软件都很麻烦,需要将大量的代码花费在UI等地方 ...