Java复习第十九天学习笔记(Cookie、Session登录),附有道云笔记链接

news2024/11/26 0:38:29

【有道云笔记】十九 4.7 Cookie、Session登录
https://note.youdao.com/s/VwpxfEim

一、会话技术简介

生活中会话

我: 小张,你会跳小苹果码?

小张: 会,怎么了?

我: 公司年会上要表演节目,你教教我把

小张:没问题,一顿饭而已。

我: OK。

。。。。。。。。

在这次生活中的会话中产生通话记录(会话数据)

软件中的会话

链接到数据库Connection,也叫会话,你要想操作数据库要和数据库保持一个会话的功能。

会话:

一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止

会话技术就是记录这次会话中客户端的状态与数据的。

会话技术分为Cookie和Session:

Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清除cookie

Session:将数据存储到服务器端,安全性相对好,增加服务器的压力

0

ServletContext域对象的作用范围:整个web应用(所有的web资源servlet、jsp都可以向ServletContext域中存取数据,数据是可以共享的)

数据放在服务器的技术叫Session技术:Session技术要用到Cookie

0

四个域对象:

Request、ServletContext、Session、Page 都可以通过setAttribute("key", value) getAttribute("key")存取数据

什么是域对象?

Request、Session、ServletContext这三个都是域对象,域对象就是存储数据的区域(其实就是服务器中一块内存区域),

所有的域对象都有这三个方法:

  1. request.setAttribute("list", list);
  2. request.getAttribute("list");
  3. request.removeAttribute("list");

Request、Session、ServletContext这三个都是域对象区别就是他么的范围不一样。

  1. request.setAttribute("list", list); requst的范围只在转发中有效。
  2. session.setAttribute("list", list); session的范围是当前这个用户的所有操作都有效。
  3. servletContext.setAttribute("list", list);servletContext的范围整个项目都有效。

范围:ServletContext>Session>Request>Page

使用原则:小的范围能完成功能就放到小的里面。

一、Cookie

数据放在浏览器端的技术叫Cookie技术:

0

像亚马逊这种电商网站,用户没有登录时候,购物车信息是存放在Cookie中,如果用户登录了,会把Cookie中购物车信息 同步到服务器的数据库中,是不会放到Session中,因为像ServletContext和Session都是服务器中的一块内存区域是非常宝贵,重启服务器所有的内存区域都会销毁,数据也就没有。

大家都有这种体验登录之后加入在电脑浏览器加入购物车信息,在手机上也能访问,手机上是从服务器的数据库中拿到的。

0

1、服务器怎么将Cookie设置到浏览器客户端

创建Cookie

Cookie cookie = new Cookie(cookieName, cookieValue);

例子:

Cookie cookie = new Cookie("goods", "IPhone");

resp.addCookie(cookie);

Cookie会以响应头的形式发送给浏览器客户端。

Cookie中不能存中文。

0

0

再请求Servlet的时候会自动携带设置的Cookie:

0

2、服务器怎么接受客户端携带的Cookie

cookie信息是以请求头的方式发送到服务器端的:

1)通过request获得所有的Cookie:

Cookie[] cookies = request.getCookies();

2)遍历Cookie数组,通过Cookie的名称获得我们想要的Cookie

protected void service(HttpServletRequest req, HttpServletResponse resp) { Cookie[] cookies = req.getCookies(); for (Cookie cookie : cookies) { System.out.println("name: " + cookie.getName() + ", value: " + cookie.getValue()); } }

3、Cookie在浏览器中保存多长时间?

1. 默认情况下,当浏览器关闭后,Cookie数据被销毁

2. 持久化存储:

cookie.setMaxAge(10 * 60);//保存10分钟

设置Cookie信息在浏览器的磁盘文件中存储的时间是10分钟,过期浏览器自动删除该Cookie信息。

an integer specifying the maximum age of the cookie in seconds; if negative, means the cookie is not stored; if zero, deletes the cookie

正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效

负数:浏览器关闭的时候Cookie就丢失,默认值

零:表示删除同名的Cookie数据。

删除客户端的Cookie:

如果想删除客户端已经存储的Cookie信息,就是将持久化时间设置为0


二、Session

Session服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession

但客户端需要每次携带一个标识的ID:JSESSIONID去服务器寻找自己的内存空间。

所以说Session技术是基于Cookie技术的,Session需要借助于Cookie存储客户的唯一标识JSESSIONID。

