Cookie技术&Session技术&ServletContext对象

【JavaWeb】Cookie、Session和ServletContext 导读:Cookie和Session用来保存用户的信息,常用在“XXX天内自动登录”。而ServletContext是全局对象,可以用于页尾版权信息。 Cookie: 创建Cookie: 首先创建一个Cookie对象,是一个键值对的形式。然后对这个cookie对象进行设置,比如保存时限。最后,需要在响应中使用addCookie添加这个cookie对象,将其保存在浏览器端。 @WebSer... 阅读详情

一、Cookie技术

Http协议有一个特点,就是无状态,每次请求响应的数据不进行持久化保存。但是在做某些Web需求时,是需要记录用户的状态的。

Cookie技术能将一些用户的信息记录在客户端。通过ServletAPI 中提供的Cookie类,可以将数据存储到客户端的 cookie文件中,当发送请求时,cookie文件中的内容包含在http请求中。

实现将数据通过Cookie存储在客户端,在服务器端创建Cookie类的对象,将数据封装到Cookie对象中,通过 response对象将Cookie对象响应回客户端,客户端自动将Cookie的数据存储到客户端指定文件夹的Cookie文件中。

例如:访问一个TestServlet1 将一个姓名存储到客户端:

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;
@WebServlet("/text1.do")
public class TestServlet1 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //将tom名字 存储到访问这个Servlet的客户端上
        Cookie cookie = new Cookie("name1","tom");
        cookie.setMaxAge(60*60*24);
        resp.addCookie(cookie);
        Cookie cookie1 = new Cookie("name2","jack");
        cookie1.setMaxAge(60*60*24);
        resp.addCookie(cookie1);
        Cookie cookie2 = new Cookie("password","123");
        cookie2.setMaxAge(60*60*24);
        resp.addCookie(cookie2);
    }
}

在浏览器访问 http:localhost:8080/emp/text1.do    设置中查看存储的Cookie数据

可以通过访问某个站点,在请求中获得这个站点的Cookie数据(客户端的)

@WebServlet("/text2.do")
public class TestServlet2 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse resp) throws
ServletException, IOException {
    //获得 客户端存储的Cookie
        Cookie[] cookies = request.getCookies();
        for(Cookie cookie:cookies){
            System.out.println(cookie.getName()+","+cookie.getValue());
        }
    }
}

二、Session技术

Session是会话的意思,代表客户端和服务器的一个会话对象,存储在服务器上的一个对象。

当客户端访问了服务器,就会在服务器上创建一个会话对象,当客户端再次访问了服务器,使用的还是这个会话对象,在会话对象的有效期内没有产生任何的请求响应,会话对象将被销毁,tomcat的session的有效期默认是20分钟

服务器上有一个存储会话对象的散列表(哈希表),当浏览器访问了服务器时,服务器读取浏览器中Cookie中存 储的会话id。

三 、Session对象的生命周期

由于Session的生命周期长,可以向Session中存储一些数据,那么这些数据的生命周期就等同于session的生命周 期,例如登录状态要保存多久?只要有请求响应的操作,就要保存登录状态。

如何向Session中存储数据:

HttpSession接口提供了setAttribute方法,可以向Session对象中存储数据。

存储数据

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet("/text1.do")
public class TestServlet1 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
        //向Session对象中存储 姓名tom
        //首先要获得session对象
        HttpSession session = request.getSession();
        //session对象中封装了一个Map对象,将数据存储到了Map中,通常也说存储到了Session的属性中
        session.setAttribute("name1","tom");//key,value的形式存储
    }
}

获取数据

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet("/text2.do")
public class TestServlet2 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse resp) throws
ServletException, IOException {
        //获取Session中的数据
        HttpSession session = request.getSession();
        System.out.println(session.getAttribute("name1"));
    }
}
获得Session数据,先访问text1.do,再访问text2.do

四、设置Session有效期

在web.xml中,设置session有效期,单位是分钟

<session-config>
    <session-timeout>1</session-timeout><!--设置为1分钟-->
</session-config>

有效期内有没有请求响应,Session被销毁

当然,也可以通过调用HttpSession的方法,让Session对象失效

//让session失效
session.invalidate();

