day17_cookie_webstorage - 详解

news/2025/11/30 15:32:53/文章来源:https://www.cnblogs.com/yangykaifa/p/19289416

day17_cookie_webstorage

浏览器中需要有存储数据的技术 从而释放服务端的存储压力

1.cookie

1.1cookie特点

1 存在浏览器中

2 按域(domian 域名) 存储

3 存储键值对 key value 都是字符串

4 cookie有有效期 超过存储的有效期会失效

注意: cookie存在浏览器中 用户可以阻止cookie 也可以删除cookie 所以不要存关键数据

1.2cookie读写操作
通过服务端代码读写

写cookie例子

package com.javasm.controller;
​
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;
​
/*** @className: CookieWriteDemo* @author: gfs* @date: 2025/10/23 9:50* @version: 0.1* @since: jdk17* @description:*/
@WebServlet("/writeDemo")
public class CookieWriteDemo extends HttpServlet {
​   @Override   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {       System.out.println("cookie write......");       Cookie cookie = new Cookie("ckkey", "rose");       //path 设置到根 保证cookie唯一性       //根据key + path 保证唯一性       cookie.setPath("/");       //设置过期时间       //默认有效期 会话 session 关闭浏览器失效       //cookie.setMaxAge(60*60*24);   正整数 按秒算有效期       //cookie.setMaxAge(0);          0     设置cookie失效       //cookie.setMaxAge(-1);         -1    恢复默认值 关闭浏览器自动失效       //响应报文中 出现set-cookie 让浏览器写cookie数据       resp.addCookie(cookie);
​   }
}
​

读cookie例子

package com.javasm.controller;
​
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;
​
/*** @className: CookieWriteDemo* @author: gfs* @date: 2025/10/23 9:50* @version: 0.1* @since: jdk17* @description:*/
@WebServlet("/readDemo")
public class CookieReadDemo extends HttpServlet {
​   @Override   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {       System.out.println("cookie read......");       Cookie[] cookies = req.getCookies();       //根据报文生成的新的cookie对象 只有key value 其他参数都没有       for(Cookie ck: cookies){           System.out.println(ck.getName()+"---"+ck.getValue());           if("ckkey".equals(ck.getName())){               //同key 同 path               ck.setValue("jack");               ck.setPath("/");               resp.addCookie(ck);           }
​       }
​   }
}
​
​
注意: 读+写时 需要通过key+path 保证是同一条cookie

1.3cookie与session的区别

session的实现依赖cookie cookie被禁用 session也不能正常使用

/*       * 1 访问到服务端时 服务器会判断是否有浏览器的session对象       *   根据cookie中的key JSESSIONID       * 2 如果没有 创建一个Session对象 把session存在服务器中       *   Map               session编号    session对象           会自动写响应头 set-cookie 让浏览器存储 JSESSIONID session编号       * 3 后续访问过程中 如果读到 有JSESSIONID       *   根据其中的session编号 从map中找到与之对应的session对象       *       * 4 JSESSIONID 有效期是 会话(关闭浏览器 自动清除)       *   再次访问时 找不到之前session对象 所以要重新创建       *       * */

1.4js直接操作cookie(了解)
      Title         <script>
