java之Cookie具体解释
Cookie是由server端生成。发送给User-Agent(通常是浏览器)。浏览器会将Cookie的key/value保存到某个文件夹下的文本文件内。下次请求同一站点时就发送该Cookie给server(前提是浏览器设置为启用cookie)。
Cookie名称和值能够由server端开发自定义。对于JSP而言也能够直接写入JSESSIONID用于标记一个会话(session),这样server能够知道该用户是否合法用户以及是否须要又一次登录等,server能够设置或读取Cookies中包括信息。借此维护用户跟server会话中的状态。
Cookie是client技术。而HttpSession是server端技术。
java中Cookie具体介绍:
1、Cookie是什么?
一个小信息。由server写给浏览器的。由浏览器来保存。
client保存的Cookie信息,能够再次带给server。
Cookie类:javax.servlet.http.Cookie
2、Cookie的属性:
name:必须的
value:必须的
comment:可选的。凝视
path: 可选的,假设不设置路径,那么仅仅有设置该cookie的URI及其子路径能够訪问
写Cookie的程序的訪问路径是:http://localhost:8080/JavaWeb/servlet/CookieDemo
当中:localhost就是域名。/JavaWeb/servlet就是当前Cookie的path
若訪问的地址的URI包括着cookie的路径,即URI.startWith(cookie的路径),为true。则client将该cookie带给server。
比方浏览器存的cookie的路径是/JavaWeb
如今訪问的地址是:http://localhost:8080/JavaWeb/servlet/CookieDemo 则带该cookie
如今訪问的地址是:http://localhost:8080/JavaWeb/CookieDemo 则带该cookie
若浏览器存的cookie的路径是/JavaWeb/servlet/
訪问的地址是:http://localhost:8080/JavaWeb/servlet/CookieDemo 则带该cookie
訪问的地址是:http://localhost:8080/JavaWeb/CookieDemo 则不带该cookie
假设一个cookie的路径设置成了/JavaWeb,意味着浏览器訪问当前应用下的全部资源时都会带着该cookie给server。
domain:可选的。该Cookie所属的站点域名。
(apache.org)默认值。
maximum age:可选的。不设置就是会话过程(存在浏览器的内存中)。
单位是秒
假设是0。说明要删除。
version:可选的。
3、怎样向client写Cookie:
HttpServletResponse对象.addCookie(javax.servlet.http.Cookie对象)(就是写了一个响应消息头:Set-Cookie:cookie的信息)
Servlet规范中的Cookie API 提供了setMaxAge setPath setDomain等方法,能够对Cookie状态进行控制
特点:一个浏览器针对一个站点最多存20个Cookie;最多存300个Cookie,每一个Cookie的长度不能超过4KB(稀缺)。仅仅是规定。但不同的浏览器实现的不同。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cookie cookie=new Cookie("name","Tom");
//设置Maximum Age
cookie.setMaxAge(1000);
//设置cookie路径为当前项目路径
cookie.setPath(request.getContextPath());
//加入cookie
response.addCookie(cookie);
}
4、server怎样得到client传来的Cookie:
在Java中利用Serlvet或者JSP scriptlet能够向浏览器端写入Cookie,相同,利用Servet或者JSP scriptlet 也能够读取到
Cookie信息
Servlet规范中的Cookie API 相同存在getMaxAge getPath getDomain等方法,能够获得对应的状态。
只是此处存在一个问题:
读取Cookie时。发现除了Cookie的key和value外。其它值获取都为null。
原因非常easy:Cookie从server端发送到client时。信息是完整的,Cookie从客户器端发送到服务端时,信息仅仅剩下key、value了。
(由于Domain不正确的Cookie、Path不正确的Cookie、过期的Cookie,client是不会发送过来的)
那为什么Java中提供了对应的get方法呢? 那个方法事实上是在生成Cookie后,尚未发送到client时使用的
server端通过HttpServletRequest对象.getCookies()可获取cookies数组。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
String name=cookie.getName();
String value=cookie.getValue();
out.write(name+"="+value);
}
}
}
5、怎样区分Cookie:
通过名称不行,应通过domain+path+name来区分的。
java之Cookie具体解释的更多相关文章
- Java web Cookie详解(持久化+原理详解+共享问题+设置中文+发送多个Cookie)
Java web Cookie详解 啥是cookie? 查询有道词典得: web和饼干有啥关系? 这个谜底等等来为大家揭晓 会话技术 web中的会话技术类似于生活中两个人聊天,不过web中的会话指的是 ...
- java对cookie的操作
java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题. 建立一个无生命周期的cookie,即随着浏览器的关闭即 ...
- java之Cookie详解
Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是 ...
- JAVA操作COOKIE
JAVA操作COOKIE 1.设置Cookie Cookie cookie = new Cookie("key", "value"); cookie.setMa ...
- Java路径操作具体解释
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或文件夹在硬盘上真正的路径.(URL和物理路径)比如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://w ...
- Java String类具体解释
Java String类具体解释 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,非常多时候,我们对它既熟悉又陌生. 类结构: public fin ...
- 设计模式 - 迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释
迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 參考迭代器模式(ite ...
- Java 处理cookie的方法
一.java创建cookie 方法一: Response.Cookies["userName"].Value = "patrick"; Response.Coo ...
- “全栈2019”Java第九章:解释第一个程序
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- centos7刚安装需要的一些基础优化
基本操作一:更改主机名 centos7有一个新的修改主机名的命令hostnamectl # hostnamectl set-hostname --static benjamin # vim /etc/ ...
- Laravel 5.5 Blade::if 简介
Laravel 5.5 引入了一个新的黑科技,就是你可以使用 Blade::if 来进行一些简单的逻辑判断啦!想不出应用场景在哪?想象下面的场景: 判断一个用户是否是 admin 判断应用的开发环境不 ...
- POJ 2528.Mayor's posters-线段树(成段替换、离散数据、简单hash)
POJ2528.Mayor's posters 这道题真的是线段数的经典的题目,因为数据很大,直接建树的话肯定不可以,所以需要将数据处理一下,没有接触离散化的时候感觉离散化这个东西相当高级,其实在不知 ...
- Python的功能模块[1] -> struct -> struct 在网络编程中的使用
struct模块 / struct Module 在网络编程中,利用 socket 进行通信时,常常会用到 struct 模块,在网络通信中,大多数传递的数据以二进制流(binary data)存在. ...
- Python的工具包[1] -> pandas数据预处理 -> pandas 库及使用总结
pandas数据预处理 / pandas data pre-processing 目录 关于 pandas pandas 库 pandas 基本操作 pandas 计算 pandas 的 Series ...
- 腾讯消消乐 (状态压缩DP)
腾讯消消乐 题意 给出长度为 n 的序列,每次可以选择删除序列的一个连续区间,要求这一段区间内所有数最大公约数不小于 k ,删除后剩下的序列仍然构成连续序列. 定义 f(i) 为进行 i 次操作将整个 ...
- EGS5在linux系统下安装过程
转载自52MC论坛 作者:xinruibj 平台:Fedora 13 内核版本为:2.6.33, g77版本为:3.4.6: 用户名为xinrui,下面出现这个文件夹xinrui时,修改为你自己的用户 ...
- 内连接(INNER JOIN)
内连接组合两张表,并且基于两张表中的关联关系来连接它们.使用内连接需要指定表中哪些字段组成关联关系,并且需要指定基于什么条件进行连接.内连接的语法如下: INNER JOIN table_name O ...
- UVA 11134 Fabled Rooks 贪心
题目链接:UVA - 11134 题意描述:在一个n*n(1<=n<=5000)的棋盘上放置n个车,每个车都只能在给定的一个矩形里放置,使其n个车两两不在同一行和同一列,判断并给出解决方案 ...
- 代理模式(Proxy)--动态代理(JDK)
在是上一篇博客中实现了静态代理. 在上篇的结尾提到了一个问题: 思考:如果我们下需要对火车,自行车实现相同的代理,我们又该如何实现呢? 这篇博客就来解决这个问题: 解决这类问题需要用到动态代理技术,实 ...