session失效和销毁是不同,session失效后无法获得其属性值,也不能再次失效了,不能做这些操作了,但 session对象还存在;session对象的销毁是Session对象不存在了,清除了。

五、ServletContext对象

ServletContext是Servlet上下文对象,又叫应用程序的上下文对象。在Web服务器(tomcat)启动时 ServletContext对象被创建,Web服务器销毁时,ServletContext对象被销毁。

ServletContext对象的生命周期 长于 Session

可以向ServletContext对象中存储一些数据,数据的生命周期与ServletContext的生命周期相同。 也是通过setAttribute和getAttribute方法进行存储和获取的

思考:

什么样的数据存在Session中?什么样的数据存在ServletContext中?

每个页面共享的数据存储到Session中;所有用户共享的数据存储到ServletContext中

【虚幻引擎UE】UE5 四步骤实现AI漫游与对话行为(含工程源码) 阅读详情

相关推荐

monocle使用sct整合数据integration还是rna中的counts数据 轨迹分析 拟时序

【代码】monocle使用sct整合数据integration还是rna中的counts数据 轨迹分析 拟时序。

生信小博士的博客 1049

Servlet--Cookie原理及API使用详解

会话的概述 在日常生活中,从拨通电话到挂断电话之前的一连串的你问我答的过程就是一个会话。Web应用中的会话过程类似于生活中的打电话过程,它指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程,例如,一个用户在某网站上的整个购物过程就是一个会话。 在打电话过程中,通话双方会有童话内容,同样,在客户端与服务器端交互的过程中,也会产生一些数据,例如,用户甲和乙分别登录了购物网站,甲...

吴声子夜歌的博客 1563

【牛股启动线】副图指标使用技术说明,图文案例分享,通达信炒股指标

如上图,在紫色线在黑色虚线上时,在出现紫色柱线时,通常会出现强势拉升的行情​。柱线加长加上紫色线上扬,进场跟随做多抓强势行情,紫色柱线和紫色线同时做多持续则可以继续持股。如上图,副图指标【牛股启动线】,指标信号包括紫色线走势信号和紫色柱线信号,以及底部的四条虚线技术信号​,还有一条绿色的参考线,一条黑色的虚线两天分档线。如上图,参考买点,紫色柱线开始出现时进场买点,在上图标记的位置对应的就是进场买点​。紫色柱线加长+紫色线上扬,多头共振持股,行情继续拉升阶段,持股待涨或顺势​进场做多。

weixin_69760830的博客 1910

servlet及其web常用对象和cookie,session总结

一文看懂servlet

qq_56926909的博客 749

Ubuntu视频播放器怎么选?VLC、mpv、SMPlayer硬解与字幕配置指南

在Linux系统中,视频播放体验取决于播放器、解码器与显卡驱动的协同。硬件解码通过VA-API或VDPAU将解码任务交给GPU,能显著降低CPU占用,解决4K高码率视频卡顿问题。对于Ubuntu用户,合理配置解码环境与播放器,可流畅播放HEVC、多音轨及ASS特效字幕视频。无论是日常观影、番剧追更还是家庭影院场景,选择合适的播放器并正确启用硬解,都是提升体验的关键。本文围绕Ubuntu平台,详解VLC、mpv、SMPlayer等播放器的安装、硬解配置与常见问题排查,帮助你在Linux上获得流畅的本地视频播放

weixin_33801856的博客 506

傻白入门芯片设计,wafer/die/chip/cell(一)

芯片设计的一些基本概念

qq_46675545的博客 2万+

Cookie对象 ,Session对象,ServletContext对象

Cookie对象 cookie是一种客户端技术(浏览器技术),由服务器创建,响应给客户端的技术。数据存储在浏览器中 cookie作用: 数据不需要经过网络传输,可以提高网页效率,减轻服务器的负载。 cookie不建议存放大量数据,存放大小在4k左右。一般用来储存不需要访问后台,只有浏览器需要的数据。 Cookie是一种浏览器技术,相对而言,不安全。 1、Cookie的创建和发送 ...

qwdknqc的博客 281

物体检测之非极大值抑制:NMS、softNMS、softerNMS、IoU-Net

