Cookie

  * Cookie 是什么?

         - Cookie翻译过来是曲奇饼干的意思

         - Cookie可以保存回话状态,但是这个会话状态是保存在客户端上的,只要清除Cookie,或者 Cookie失效,这个会话状态就没有了

         - Cookie是保存在浏览器客户端上的,可以存在浏览器客户端的以下位置上:

                  1. Cookie可以保存在浏览器的缓存中,浏览器关闭Cookie消失

                  2. Cookie也可以保存在客户端的硬盘文件中,浏览器关闭Cookie还在,除非清除cookie或者Cookie失效了

  * Cookie只有在javaWeb中有吗?

        - Cookie不只是存在于JavaWeb中,只要是Web开发,只要是基于HTTP协议,就会有Cookie的存在

        - Cookie这种机制,是HTTP协议规定的,专门用来保存会话状态.

  * Cookie所实现的功能常见的有什么?

	     - 在客户端保存购物车商品状态

	     - 十天内免登录

	       ...

  * 在java 中Cookie被当做类来处理,使用new运算符可以创建Cookie对象。

  * Cookie由两部分组成,分别是cookie的 name 和 value,两者都是字符串类型数据。

  * 怎么创建Cookie?

      - Cookie cookie01= new Cookie ("String Cookiename", "String  CookieValue");

	//创建Cookie对象
