javaWeb项目之Servlet学习笔记----初识Cookie

servlet-cookie实现向客户端写cookie信息 title: servlet cookie实现向客户端写cookie信息 date: 2019-07-09 11:00:00 servlet**基础 servlet是Java web应用中最核心的组件,也是web服务器组件,它是一个中间控制层,负责处理客户端提交过来的请求数据以及调用业务逻辑对象,根据业务逻辑来控制页面转发。 cookie** 在互联网中,cookie是小段的文本信息,... 阅读详情

从本篇开始学习Servlet技术中的Cookie专题。

  首先来了解什么是“会话”。会话是web技术中的一个术语,可以简单的理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,这个过程称为一个会话。

  如果在打开一个浏览器访问一个页面后,再打开一个浏览器访问同一个页面,那这就是有两个会话;而打开一个浏览器访问一个页面后,通过这个页面上的某个超链接是从新的浏览器打开的,那依然只算一个会话。

  每个用户在使用浏览器与服务器进行会话的过程中,各自不可避免地会产生一些数据,而程序要想办法为每个用户保存这些数据。比如,用户点击超链接通过一个产品Servlet购买了一个商品,程序应该想办法保存这个商品,以便于用户在点击付款超链接时能再从付款Servlet中看到这个商品并为其买单。

  使用Request对象是无法保存数据的,因为在点击商品和付款各自的Servlet是发送两个不同的Request请求对象,而使用ServletContext对象则会发生多个用户的线程安全问题,使用转发功能理论上可行,但是用户体验将会大打折扣,每次点击一个商品就会被要求付款。所以根据以上的需求,有两种技术来保存会话过程中产生的数据:一个是Cookie,一个是Session,Session技术将会在之后的篇章中介绍学习。

  本篇主要先讲述Servlet中的Cookie技术。Cookie技术是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器时,就会带着各自的数据过去,这样web服务器处理的就是用户各自的数据了。

下图是一个会话过程中设置上一次访问时间的Cookie的简单过程:

  

创建一个Cookie对象就像平常创建一个Java对象一样简单:

  

在使用构造器时传入Cookie的名和值这样的键值对即可,我们在服务器端要获取从浏览器发来的Cookie数据可以使用请求对象的request.getCookies方法获得一个Cookie数组,而我们想向浏览器输出Cookie时可以使用响应对象的response.addCookie(Cookie)方法。

同时Cookie对象还有如下一些方法:

  

  getName方法用来获取某个Cookie对象的名称。

  setValue方法和getValue方法分别用来设置和获取某个Cookie对象的值。

  setMaxAge(int expires)方法是设置Cookie的有效期,如果没有这句代码,Cookie的有效期就是一个会话时间(即关闭浏览器该Cookie就不存在了),当设置了Cookie的有效期后,Cookie会保存在浏览器指定的硬盘文件中,同时在这段时间内,每次访问服务器都会带着Cookie过去。如果将该方法参数置为“0”,则服务器会指示浏览器删除该Cookie。

 

  setPath方法是设置Cookie的有效路径。表示在访问某些特定URL时才会带Cookie过去。假设某个web应用为【myservlet】,如果我们将setPath方法中的参数设置为“/myservlet”,那么访问该web应用下所有的资源都会使浏览器发送Cookie过去;而如果我们将setPath方法中的参数设置为“/myservlet/pages”,那么只有访问该web应用中的【pages】下的资源才会带Cookie过去,而访问该web应用中的其他资源则不会带Cookie给服务器。如果我们没有设置setPath方法,那么该Cookie的有效路径默认为创建Cookie对象的当前程序所在目录。注意,Cookie的路径是给浏览器使用的(详见《Servlet的学习之web路径问题》)

  setDomain方法是设置Cookie的有效域名,如:.sina.com(注意最前面有一个点)。表示当浏览器访问该域名时才会带Cookie过去。但是现在浏览器基本全面阻止了这个可能作为不安全的功能,所以几乎已经被弃用。

 

  举例:我们访问某个Servlet,而在访问这个Servlet时会将当前访问时间作为Cookie中的值返回给客户端,同时下次再次访问该Servlet时,会显示上一次客户端来访问的时间:

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        
        PrintWriter writer = response.getWriter();
        writer.write("您上次访问的时间是:");
        //获取用户上一次的访问时间并显示
        Cookie[] cookies = request.getCookies();          //从请求中获取客户端发来的Cookie
        for(int i=0;cookies!=null && i<cookies.length;i++) {
            if(cookies[i].getName().equals("lastAccessTime")) {  //获取最后访问时间的Cookie
                Long mTime = Long.parseLong(cookies[i].getValue());       
                String lastAccessTime = new Date(mTime).toLocaleString();
                writer.write(lastAccessTime);
            }
        }
        //将本次登录时间重新装载进Cookie中并返回给客户端
        Cookie timeCookie = new Cookie("lastAccessTime", System.currentTimeMillis()+"");
        timeCookie.setMaxAge(1*24*60*60);  //将Cookie有效期置为一天
        response.addCookie(timeCookie);       //将Cookie传回客户端
    }