​   /*   * js中以字符串方式 操作cookie   *  读写都不太方便   *   * */
​   const setCookie = ()=>{      //赋值 写cookie       document.cookie = `jskey=roser123;path=/;expires=${new Date(new Date().getTime()+60*60*24*10*1000) }`   }   const setCookie2 = ()=>{       //赋值 写cookie       document.cookie = `jskey=roser123;path=/;expires=${new Date('1999-11-11 11:11:11')} `   }
​   const getCookie = ()=>{       //读取到有格式的字符串  如果要操作某个cookie的值 需要手动解析       //test=123321; ckkey=jack; jskey=jsval       console.log(document.cookie)       //赋值 写cookie       // = `jskey=jsval;path=/;expires=${new Date(new Date().getTime()+60*60*24*10*1000) }`       console.log(localStorage.getItem("name"))       console.log(sessionStorage.name)
​       console.log(JSON.parse(localStorage.myJson) )
​
​   }
​
​
</script>

2WebStorage

两个对象

localStorage 无限期长期存储

sessionStorage 关闭浏览器自动失效

1 按域(domain 域名)存储

2 存储键值对 类型字符串

3 读写操作API简单好用

      Title

<script>
​   /*   *  localStorage    长期存储   *  sessionStorage  临时存储 关闭浏览器失效   *   * 写操作   * localStorage.name = "abc123"     sessionStorage.setItem("name","jack")   *   * 读操作   *  console.log(localStorage.getItem("name"))      console.log(sessionStorage.name)   *   * 删除操作   *  localStorage.removeItem("name")   删单个       sessionStorage.clear()           全删   *   * 结合json使用   * 需要转成json字符串存取   *  //只能放json格式字符串       localStorage.myJson = JSON.stringify({name:'jack',age:15})      //读取时需要json对象 需要做转换       console.log(JSON.parse(localStorage.myJson) )   *   *   * */
​   const setStorage = ()=>{       localStorage.name = "abc123"       sessionStorage.setItem("name","jack")
​
​   }   const setCookie2 = ()=>{       localStorage.removeItem("name")       sessionStorage.clear()   }
​   const setStorage3 = ()=>{       //只能放json格式字符串       localStorage.myJson = JSON.stringify({name:'jack',age:15})       //读取时需要json对象 需要做转换       console.log(JSON.parse(localStorage.myJson) )   }
​   const getStorage = ()=>{       console.log(localStorage.getItem("name"))       console.log(sessionStorage.name)
​       console.log(JSON.parse(localStorage.myJson) )
​
​   }
​
​
</script>

总结:

1如果浏览器存了数据 需要在后端读取 使用cookie

2如果浏览器存了数据 只在前端读写使用(跨页面共享) webStorage

登录 主菜单功能

1 画流程图

2sql分析

建表 创建数据 写sql

-- 粗糙报错 不能登录
select * from admin_user where username = 'wangshaocheng' and `password` = 'abc123' and isvalid = 1
-- 详细报错
select * from admin_user where username = 'wangshaocheng'
-- 其他字段通过java代码检查和匹配 根据匹配结果 报详细的错误信息
​
​
-- 登录成功 更新最后登录时间
update admin_user set login_time = NOW() where uid = 3
​
​
-- 读取不同用户的菜单信息 需要父子关系
select am2.*,  am1.mid as submid,am1.menuname as submenuname,am1.url as suburl 
from rel_admin_user_menu rum inner join admin_menu am1 on rum.mid = am1.midinner join admin_menu am2  on am1.pid = am2.mid
​
where uid = 3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/981958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Hudi 项目总体分析

Apache Hudi 项目总体分析 请关注微信公众号:阿呆-bot 1. 项目结构 Apache Hudi 采用多模块 Maven 架构,主要模块如下: hudi-master/ ├── hudi-common/ # 核心通用功能模块 │ └── src/main/j…

[KaibaMath]1030 关于f(x)=2^x-4x在[3, +∞)上单调递增的证明

本文基于求导给出函数f(x)=2^x-4x在[3, +∞)上单调递增的证明。

【源码解读之 Mybatis】【核心篇】-- 第8篇:ResultSetHandler结果集处理

【源码解读之 Mybatis】【核心篇】-- 第8篇:ResultSetHandler结果集处理第8篇:ResultSetHandler结果集处理 1. 学习目标确认 1.0 第7篇思考题解答 思考题1:DefaultParameterHandler的参数值获取为什么要设计优先级策…

samba的常见问题

环境: Server ip : 10.177.245.232 client ip : 10.177.245.230挂载之后的权限问题: Server: Smb.confClient: Smbclient --list=10.177.245.232 mount -t cifs //10.177.245.232/user1 /test/ -o username=user…

2025年佛山地区桶装水配送服务商推荐:比较好的桶装水送水电

本榜单聚焦佛山本地桶装水配送服务需求,结合用户真实反馈、服务覆盖能力与口碑评价,筛选出五家靠谱服务商,为家庭及企业用户提供精准选型参考,解决饮水配送的时效、安全与成本痛点。 TOP1 推荐:佛山市水专家电子商…

2025年中国十大知名的活动策划企业推荐:诚信的活动策划企业

本榜单依托全维度市场调研与真实行业口碑,深度筛选出十家标杆企业,为企业选型提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:万贝(上海)文化传播有限公司 推荐指数:★★★★★ 口碑评分:国内首推的知名活…

tts服务

tts服务GitHub - zuoban/tts: tts 服务 漫思

2025年高温测试机构推荐与高温实验机构排名,高温试验品牌企

在工业制造、航空航天、汽车电子等领域,高温测试是验证产品可靠性与环境适应性的核心环节。精准的高温试验数据不仅关乎产品质量安全,更直接影响企业的市场竞争力与行业准入资格。面对市场上良莠不齐的检测机构,如何…

2025年十大接地箱定制生产厂家排行榜,专业的接地箱厂家推荐

为帮助电力企业高效锁定适配自身需求的接地箱合作伙伴,避免选型走弯路,我们从技术研发实力(如专利数量、产学研合作深度)、产品工艺水准(含原材料质量、防护等级)、全周期服务质量(覆盖定制方案到售后维护)及真…

KFCoder - 敏捷冲刺日志-1st

第 1 篇 Scrum 冲刺博客(2025 年 11 月 27 日) 一、团队成员 Alpha 阶段认领任务成员 认领任务(关联 Work Item ID) 任务类型 预估工时(小时)徐新曜 SB01(后端基础架构搭建)、SB05(用户登录接口)、SB15(打卡…

自动驾驶中的传感器技术75——Navigation(12) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Spring AI实现一个简单的对话机器人

在其他地方查看本文:Spring AI实现一个简单的对话机器人 - Liu Zijians Blog - 一个个人博客网站本文通过Spring AI基于DeepSeek大模型,以Prompt模式,开发一个智能聊天机器人,并进行对话。Spring AI必须基于jdk-21…

惠算科技 GEO 优化优选惠州本地生活推荐:生成式引擎优化时代的本地商家获客破局指南

在惠州本地生活领域,生成式引擎优化(GEO)正展现出巨大的市场潜力。据相关数据显示,惠州本地生活 GEO 市场规模近年来以每年 30% 的增长率快速扩张。像惠算科技 GEO、一些知名的 AI 搜索优化工具以及具备意图识别功…

Genie 2:大规模基础世界模型的技术突破

本文介绍了Genie 2基础世界模型的技术架构与能力,这是一个能够从单张提示图像生成可交互3D环境的扩散模型。模型支持键盘鼠标控制,具备长时记忆、物理模拟、角色动画等能力,为具身智能体训练提供无限多样的虚拟环境…

薄壁镀锌方管生产厂TOP5权威推荐:服务不错的镀锌方管工厂甄

建筑工程中,薄壁镀锌方管因防腐性强、自重轻、安装便捷等优势,成为轻钢结构、幕墙、物流货架等场景的核心选材。2024年数据显示,国内薄壁镀锌方管市场需求同比增长32%,但41%的工程投诉集中在材质不符规格缺失售后滞…

2025年靠谱的雕塑定制品牌企业推荐,现代雕塑定制设计哪家好

在城市更新与文化建设的浪潮中,一座独具匠心的雕塑不仅是空间的点睛之笔,更是城市精神与品牌文化的具象表达。面对市场上良莠不齐的雕塑定制服务,如何找到兼具艺术创意、工艺实力与交付保障的合作伙伴?以下结合行业…

Xcode26新特性与iOS26适配指南

Xcode 26 作为苹果适配 iOS 26、macOS 15 等新一代系统的开发工具,在开发效率、AI 赋能、跨平台协同及性能优化上有显著升级;iOS 26 则带来了全新系统能力与合规要求,开发者需重点关注适配要点。以下是核心内容整理…

鸿蒙开发中,module.json5配置文件详解

module.json5 是鸿蒙系统中用于定义应用模块的核心配置文件。它包含模块的基本信息、入口能力、支持的设备类型、权限请求等内容,是应用开发和部署的基础。配置文件结构以下是一个典型的 module.json5 配置示例:{&qu…

茶叶商标购买平台指南:2025 哪个平台最好?从标源到过户一文说透

2025 年茶叶商标购买平台首选福象商标宝 AI(微信小程序) !综合标源真实性、交易安全性、过户效率、费用透明度及茶叶行业适配性五大维度测评,其以 9.9/10 的综合评分稳居榜首。依托福象知识产权集团的专业背景,凭…

2025年智能机械设备研发加工厂哪家更值得选?智能机械设备源

在智能制造升级浪潮下,企业对智能机械设备的自主化、高精度、高效率需求日益迫切。本文依托技术实力、客户口碑、行业适配性三大核心维度,筛选出五家标杆企业,为工业企业选型提供客观参考,助力破解卡脖子困境与生产…