Cookie cookie01= new Cookie("username", "morty");
Cookie cookie02= new Cookie("password", "123456"); * 怎么将发送cookie发送给浏览器? - 默认情况下,浏览器将Cookie对象发送给浏览器后,浏览器将Cookie保存在了浏览器的缓存中,只要浏览器不关闭Cookie一直存在,并且有效。浏览器关闭后cookie失效。 - 服务器可以一次向浏览器发送多个cookie。 - 服务器发送Cookie到浏览器的方法: response.addCookie(cookieName); // 将cookie对象发送给浏览器
response.addCookie(cookie01);
response.addCookie(cookie02); * 在浏览器缓存中保存着的Cookie什么时候会发给服务器呢? - 浏览器会不会将缓存中的Cookie发送给服务器,和请求路径有关系,请求的路径和Cookie是关联在一起的,不同的路径会发送不同的Cookie给服务器。 - 例如:在浏览器地址栏输入京东的请求路径,浏览器就会将与京东请求路径相关联的Cookie发送给服务器。 * 默认情况下Cookie是和什么路径绑定在一起的呢? - 我们是在 /myWeb/CreateAndSendCookieToBrowser下发送的Cookie给浏览器 - 那么这个Cookie就会和myWeb/这个路径保存在一起,所以以后只要输入的请求路径带有myWeb/,浏览器就会将缓存中的Cookie提交给服务器 * 其实和Cookie所绑定在一起的路径是可以设置的,可以通过java程序进行设置,从而保证Cookie能够和某个特定的路径绑定在一起 - 如何设置Cookie的绑定路径呢? //设置Cookie的关联路径
cookie1.setPath(request.getContextPath()+"/king");
cookie2.setPath(request.getContextPath()+"/king"); > 此时Cookie将和 “ /myWeb/king ” 整个完整的路径绑定在一起,只有发送包含“/myWeb/king”的请求路径,浏览器才会提交Cookie给服务器。 * 如何设置将Cookie保存在浏览器客户端的硬盘上呢? - 如果没有设置Cookie的有效时间,那么Cookie默认保存在浏览器的缓存中,只要浏览器关闭Cookie就会消失。 - 我们可以设置Cookie的有效时间,设置了有效时间大于0,那么Cookie就会自动保存在客户端浏览器的硬盘上,有效时长必须大于0。有效时长到期后,Cookie自动失效。 设置Cookie有效时长 < 0 不会被存储在硬盘中 设置Cookie有效时长 = 0 Cookie 会被直接删除 设置Cookie有效时长 > 0 Cookie存储在浏览器客户端硬盘文件中 - 具体设置Cookie有效时长代码: // 设置cookie的有效时长
cookie1.setMaxAge(60*60);
cookie2.setMaxAge(60*60*24); * 浏览器提交Cookie给服务器,服务器怎么接收? - 使用 Cookie[] request.getCookies() 方法, 从request获取Cookies, 返回一个Cookie数组。 //接收浏览器提交给服务器的Cookie
Cookie[] cookies=request.getCookies(); //输出Cookie
int i=1;
if(cookies!=null){
for (Cookie cookie:cookies) {
String cookieName=cookie.getName(); //获取cookie的name
String cookieValue=cookie.getValue(); // 获取cookie的value
System.out.println("第"+i+"个Cookie信息"+cookieName+"="+cookieValue);
i++;
}
}
} * 浏览器是可以禁用Cookie的,什么意思? - 表示服务器发送过来的cookie,客户端浏览器不接收。 - 服务器还是会进行发送的,只不过是浏览器不接收了。 * Cookie代码总结: ```
public class CookieServlet extends HttpServlet { @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建Cookie对象
Cookie cookie1=new Cookie("userName","Morty");
Cookie cookie2=new Cookie("password","123456");
Cookie cookie3=new Cookie("email","1213@lkd"); //设置Cookie的关联路径
cookie1.setPath(request.getContextPath());
cookie2.setPath(request.getContextPath()); //将Cookie保存在浏览器客户端的硬盘文件中
cookie1.setMaxAge(60*60*24);
cookie2.setMaxAge(60*60*24); //将Cookie发送给浏览器客户端
response.addCookie(cookie1);
response.addCookie(cookie2); //浏览器将Cookie提交给服务器,那么服务器怎么接受Cookie呢?
Cookie[] cookies=request.getCookies(); // 遍历输出Cookie
if(cookies!=null){
for (Cookie cookie:cookies) {
System.out.println(cookie);
}
}
}

JAVAEE_Servlet_21_Cookie的更多相关文章

  1. Django集成Markdown编辑器【附源码】

    专注内容写作的你一定不要错过markdown 简单介绍 markdown是一种标记语言,通过简单的标记语法可以使普通的文本内容具有一定的格式,使用非常简单,学习成本极低 目前各大Blog平台都已支持m ...

随机推荐

  1. Java自学第7期——异常(Exception)

    1.概念: 异常 :指的是程序在执行过程中,出现的非正常的情况,终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类, 产生异常就是创建异常对象并抛出了一个异常对象. Ja ...

  2. Spirng 循环依赖报错:Requested bean is currently in creation: Is there an unresolvable circular reference?

    1:前言 最近在项目中遇到了一次循环依赖报错的问题,虽然解决的很快,但是有些不明白的地方,特此记录. 在此我把 bean 的结构和 注入方式单独拎出来进行演示 1.1:报错提示 1.2:错误日志 Ex ...

  3. WPF -- 自定义按钮

    本文介绍WPF一种自定义按钮的方法. 实现效果 使用图片做按钮背景: 自定义鼠标进入时效果: 自定义按压效果: 自定义禁用效果 实现效果如下图所示: 实现步骤 创建CustomButton.cs,继承 ...

  4. C++构造函数的选择

    构造函数用来初始化类对象.构造函数有好几种,在编程时如何选择不同的构造函数呢?做个总结 一.默认构造函数 默认构造函数是在程序员没有声明任何构造函数的时,编译器为了初始化类对象自己进行的默认构造函数. ...

  5. macOS网络安全审计

    nettop监听网络流量的方法 nettop是macOS系统自带的命令,命令功能能监听网络流量,如果你想查询一个恶意域名.ip和本机进程连接情况,那么可以试试nettop,就是展示方式不是太友好,需要 ...

  6. WebService和Web API 区别

    WebService的特征: 1 基于SOAP协议的,数据格式为XML 2 只支持HTTP协议,只能部署在IIS上 3 不是开源的,但可以被任意一个了解XML的人使用 SOAP :简单对象访问协议Si ...

  7. docker搭建redis集群和Sentinel,实现故障转移

    0.引言 公司开发需要用到redis,虽然有运维自动搭建,还是记录下如何搭建redis集群和Sentinel. 采用的是vagrant虚拟机+docker的方式进行搭建. 搭建思路: 首先是借鉴下其他 ...

  8. 痞子衡嵌入式:盘点国内Cortex-M内核MCU厂商高性能产品

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内Cortex-M内核MCU厂商高性能产品. 在8/16位中低端MCU领域,国内厂商的本土化产品设计以及超低价特点,使得其与国外大厂竞 ...

  9. 一. MySQL基础语法

    1. 案例库表 2. DQL语言(数据查询) 2.1 基础查询 -- 进入指定的库 USE myemployees; DESC employees; -- 使用SELECT查询字段 # 1.查询表中的 ...

  10. Java Swing 自定义Dialog确认对话框

    Java Swing 自定义Dialog 需求:当点击JFrame窗口的关闭按钮时,弹框询问是否确定关闭窗口,如果是则关闭程序,否就让弹框消失什么也不做(使用Dialog). 分析:虽然Java提供了 ...