当前的物体检测算法为了保证召回率,对于同一个真实物体往往会有多个的候选框输出。由于多余的候选框会影响检测精度,因此需要利用NMS过滤掉重叠的候选框,得到最佳的预测输出。当前有如下几种较为常见的NMS方法, 1.基本NMS 非极大值抑制, 顾名思义就是抑制不是极大值的边框,这里的抑制通常是直接去掉冗余的边框。 这个过程涉及以下两个量化指标: 1.预测得分:NMS假设一个边框的预测得分越高,这个框...

LeoLee 1942

Cookie+Session+ServletContext使用

建立和设置Cookie的过程 什么是Cookie Cookie是一小块嵌到Http请求和响应中的数据. Web服务器将cookie嵌入响应的头部,而浏览器的同一客户端则在以后的请求中都将在部携带同样的cookie Cookie由浏览器存在客户端,常为一个文本文件 Cookie中添加与会话相关的内容,实现会话跟踪Cookie包含可选的注释、版本号及最长生命周期(如商城,超过30分钟,cookie失...

weixin_39991465的博客 284

离散系统傅里叶变换的常用结论证明

本文介绍了离散系统傅里叶变换的三个重要结论:1)时域卷积对应频域相乘(公式1-3);2)时域相乘对应频域卷积(公式4-6);3)帕塞瓦尔定理(公式7)及其广义形式,证明信号能量在变换域保持不变。文末提供了MATLAB卷积运算演示程序,通过动画展示离散信号卷积过程(翻转、平移、相乘、累加),并以方波信号为例给出运行结果图。该程序直观呈现了卷积运算的步骤与结果。

newtton的博客 1303

OpenClaw-遇到的问题- FailoverError: Model context window too small (4096 tokens). Minimum is 16000

摘要:OpenClaw配置文件中deepseek-reasoner模型的上下文窗口被默认设置为4096 tokens(实际支持128K),导致系统报错"Model context window too small"。解决方案是删除配置文件中的contextWindow和maxTokens字段,让系统自动获取模型真实能力,并重启OpenClaw服务。配置文件通常位于用户目录下的.openclaw/openclaw.json中。

直到世界的尽头 4163

(第7讲)session、cookie、servletContext区别联系

cookie:是指存储在客户端上的信息,浏览器一旦关闭cookie就被清除。每个用户都有独立的存储cookie的空间,互相独立 session:是指存储在服务器端的信息。每个用户都有独立的存储session的空间,互相独立 servletContext:servletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图。ServletContext实例是通过

weiyastory的博客 1990

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

机器学习深度学习业余选手 1498

讲透Session、Cookie和ServletContext

1. 什么是 Cookie        1) Cookie 的机制:             当你在初次浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页

hdtopku 6000

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JavaWeb 状态管理 Cookie,Session,ServletContext对象

第一节 状态管理-Cookie 1.1 状态管理概述 1.1.1 为什么需要状态管理 HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就丢掉了。   如果用户发来一个新的请求,服务器无法知道它是否与上次的请求有联系。   对于那些需要多次提交数据才能完成的Web操作,比如登录来说,就成问题了。 1.1.2 什么是状态管理 WEB应用中...

weixin_45504233的博客 259

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Session

Session是服务器为每个访问这个服务器的客户端用户创建的一个容器。这个容器中存储的数据能够在多个request之间实现共享。而且,这个容器只属于当前这个用户。 Session是怎么标识每一个用户的 表面上,我们说Session容器是属于某一个用户。其实在会话过程中,只有客户端(浏览器)和服务器两个角色。所以,Session容器标识的不是用户,而是当前用户正在使用的浏览器。浏览器与服务器交流是通过给服务器发送请求实现的,浏览器的每次请求中如果都有一个相同的标记用来标记session。服务器就能够识别这个用

qq_44709805的博客 318

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

session,cookie,servletcontext技术

** session会话: ** 将用户会话数据存在服务器的内存中的一种会话技术.按key-value对方式存值. 工作原理:第一次访问服务器,内存中开创空间给session,生成sessionId,并存到浏览器cookie中。二次访问,请求上带上sessionId,访问到指定的开创空间,进行存,取,删除值 等操作。 ...

GFJadfkljasfg的博客 266

Java 二阶段 Servlet Cookie Session ServletContext