第一次访问是没有Cookie的,所以看不到访问时间:

  

但是我们通过HttpWatch观察Response响应包中的内容已经有了“Set-Cookie”响应头:

  

刷新后的第二次访问就可以看到了:

  

同时观察HttpWatch中Request请求包的“Cookie”请求头可以发现:

  

 

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南 本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。 阅读详情

相关推荐

Star CCM+ 202206 (17.04) 详细安装步骤

StarCCM+ 17.04 安装包和详细安装步骤

薛定谔的alpha狗 3万+

Servlet项目创建

Servlet项目的创建,访问异常情况分析

m0_52478073的博客 2534

实用电路精讲系列---双级运放放大电路(差分放大+跟随缓冲)

本文分析了双极运放放大电路的工作原理及其典型应用。该电路结合差分放大器和跟随缓冲器,实现高精度信号放大与阻抗匹配。差分放大器通过放大差模信号并抑制共模噪声提升信噪比;跟随缓冲器则提供阻抗变换,确保信号稳定传输。两者协同工作可优化输入阻抗、增强噪声抑制并提高设计灵活性。文章还列举了10个典型应用案例,包括医疗设备、工业传感器和新能源系统等,展示了该电路在精密电子系统中的关键作用。最后通过实用电路分析,详细说明了各模块功能及设计注意事项。

weixin_40590799的博客 2954

java web 第三周实验

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_45774633的博客 336

西工大noj100题python2024第一季1-10

【代码】西工大noj100题python2024第一季1-10。

weixin_70523540的博客 1799

为什么我把「大模型Clouder认证:基于百炼平台构建智能体应用」作为大模型学习的第一站?从 0 到拿证全流程经验分享

【摘要】作为一个刚拿下「大模型 Clouder 认证:基于百炼平台构建智能体应用」的过来人,想在开头就和大家聊聊这个认证的特殊意义 —— 在企业加速 AI 落地的今天,能用低代码快速构建智能体应用,已经成为 AI 从业者的核心竞争力。无论是企业微信客服提效、钉钉机器人自动化办公,还是网站智能助手升级,这些场景化能力正是当下数字化转型的刚需。

davidkorhenn的博客 1527

Java Web之路(三)Servlet之cookie和session

1 转载于:https://www.cnblogs.com/cnki/p/5907226.html

weixin_30478923的博客 96

Axure RP9 利用中继器实现列表数据的切换,分页器数据的动态交互加载

Axure RP9 利用中继器制作分页组件 在原型制作中,如何实现分页数据的动态加载、分页与数据的交互,每页显示条数的设定。下面通过制作五年级一班成绩单分页列表,分享给大家,适合有一定axure使用基础的人员,如有更好的方案,请多多指教。 最终效果图: 步骤1:首先利用中继器画出成绩单列表,并绑定成绩单数据。 步骤2:画出每页显示条数控制下拉框,利用中继器画出分页组件 步骤3:新增全局标量maxpage(显示的最多页码),minpage(显示的最小页码),i(循环计数),j(最循环数),selectpa