1、获得Session对象

两中getSession方法:

HttpSession session = request.getSession(false);

HttpSession session = request.getSession(true); request.getSession();

  1. request.getSession(false)

得到session对象,原来有Session就直接返回,没有返回null

  1. request.getSession(true)

创建或得到session对象,原来有Session就直接返回,没有Session自动创建新的session对象。

request.getSession(); 不加参数默认就是true。

2、怎样向session中存取数据

Session也是存储数据的区域对象,所以session对象也具有如下三个方法:

  1. session.setAttribute(String name,Object obj);
  2. session.getAttribute(String name);
  3. session.removeAttribute(String name);

3、Session对象的生命周期

创建:第一次执行request.getSession()时创建

销毁:

  1. 服务器关闭时
  2. session过期/失效(默认30分钟)

问题:时间的起算点 从何时开始计算30分钟?

从不操作服务器端的资源开始计时

可以在工程的web.xml中进行配置

30

  1. 手动销毁session (注销或者退出)

session.invalidate();

当在同一个浏览器中同时打开多个标签,发送同一个请求或不同的请求,仍是同一个session;

当使用不同的浏览器时,发送请求,即使发送相同的请求,是不同的session;

当把当前某个浏览器的窗口全关闭,再打开,发起相同的请求时,是不同的session.

4、Session与Cookie的区别

  1. Session存储数据在服务器端,Cookie在客户端
  2. Session没有数据大小限制,Cookie有
  3. Session数据安全,Cookie相对于不安全

三、登录

使用Session技术完成用户登录的功能:

登录功能会使用到Session,把用户登录的用户名和密码保存到Session,因为Session是属于每个用户独有的,就可以记录每个用户单独的登录信息。

0

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

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

相关文章

张大哥笔记:一个很笨但是能赚钱的方法

曾经有一个学生向南怀瑾先生提问:什么样的人才能轻松赚到钱?他说方法很简单,假设你现在是一个天天卖烧饼油条的小老板,一天两天没有人买,卖不掉就自己吃,但仍然是一心一意做烧饼油条,三四天后就…

数据结构——双向循环链表

目录 前言 一、链表的分类 二、双向循环链表 2.1 开辟新的节点 2.2 链表初始化 2.3 打印链表 2.4 链表的尾插 2.5 链表的头插 2.6 链表的尾删 2.7 链表的头删 2.8 查找链表 2.9 在pos位置之后插入数据 2.10 删除pos位置的数据 三、完整代码实现 四、顺序表和双向…

Redis中的订阅发布和事务(一)

