Cookie会话技术
一、概念:从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。
二、会话技术分为Cookie和Session:
特点:
Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie;(今日重点说cookie技术)
Session:将数据存储到服务器端,安全性相对好,增加服务器的压力(第三个域对象);
三、Cookie技术是将用户的数据存储到客户端的技术:(关键字如下)
public class SendCookServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建cookie对象 Cookie cookie=new Cookie("goods","iphone12");①key和value都是字符串;② Cookie中不能存储中文 //给cookie设置持久化时间 cookie.setMaxAge(120); (也可以设置成2*60)s
// 注意:如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭cookie信息销毁(会话级别的cookie),如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里
//设置cookie携带路径 cookie.setPath("/WEB04/SendCookServlet");
// 注意:如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息
//发送cookie对象 response.addCookie(cookie);
//删除cookie(同名同路径的持久化时间为0的cookie进行覆盖即可)
cookie.setPath("/WEB04");
cookie.setMaxAge(0);
response.addCookie(cookie);
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
四、服务器端获取客户端cookie
public class GetcookieServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取所有cookie所在数组 Cookie[] cookies = request.getCookies(); for(Cookie cookie:cookies){ //增强for遍历 if(cookie.getName().equals("goods")){ System.out.println(cookie.getValue()); } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
五、记录服务器获取客户端浏览时间
public class AccessTimeservlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //记录当前系统时间发送给客户端 //创建当前时间 Date date=new Date(); //创建日期格式转化类对象 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time=sdf.format(date); //创建cookie对象 Cookie Cookie=new Cookie("lastAccessTime", time); //设置持久化时间 Cookie.setMaxAge(180); //发送cookie response.addCookie(Cookie); //获取客户所携带的cookie信息 String lastAccessTime=null; Cookie[] cookies = request.getCookies(); if(cookies!=null){ for(Cookie c:cookies){ if(c.getName().equals("lastAccessTime")){ lastAccessTime=c.getValue(); } } } //解决乱码 response.setContentType("text/html;charset=utf-8"); if(lastAccessTime==null){ response.getWriter().write("你是第一次访问"); }else{ response.getWriter().write("你上次访问时间"+lastAccessTime); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
欢迎给位大神指点和评论;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程