shandongmike的博客 6819

Javaweb(五)Cookie&SessionJsp

Cookie&SessionJsp 1 会话技术 1.1 会话管理概述 1.1.1 什么是会话 这里的会话,指的是web开发中的一次通话过程,当打开浏览器,访问网站地址后,会话开始,当关闭浏览器(或者到了过期时间),会话结束。 举个例子: ​ 例如,在打电话时,这时突然有送快递的配送员敲门,我放下电话去开门,收完快递回来后,通话还在保持中,继续说话就行了。 1.1.2 会话管理作用 什么时候会用到会话管理呢?最常见的就是购物车,当用户登录成功后,把商品加入到购物车之中,此时用户无论再浏览什么商品,当

ayu6_1的博客 500

LPDDR6 技术标准详解(JESD209-6)

是继 LPDDR5/5X 之后的新一代低功耗 DRAM 标准,专为满足移动终端、AI、边缘计算等高带宽、低功耗场景而设计。该标准通过全新架构、动态功耗控制机制和增强型数据完整性机制,实现性能、能效与可靠性的全面升级。LPDDR6 并非仅是速度升级,更是内存架构设计思路的演进,围绕“低功耗 + 高带宽 + 强安全”的三维目标,构建下一代 SoC 平台关键基础。✅ 高带宽:支持 32B/64B 动态突发✅ 低功耗:动态电压、通道切换✅ 高可靠性:ECC + 自测试 + 安全区。

weixin_43199439的博客 2571

第3章: MMU Interval Notifier 区间通知器的核心原理⭐

摘要:区间级内存通知机制分析 本文分析了Linux内核中区间级内存通知机制(mmu_interval_notifier)的设计原理与实现。该机制针对传统全局通知(mmu_notifier)存在的性能开销大、无法精确控制等问题,通过引入区间树(Interval Tree)实现精确匹配,仅当内存变化与注册区间重叠时才触发回调。核心优势包括:1)O(log n + k)的高效查找性能;2)支持独立管理各内存区间;3)实现高并发处理不同区间的失效事件。

图形/计算GPU的驱动与虚拟化技术分享园地 2020

在Servlet中向客户端写Cookie信息

应用Servlet API中提供的Cookie类,用户把表单信息提交给Servlet后,在Servlet中获取用户请求的信息并添加到Cookie对象中,再通过HttpServletResponse对象把Cookie信息返回给客户端,在JSP页面中通过request内置对象来获取客户端的Cookie信息 在JSP中使用request对象获取的是一个Cookie对象的数组,需要循环中便利所有Cooki...

you can you up up up的博客 1104

国科大学习资料--VLSI测试与可测试设计--2020期末考试试题

国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 一、概念题 1简述可测试性测度与两个主要的测度指标的含义; 2以March C-算法为例,说明March算法的构成,以及March C-算法的故障覆盖率; 3“效果-原因”诊断法和“原因效果诊断法”的不同; 4列举四条扫描设计时出现的问 题及解决办法; 5最少写出1149.1与1500的五点不同; = = = = =

无名何许人的博客 1150

JavaWeb之Servlet详解

zxc412728的博客 9220

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【JavaWeb】Maven、Servlet、cookie/session

Servlet就是sun公司开发动态web的一门技术。Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:编写一个类,实现Servlet接口;把开发好的Java类部署到web服务器中。把实现了Servlet接口Java程序叫做Servlet。

杨DaB的博客 1555

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JavaWeb ——servlet学习5之cookie

JavaWeb ——servlet学习5之cookie Cookies的使用 // 将Cookie传递给浏览器 Cookie cookie = new Cookie("aa", "bb"); //给响应,添加一个cookie response.addCookie(cookie); // 从浏览器中获取cookie Cookie[] cookies = request.getCookies...

子敬的技术博客 263

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaWeb—>Servlet:Session和Cookie

JavaWeb—>Servlet:Session和Cookie 目录JavaWeb—>Servlet:Session和Cookie一.Session1.Session概念2.背景(使用场景)3.流程<1>发起请求,查看结果<2>分析请求结果<3>多次刷新<4>代码示例<5>小结二.Cookie1.Cookie的概念2.Cookie的使用场景3.Cookie的实现<1>工作原理<2>实现<3>代码示例&

