尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

day17_cookie_webstorage - 详解

day17_cookie_webstorage - 详解
📅 发布时间:2026/6/19 9:25:56

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

相关新闻

  • 2025年十大接地箱定制生产厂家排行榜,专业的接地箱厂家推荐
  • 自动驾驶中的传感器技术75——Navigation(12) - 详解
  • 薄壁镀锌方管生产厂TOP5权威推荐:服务不错的镀锌方管工厂甄

最新新闻

  • 3分钟掌握Web Audio API声音变换:Voice Change-O-Matic终极指南
  • 深入解析MC9S08QG8内部时钟源(ICS)模块:FLL原理、七种工作模式与实战配置
  • 如何永久保存微信聊天记录:3步完成数据备份的完整指南
  • 第36章:PagedAttention Kernel 与 KV Cache 内存布局
  • React Native Map Link测试策略:单元测试与集成测试最佳实践
  • (2026新)烟台正规防水补漏公司口碑榜TOP5权威推荐!卫生间/厨房/阳台/屋顶/天花板/地下室渗漏水检测维修攻略-靠谱漏水检测维修师傅推荐 - 安佳防水

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号