Java体系知识之Cookie&Web Storage

本文深入探讨了Java中的Cookie使用,包括WriteCookieServlet和ReadCookieServlet的实现,以及JavaScript中操作Cookie的方法。同时,介绍了Web Storage技术,并通过具体的案例展示了其在持久层、业务层和控制层的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java体系知识之Cookie&Web Storage

(1)CookieJava中使用
(2)CookieJS中使用
(3)Web Storage  了解
(4)综合案例-购物车

1 Cookie

1.1 HTTP协议

(1)超文本传输协议,请求-响应的协议
(2)无状态协议:
	浏览器    服务器
	
	服务器端:
		只关心请求;
		即使这个客户端已访问过服务端了,服务端也不知道
		
(3)追踪用户访问情况:
	会话追踪技术:
        cookie:
        	cookie,客户端保存数据;
        	数据不安全;
        	服务器压力小;
        	建议存储简单|不重要的|少量的|英文格式的数据
        	
        session:
        	session,服务器端保存数据;sessionId,保存到客户端Cookie中;
        	数据安全;
        	服务器压力大;
        	
        典型面试题:cookie和session区别
        
        隐藏框:type="hidden"
    	URL后面拼接参数      	

1.2 Cookie简介

(1)一小段文本信息
(2)保存在客户端
(3)键值对形式存储,键值对都是字符串
(4)当访问网站时,本地Cookie中的数据会随着请求一块发送到服务端
(5)Cookie中的数据:可增|可删|可修改
	数据不安全,建议存储简单|不重要的|少量的|英文格式的数据

1.3 Java中使用Cookie

1.3.1 WriteCookieServlet
package com.javasm.basic;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @author: ShangMa
 * @className: WriteCookieServlet
 * @description: 写出Cookie
 * @date: 2022/8/25 11:34
 */
@WebServlet("/write")
public class WriteCookieServlet extends HttpServlet {
   
   
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
   
        /**
         * 创建Cookie对象:
         *  Cookie(String name, String value)
         */
        Cookie cookie = new Cookie("myName","tom");
        /**
         * setPath():
         *  设置路径值;
         * 不同path,会出现同name的Cookie;
         * 同path,同name,覆盖value值
         */
        cookie.setPath("/");
        /**
         * setMaxAge():
         *  设置过期时间,单位是秒
         *
         *  正数:多久之后过期
         *  负数:显示为Session,浏览器关闭时失效
         *  0:删除Cookie信息
         *
         */
        cookie.setMaxAge(24*60*60);
        // cookie.setMaxAge(0);
        /**
         * 向客户端设置Cookie
         */
        resp.addCookie(cookie);
        /**
         * 输出流写出响应内容
         */
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print("写出Cookie成功");
        writer.flush();
        writer.close();
    }
}
1.3.2 ReadCookieServlet
package com.javasm.basic;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @author: ShangMa
 * @className: ReadCookieServlet
 * @description: 读取Cookie信息
 * @date: 2022/8/25 11:35
 */
@WebServlet("/read")
public class ReadCookieServlet extends HttpServlet {
   
   
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
   
        /**
         * 读取客户端发过来的Cookie数据
         */
        Cookie[] cookies = req.getCookies();
        for (Cookie cookie:cookies) {
   
   
            System.out.println(cookie.getName()+" "+cookie.getValue());
            /**
             * 修改Cookie的value值:
             * tom->jack
             *
             * 同path,同name,替换value值
             */
            // 判断
            if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值