状态管理 Cookie Cookie的使用 //1创建Cookie的对象 Cookie cookie = new Cookie("username", "zhangsan"); Cookie cookie1 = new Cookie("address","北京"); //2设置参数 // “/ ”代表整个网站,只要你是访问的整个网站,都会返回给服务器 // /0831web 表示只要是0821web的这个项目,都会传给服务器 (默认是创建cookie的servlet或者是所在的页面。) //设置有效路

m0_45196258的博客 191

servlet中的cookie、session、servletContext简单操作

servlet中的cookie、session、servletContext简单操作

zzzypp的专栏 602

Servlet之ServletContext、Session、Cookie

ServletContext、Session、Cookie都可以用于存储数据,不过三者存储数据的位置及作用域不同。

蒋固金(jianggujin)的专栏 2776

从Http思考项目中的cookie和session+ServletContext

为什么我们要用cookie和session?首先,先说说Http,首先我们都知道的http是无状态的,什么是无状态?,就指协议对事务处理没有记忆能力,缺少状态意味着->如果后续处理需要前面的信息,需要重传,那么我每次连接传输的数据量就会很大,1,1+1,1+2,1+3...这不巨难受;它不像我们的Socket那样,连接了两个终端,夹个通道随便相互发信息通信,http的客户端只能通过请求服务器获取相关文件内容以及信息;那么问题来了,我们做一个网站,怎么在其他页面中也保存用户信息呢?,毕竟我登录之后要执行业务操

weixin_57128596的博客 543

Servlet 重定向,请求转发,多个Servlet间的数据共享(ServletContext、Cookie、HttpSession和HttpServletRequest)

多个servlet之间的调用规则

qq_39579087的博客 917

45.Cookie、Session、ServletContext数据共享

请求转发 特点:只发一次请求,url不变。 优点:可以实现不同servlet之间的数据共享。 缺点: 1、由于请求URL不变,当网络卡顿时,有可能由于用户误操作而导致表单重复提交。 2、请求转发只能在当前项目内部进行,不能转发到外部资源。 案例: AServlet @WebServlet("/a") public class AServlet extends HttpServlet { @Override protected void service(HttpServletRequest r

wy1511861159的博客 267

ServletContext和cookie

Easymall 1.Easymall简介 Easymall是商城项目,是以java语言为主,JSP、HTML、CSS、JavaScript等为辅的电子商城项目,采用传统的技术(Servlet、JSP)实现商城的登录、注册等功能 涉及技术: Http协议、Tomcat服务器、HTML、CSS、JavaScript、jQuery、Servlet、JSP、JDBC、MySQL、过滤器、监听器等 2.项目环境搭建 创建easymall工程(参照Tomcat中创建web工程) 先对index.jsp保留第一行,然后

RXiaoYao0412的博客 275

GPT Image 2 出的 UI 图如何转成 HTML 和可编辑 Figma

AI 生成的 UI 图,本身只是起点。用 Codex 或 Claude Code 把它变成 HTML,就有了能演示的页面;用 html.to.design 把 HTML 导回 Figma,就有了能沉淀的设计源文件;用 Codia 直接把图转成 Figma,则适合只要设计稿、追求速度的场景。三条链路互相补充,组合起来就形成了"图、代码、设计稿"之间的闭环。同时也要清楚它的边界:单张位图缺少精确数值,像素级还原目前还做不到稳定;图里的文字和图标需要人工把关。

JEECG官方博客 236

Failed to load module script:服务器回的是 text/html

当模块脚本(<script type="module">)请求的资源返回 200 状态但 Content-Type 为 text/html 时,浏览器因严格 MIME 检查而拒绝加载,报错“Expected a JavaScript-or-Wasm module script but received text/html”。该问题常见于缺失的 chunk 被服务器错误返回 index.html。与经典脚本不同,模块脚本始终强制检查 MIME 类型,即使状态码成功也无效。import() 的拒绝仅提示 Fai

qq_40822000的博客 194
上一篇: 小项目(servelt+jsp+mysql+EL+JSTL)完成一个登录功能的Servlet,具有增删改查的操作。实现登录身份验证,防止非法登录,防止多点登录,记住用户名密码功能。
下一篇: JSP技术
aigo-2021
博客等级 码龄5年 69粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aigo-2021

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值