qq_45704528的博客 939

基于SSM框架的JavaWeb程序设计之初识Servlet

Servlet是运行在Web服务器端的Java应用程序,它使用Java语言编写。与Java程序的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持。在JavaWeb应用方面,Servlet的应用占有十分重要的地位,它在Web请求的处理功能方面也十分强大。Servlet容器是指提供了Servlet功能的Web容器,如tomcat、resin、weblogic等。Servlet由Servlet容器进行管理。

qq_57930222的博客 1084

JavaWeb-Servlet基础

本文介绍了Servlet开发的核心内容:1. 创建Servlet需继承HttpServlet类并重写service方法,使用@WebServlet注解或web.xml配置访问路径;2. 详细讲解了Servlet生命周期方法(init/destroy)和请求响应处理流程,包括HttpServletRequest/Response对象的使用;3. 对比了请求转发(共享request对象)和重定向(两次请求)两种页面跳转方式;4. 介绍了Cookie技术的特点和使用方法,包括设置有效期和存取机制。

m0_53499553的博客 1090

Servlet中Cookie

会话跟踪技术 什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了。从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中。 在JavaWeb中,客户向

午-夜 6728

JavaWeb学习|Cookie

所有知识点都来自互联网,进行总结和梳理,侵权必删。引用来源:尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版。

anncyuyan的博客 735

JavaWeb—Servlet

本文主要讲解了有关JavaWeb中有关Servlet的相关内容,主要介绍了请求转发重定向以及文件上传和下载的知识

rxdasd123456的博客 1316

JavaWeb ——Cookie 对象

API:创建()、发送()、读取()、生命周期()、路径(setPath()中文处理:需通过URLEncoder编码、URLDecoder解码,不能直接存储中文生命周期:默认会话级(内存),setMaxAge(正数)持久化(硬盘),删除路径作用:控制客户端在哪些请求路径下携带 Cookie,推荐设置为项目根路径场景示例:自动登录、记住用户名、跟踪用户偏好。

2201_75940978的博客 1154

【JavaWeb】-Cookie的使用,看完这个别说你不会Cookie了(四)

Cookie 前言 因为cookie、session、token本身就是很容易混淆的东西,这里不放在一块了,所以我们先来理解下cookie是什么,怎么去简单的使用下, 看前点个赞,养成好习惯;👍 书接上回: 【JavaWeb】-Tomcat、Eclipse使用项目搭建(一) 【JavaWeb】-mysql、jdbc、dbcp使用(二) 【JavaWeb】-MVC、Servlet学习(三) 介绍 cookie是啥,来自百度百科: 我觉得多少都了解cookie吧,因为是不是有时候好网站都在拦截Cookie

hello_list的博客 780

JavaWeb学习——Servlet学习(Cookie、Session)

JavaWeb学习——Servlet学习(Cookie、Session) 1.Cookie和Session简单理解 问题引出:我想大家都有这种经历,当我们在网页上访问一个网页时,比如博客,邮箱等一些需要登陆的网站。每当我们关闭浏览器,下次再进入该网站时我们还需要再登陆(当然有些浏览器可能会做处理,询问用户是否保存用户名和密码,这个是属于浏览器帮我们做的,不做考虑)。但是当我们登陆上去但是不关闭浏览...

qq_43411550的博客 296

JavaWeb | Servlet之Cookie、Session

JavaWeb | Servlet之Cookie、Session1.会话2.保存会话的两种技术3.Cookie3.1 Cookie原理3.2 用cookie保存用户上一次访问时间的示例4.Session4.1 原理4.2 用Session保存用户上一次访问记录的示例 1.会话 会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话。 有状态会话:用户打开...

weixin_42054526的博客 209
上一篇: javaWeb项目之Servlet学习笔记----web路径
下一篇: javaWeb项目之Servlet学习笔记----初识session
iamlinuxasd
博客等级 码龄10年 4粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值