目录
1.5 GoogleChrome浏览器如何查看Cookie?
2.2 如何创建 Session 和获取(id 号,是否为新)
1.Cookie饼干
1.1 什么是Cookie?
1 、 Cookie 翻译过来是饼干的意思。2 、 Cookie 是服务器通知客户端保存键值对的一种技术。3 、客户端有了 Cookie 后,每次请求都发送给服务器。4 、每个 Cookie 的大小不能超过 4kb
1.2 如何创建Cookie?
CooieServlet程序部分代码:
/**
* TODO 从服务器向浏览器发送Cookie
* @param req HTTP请求
* @param resp HTTP响应
* @throws ServletException servlet异常
* @throws IOException io异常
*/
protected void createCookie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
for (int i = 0; i < 10 ; i++) {
//步骤一:创建Cookie饼干对象
Cookie cookie = new Cookie("key"+i, "value"+i);
//步骤二:通知客户端保存Cookie对象
resp.addCookie(cookie);
}
resp.getWriter().write("Cookie 创建成功");
}
查看客户端是否保存Cookie的流程
注:一次可以创建一个cookie,也可以一次创建多个cookie。
1.3 服务器如何获取Cookie?
服务器获取客户端的 Cookie 只需要一行代码: req.getCookies():Cookie[]
Cookie工具类
package com.atguigu.util;
import javax.servlet.http.Cookie;
/**
* @author 白村客
* @version 1.0
* @date 2022-05-24 9:44
* TODO Cookie工具类CookieUtils,主要用于查找指定Cookie名的Cookie对象
*/
public class CookieUtils {
/**
* TODO 查找指定名称的Cookie对象
* @param name 指定的cookie名
* @param cookies cookie集合
* @return 已经查找到的cookie对象,若没找到返回null
*/
public static Cookie findCookie(String name , Cookie[] cookies){
if (name == null || cookies == null || cookies.length == 0) {
return null;
}
for (Cookie cookie : cookies) {
if (name.equals(cookie.getName())) {
return cookie;
}
}
return null;
}
}
CookieServlet程序的部分代码
/**
* TODO 服务器从客户端获取Cookie
* @param req HTTP请求
* @param resp HTTP响应
* @throws ServletException servlet异常
* @throws IOException io异常
*/
protected void getCookie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
// getName方法返回Cookie的key(名)
// getValue方法返回Cookie的value值
resp.getWriter().write("Cookie[" + cookie.getName() + "=" + cookie.getValue() + "] <br/>");
}
Cookie iWantCookie = CookieUtils.findCookie("key1", cookies);
// 如果不等于null,说明赋过值,也就是找到了需要的Cookie
if (iWantCookie != null) {
resp.getWriter().write("找到了需要的Cookie");
}
}
服务器从客户端获取的Cookie值查看结果
1.4 如何修改Cookie值?
方案一:构造器赋值1 、先创建一个要修改的同名(指的就是 key )的 Cookie 对象2 、在构造器,同时赋于新的 Cookie 值。3 、调用 response.addCookie( Cookie );
方案二:setter赋值1 、先查找到需要修改的 Cookie 对象2