订阅发布 PUBSUB NUMSUB PUBSUB NUMSUB [channel-1 channel-2… channel-n]子命令接受任意多个频道作为输入参数,并返回这些频道的订阅者数量。 这个子命令是通过pubsub_channels字典中找到频道对应的订阅者链表,然后返回订阅者链表的长度来实现的(订阅…

bdf文件导入事件错误情况

先打开脑电再导入事件 数据情况

500元左右的运动耳机怎么选?五大质量超群品牌分享

在运动中,一款合适的耳机不仅可以提升运动的乐趣,更能激励我们坚持锻炼,在市场上的运动耳机种类繁多,价格不一,如何选择一款既适合自己又物有所值的运动耳机呢?特别是在500元左右的预算范围内,我…

PostgreSQL入门到实战-第二十七弹

PostgreSQL入门到实战 PostgreSQL中数据分组操作(二)官网地址PostgreSQL概述PostgreSQL中HAVING命令理论PostgreSQL中HAVING命令实战更新计划 PostgreSQL中数据分组操作(二) 使用PostgreSQL HAVING子句来指定组或聚合的搜索条件 官网地址 声明: 由于操作系统, 版本更新等原因…

卷积神经网络的结构组成与解释(详细介绍)

文章目录 前言 1、卷积层 2、激活层 3、BN层 4、池化层 5、FC层(全连接层) 6、损失层 7、Dropout层 8、优化器 9、学习率 10、卷积神经网络的常见结构 前言 卷积神经网络是以卷积层为主的深层网络结构,网络结构包括有卷积层、激活层、BN层、…

Visual Studio 2019 社区版下载

一、网址 https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes#start-window 二、选择这个即可

【每日刷题】Day16

【每日刷题】Day16 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 24. 两两交换链表中的节点 - 力扣(LeetCode) 2. 160. 相交链表 - 力扣&…

【编程Tool】DevC++的安装配置及使用保姆级教程

目录 前言:软件介绍 1.软件下载及安装 1.1. 双击可执行文件进行安装 2.软件配置 2.1.选择语言 2.2 同意相关协议 2.3.组件保持默认并点击Next 2.4. 修改安装路径 2.5. 等待安装 2.6. 点击Finish,完成安装 2.7 选择语言 2.8.个性化设置 2.9. 点击OK&…

MySQL——创建和插入

一、插入数据 INSERT 使用建议; 在任何情况下建议列出列名,在 VALUES 中插入值时,注意值和列的意义对应关系 values 指定的值顺序非常重要,决定了值是否被保存到正确的列中 在指定了列名的情况下,你可以仅对需要插入的列给到…

MongoDB的go SDK使用集锦

在上一章解读MongoDB官方文档获取mongo7.0版本的安装步骤与基本使用介绍了如何使用mongo shell操作mongo数据库,接下来介绍如何使用sdk来操作数据库,这里以go语言为例,其他语言请查看源文档mongo docs Quick Start 内置数据结构 MongoDB是存…

24 静动态库

首先创建两个函数的头文件和源文件 最后的main函数 #include <stdio.h> #include "print.h" #include "sum.h"int main() {Print("时间");printf("%d\n", sum(3, 5));return 0; }将函数编译成.o文件 make生成文件 make he…

ENVI实战—一文学会使用传感器自带信息配准工具进行几何校正

实验1&#xff1a;学会使用传感器自带信息配准工具 目的&#xff1a;利用ENVI的传感器自带信息配准工具&#xff0c;掌握几何校正的一般方法。 过程&#xff1a; 1.对MODIS影像进行校正&#xff1a; ①读取影像&#xff1a;打开文件&#xff0c;点击“打开为”&#xff0c;…

windows下已经创建好了虚拟环境,但是切换不了的解决方法

用得多Ubuntu&#xff0c;今天用Windows重新更新anaconda出问题&#xff0c;重新安装之后&#xff0c;打开pycharm发现打开终端之后&#xff0c;刚开始是ps的状态&#xff0c;后面试了网上改cmd的方法&#xff0c;终端变成c盘开头了 切换到虚拟环境如下&#xff1a;目前的shell…

IDA动态调试

动态调试 这里我使用测试程序是buuctf逆向题目中的第一题easyre.exe 将其拖进IDA中打开 在调试前要选择调试器&#xff0c;在菜单栏找到调试器&#xff0c;如下选择之后点击确定。 在启动调试前下断点 下好断电到调试器里点击启动进程 会有警告信息&#xff0c;选择是即可…

ARP代理

10.1.0.1/8 和10.2.0.1/8是在同一个网段 10.1.0.2/16 和10.2.0.2/16 不在同一个网段 10.1.0.1/8 和10.1.0.2/16 是可以ping通的 包发出来了&#xff0c;报文有发出来&#xff0c;目的地址是广播包 广播请求&#xff0c;发到路由器的接口G 0/0/0 target不是本接口&#xff0…

Linux 序列化、反序列化、实现网络版计算器

目录 一、序列化与反序列化 1、序列化&#xff08;Serialization&#xff09; 2、反序列化&#xff08;Deserialization&#xff09; 3、Linux环境中的应用实例 二、实现网络版计算器 Sock.hpp TcpServer.hpp Jsoncpp库 Protocol.hpp MyDaemon.hpp CalServer.cc Ca…

3.1 iHRM人力资源 - 组织架构、树形结构、添加子部门

iHRM人力资源 - 组织架构 文章目录 iHRM人力资源 - 组织架构一、展示数据-树形组件1.1 组件说明1.2 树组件自定义结构获取作用域数据1.2.1 说明1.2.2 页面代码1.2.3 获取组织架构数据-api 1.3 效果图1.4 修改树形结构bug 二、添加子部门2.1 表单弹层2.1.1 下拉菜单点击事件2.1.…

中国科学院大学学位论文LaTeX模版

Word排版太麻烦了&#xff0c;公式也不好敲&#xff0c;推荐用LaTeX模版&#xff0c;全自动 官方模版下载位置&#xff1a;国科大sep系统 → \rightarrow → 培养指导 → \rightarrow → 论文 → \rightarrow → 论文格式检测 → \rightarrow → 撰写模板下载百度云&#…