初识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本身 ...
随机推荐
- Java 将Word转为Tiff
本文以Java代码示例展示如何将Word文档转换为Tiff格式.代码方法比较简单,加载Word文档,并通过saveToTiff(tiffFilename)方法直接保存为tiff格式即可. 1.Java ...
- 高德纳/Donald Ervin Knuth
丸了丸了这位就是我人生的第一位爱豆了owo 感觉他的经历,气质都是我期望的类型呀. 即使没有人家的智商和绝顶天赋,也不断向彼努力吧. 从小喜欢音乐,会多种乐器(管风琴) 其实长得人高马大,高中校篮球队 ...
- git 强推本地分支覆盖远程分支
git 强推本地分支覆盖远程分支git push origin 分支名 --force
- odoo14里自定义批量下载数据【excel】
1.创建一个向导模型: from odoo import models, fields, api import base64 import xlwt from io import BytesIO cl ...
- 爬取房价信息并制作成柱状图XPath,pyecharts
以长沙楼盘为例,看一下它的房价情况如何url = https://cs.newhouse.fang.com/house/s/b91/ 一.页面 二.分析页面源代码 我们要获得的数据就是名字和价格,先来 ...
- Python实用案例,Python脚本,Python实现批量加水印
往期回顾 Python实现自动监测Github项目并打开网页 Python实现文件自动归类 Python实现帮你选择双色球号码 Python实现每日更换"必应图片"为"桌 ...
- 微信小程序 -- 英语词典 (小程序插件)
英语词典小程序 基于英语词典小程序插件 - 提供开源地址 项目地址 英语词典小程序插件: 微信小程序 词典 真题基础服务插件(gitee.com) 功能特色 [x] 全面详实的经典词库,详细释义覆盖约 ...
- kivy里rgb,rgba颜色相关知识,以及支持十六进制颜色值方法
rgb,rgba在kivy里的格式为如下: rgb:1,1,1---->每个参数为0-1的数值(如0.1),也就是说第一位如果是0.1意思是10%的红色,由r代表,g代表绿色,b代表蓝色 rgb ...
- SaaS技术栈有多复杂?
[特别声明:本文基于Tools and Services I Use to Run My SaaS进行修改.] 软件SaaS化由于需要考量架构的各个方面,所以需要的技术栈非常全面. 以一个客户管理Sa ...
- java小程序之随机任务发布器
需求 自定义任务 随机定时 随机排序 集合输出 搭建 简单项目,所以我使用java 的maven来搭建一个控制台程序,并且使用excel来记录任务 创建任务类(sub) package com.mic ...