session与Cookie

2023-05-16

目录

session与Cookie

1.session的一些方法与概述

 2.Cookie的一些方法与概述

 Cookie保存的类容如含特殊符号 需要转16径直文件、


session与Cookie

1.session的一些方法与概述

session-》内置对象
1.概述
    服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象。jsp:session  servlet:HttpSession
    
2.快速入门
      获取一个值 根据剑
    (1)getAttribute(String name);
          设置一个值 剑与值
    (2)setAttribute(String name,Object value)
     移除一个 值
    (3)removeAattribute(String name)
       session.invalidate();//使当前session失效
     //设置网页的非有效活动时间
       session.setMaxInactiveInterval(10);
3.细节
    1.当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
        * 默认情况下,不是
        * 如果需要相同,则可以创建cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
            Cookie c = new Cookie("JSESSIONID",session.getId());
            c.setMaxAge(60*60);
            response.addCookie(c);
            
    2.客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
        * 不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作。
            ** session的钝化:
                在服务器正常关闭之前,将session对象序列化到硬盘上
            ** session的活化:
                在服务器启动后,将session文件转化为内存中的session对象即可。
            
    3.session什么时候被销毁?
        (1) 服务器关闭
        (2) session对象调用invalidate()方法
        (3)session默认失效时间 30分钟=》web.xml
        
4.session的特点
    session用于存储一次会话的多次请求的数据,存在服务器端
    session可以存储任意类型,任意大小的数据
    

session与Cookie的区别
    1.session存储数据在服务端,Cookie在客户端
    Cookie存储的数据只能是文本,Session---Object
    2.session没有数据大小限制,Cookie有
    3.session数据安全,Cookie相对于不安全
 

	 session.setAttribute("username", username); 添加一个session
   
     String username = (String)session.getAttribute("username");根据剑获取一个值
     
     session.invalidate();//使当前session失效

 2.Cookie的一些方法与概述

1.引入
    1.1 案例:张三与李四的会谈(从开始到结束)====》客户端与服务器

2.会话

    2.1 概述:一次会话中包含多次请求和响应
    一次会话:浏览器第一次给服务器资源发送请求,会话建立,知道有一方断开为止。

    2.2 功能:在一次会话的范围内的多次请求间,共享数据

    2.3 方式:
    (1)客户端会话技术:Cookie
    (2)服务端会话技术:session

3.Cookie

    3.1 概述
    客户端会话技术,将数据保存到客户端

    3.2 快速入门
    使用步骤:
        (1)创建Cookie对象,绑定数据
            new Cookie(key,value);
        (2)发送Cookie对象(从服务端---》客户端)
            request.addCookie(cookie)
        (3)获取Cookie,获取数据
            request.getCookies()

4.Cookie的细节

    4.1 一次可不可以发送多个cookie?
    ** 可以
    ** 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。

    4.2 cookie在浏览器中保存多长时间?
    (1)默认情况下,当浏览器关闭后,Cookie数据被销毁
    (2)持久化存储
        ** setMaxAge(int seconds);秒
        ** 参数:
            正数---》将Cookie数据写到硬盘的文件中。持久化存储【cookie的存活时间】
        ** 负数:
            默认值
        ** 零:
            删除cookie信息
    
    4.3 cookie能不能存储中文?
        ** 在tomcat8.0之前 cookie中不能直接存储中文数据。
            ** 需要将中文数据转码---》一般采用URL编码
        
        ** 在tomcat8.0之后 ,cookie支持中文数据,特殊字符还是不支持,建议使用URL编码存储
            使用URL解码解析
            * 编码 URLEncoder.encode("字符串","utf-8");
            * 解码 URLDecoder.decode("字符串","utf-8");
            

5.Cookie的特点和作用
    特点:
        (1)cookie存储在数据在客户端浏览器
        (2)浏览器对于单个cookie的大小有限制(4KB)以及对同一个域名下的总cookie数量也有限制(20个)
    
    作用:
        (1)cookie一般用于存储少量的不太敏感的数据
        (2)在不登录的情况下,完成服务器对客户端的身份识别
 

 //1.创建Cookie
			Cookie cookieUsersName = new Cookie("username",username);
			//如果复选框选中了  设置cookie的存活时间
			if(null!=isCheck){
				cookieUsersName.setMaxAge(1*60*60*24*7);
			}
			//2.将Cookie写回客户端
			response.addCookie(cookieUsersName);
		
 
 
2.获取Cookie对象
 
       //定义一个变量
	 	String username = "";
	 	//1.通过request请求对象获取cookie
	 	Cookie[] cookies = request.getCookies();
	 	//2.非空
	 	if(null!=cookies){
	 		//3.遍历
	 		for(Cookie cookie:cookies){
                判断是否存在存储的cookie对象username 剑属性
	 			if("username".equals(cookie.getName())){
               获取指定的值
	 				username = cookie.getValue();
	 				break;
	 			}
	 		}
	 	}
	 
	 	//如果没有登录    送回login.jsp
	 	if(""==username){//没有登录
	 		response.sendRedirect("login.jsp");
	 	} 
3.设置cookie对象失效
	//退出登录(注销)
    	 Cookie[] cookies = request.getCookies();
    	if(null!=cookies){
    		for(Cookie cookie:cookies){
    			if("username".equals(cookie.getName())){
    				cookie.setMaxAge(0);//失效
    				//注意  重新保存
    				response.addCookie(cookie);
    				break;
    			}
    		}
    	}
    	
    	response.sendRedirect("login.jsp"); 
 

 Cookie保存的类容如含特殊符号 需要转16径直文件、

	//Cookie注意事项:
		1.如果保存的时候有特殊字符:空格  &  -  需要编码和解码这个动作
		解决方法:
		URLEncoder.encode(s, "UTF-8");//编码
		%1BF%123%
		URLDecoder.decode(s, "UTF-8");//解码
	
		//1.创建Cookie保存用户名
		Cookie cookie = new Cookie("username",URLEncoder.encode("ad min管理员", "UTF-8"));
		setMaxAge() 设置cookie的存活
		cookie.setMaxAge(1*60*60*24*7);
		2.响应对象response写回浏览器客户端
		response.addCookie(cookie);
 
	//获取Cookie
URLDecoder.decode(cookie.getValue(), "utf-8")) 进行解码后
		Cookie[] cookies = request.getCookies();
		//非空
		if(null!=cookies){
			//遍历
			for(Cookie cookie : cookies){
				if("username".equals(cookie.getName())){//根据键进行判断
					out.println(cookie.getName()+"--"+cookie.getValue()+"------"+URLDecoder.decode(cookie.getValue(), "utf-8"));
				}
			}
		}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

session与Cookie 的相关文章

  • PHP 会话中的数据错误

    我对网上商店进行了以下设置 当用户登录时 通过 AJAX 调用脚本 该脚本根据 SOAP Web 服务验证用户数据 并返回用户数据 当用户登录时 用户数据保存在 PHP 会话中 用户数据 仅通过 SOAP 检索 而不由商店存储 我使用默认的
  • Codeigniter - 检查用户是否已登录并存在(它是真实用户)

    我正在尝试在用户登录我的网站时为他们设置会话数据 因此 如果用户存在于数据库中 我将设置一个会话数据 例如 this gt session gt set userdata user exists 1 现在 每次我想检查用户是否存在并已登录时
  • 会话过期后如何重定向到登录页面?

    我有三个 JSF 2 0 Web 模块 当会话过期时我需要重定向到登录页面 我已经尝试过使用HttpSessionListener 它正在调用sessionDestroyed 事件方法 但我无法在那里转发 重定向请求 我认为这是因为没有Ht
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • .NET 中的 Cookie 和会话过期

    我有一个 MVC4 单一应用程序页面 登录页面有 3 个字段 用户 密码和 记住我 复选框 C 登录代码是这样的 if WebSecurity Login model UserName model Password persistCooki
  • 浏览器关闭时 Omniauth 会话过期

    在我的 Rails 3 应用程序中 我使用 Omniauth 进行用户身份验证部分 fb twitter 实际上我遵循这个 https github com RailsApps rails3 mongoid omniauth https g
  • 在会话 cookie 中存储大量数据会产生什么影响?

    谁能解释一下在会话中存储大量数据的缺点或给我指出一些阅读材料 我也很感兴趣在会话中存储数据和从数据文件读取数据之间是否有任何区别 如果您在会话中存储大量数据 则输入 输出性能会下降 因为会有大量读取 写入 默认情况下 PHP 中的会话存储在
  • 休眠会话已关闭

    当我调用方法 session begin 事务时 如下所示 session factory is instantiated via a bean Session session this getSessionFactory getCurre
  • ASP.NET:如何删除所有用户的所有会话变量?

    我们有 ASP NET 应用程序 想要删除所有用户的所有会话中的所有会话变量 我的意思是不要仅使用以下命令从当前会话中删除会话变量 Session Clear or Session Abandon 我们还需要清除其他用户会话中的会话变量吗
  • 检测 ASP.NET MVC 上的会话过期

    我构建了一个购物车 它使用会话状态在用户浏览商店时保留购物车数据 我遇到一个问题 如果我在购物车的第 1 步上长时间打开浏览器窗口 然后按 转到第 2 步 我的操作会引发错误 因为第 2 步操作假定会话尚未过期并且ShopCart 对象处于
  • 如何在 Laravel 5 中的视图模板上显示会话数据

    我正在尝试在 Laravel 5 中的视图模板上显示会话数据 但是它似乎没有显示任何内容 这是我用来设置会话的代码 Session set bookingConfirmed BookingDates where id Session get
  • PHP中如何有效防止跨站请求伪造(CSRF)

    我正在努力阻止CSRF https www owasp org index php Cross Site Request Forgery CSRF in php questions tagged php通过以下方式 A SESSION to
  • 使用 python3 和请求登录 Twitter

    我正在开发一个项目 要求使用用户名和密码登录网站 我必须在 python 中执行此操作 然后才能访问只有登录人员才能访问的网站部分 我尝试了几种编码变体来执行此操作 但无法成功登录然而 这是我的编码 登录它的功能 def 会话2 url r
  • Php 会话标头已经发送错误[重复]

    这个问题在这里已经有答案了 可能的重复 php 标头已发送错误 https stackoverflow com questions 3319207 php headers already sent error 我已附上我的代码 该代码用于
  • PHP7.1上读取会话数据失败

    分享一个我遇到的问题 现已解决 在我的开发机器上 我使用 PHP 运行 IIS 我升级到 PHP7 突然我的代码不再工作 返回此错误 session start 读取会话数据失败 用户 路径 C WINDOWS temp 看起来像是权限问题
  • Firebase 3.0 会话持久性

    在 firebase 3 0 中使用会话持久性似乎是不可能的 这在以前的版本中是可能的 https www firebase com docs web guide login password html https www firebase
  • 如何使用python登录页面,该页面需要服务器在第一次请求时响应会话ID?

    我正在编写一个脚本来登录某个网页 我使用 request 和 request session 模块来实现此目的 在使用登录参数的第一个请求时 服务器响应一个会话 ID 如何设置该会话 ID 以进一步登录到同一页面 url some url
  • 没有适用于机器人的 Laravel 会话

    我在大型 Laravel 项目和 Redis 存储方面遇到问题 我们将会话存储在 Redis 中 我们已经有 28GB 的 RAM 然而 它的运行速度仍然相对较快 达到了极限 因为我们有来自搜索引擎机器人的大量点击 每天超过 250 000
  • 适用于移动应用程序的 Rails REST API。会议

    我正在创建一个移动应用程序 该应用程序拥有用户并与后端的自定义 Rails REST API 进行通信 我应该在登录时创建会话吗 或者我应该在每个请求中发送用户名和密码 如果会议是可行的方法 那么通常是如何实施的 只需生成令牌 并使用它们来
  • Zend 框架会话丢失

    我有一个注册表单 当用户注册时 它会将他重定向到他的页面 在 Firefox 和 Chrome 中一切正常 但在 Internet Explorer 中则正常 看起来保存用户信息后 会话就关闭了 并且不会将用户重定向到他的页面 我该如何解决

随机推荐

  • ubuntu 18.04 安装pycharm社区版以及创建桌面快捷方式

    1 下载 Download PyCharm Python IDE for Professional Developers by JetBrains 2 解压提取到此处 3 安装 xff08 1 xff09 打开终端 xff0c 进入pych
  • docker各种报错解决

    目录 问题1 Get https registry 1 docker io v2 context deadline exceeded 解决方法 问题反思 问题2 Error response from daemon Get 34 https
  • org.slf4j.Logger无法输出日志的BUG

    场景 依赖 lt dependency gt lt groupId gt org apache zookeeper lt groupId gt lt artifactId gt zookeeper lt artifactId gt lt v
  • 【安全知识】——SSH的两种远程登录方法详解

    作者名 xff1a Demo不是emo 主页面链接 xff1a 主页传送门 博主简介 xff1a 一 个普通的大二学生 xff0c 在CSDN写博客主要是为了分享自己的学习历程 xff0c 学习方法 xff0c 总结的经验等等 xff0c
  • scanf()函数错误C4996解决办法(严重性 代码 说明 项目 文件 行 禁止显示状态)

    问题如下 xff1a 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C4996 scanf This function or variable may be unsafe Consider using scanf s instea
  • Uubuntu 更新内核出现的问题_libssl3

    电脑系统 xff1a ubuntu系统 ubuntu版本 xff1a 1804 内核版本 xff1a 5 17 15 内核从5 15 升级到5 17后 xff0c 1 xff0c 在安装N卡驱动的时候 xff0c error xff1a l
  • 总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程

    总结Vue中index html main js App vue index js之间关系以及Vue项目加载流程 文章目录 总结Vue中index html main js App vue index js之间关系以及Vue项目加载流程1
  • 安装Hisat2

    一 xff08 MobaXterm Personal xff09 安装aspera 首先进行预编译解压安装 xff1a mkdir Biosofts unzip hisat2 2 2 1 Linux x86 64 zip d Biosoft
  • 【linux】基于阻塞队列的生产者消费者模型(条件变量)

    文章目录 一 引入二 生产者消费者模型2 1 三者关系2 2 生产者消费者模型基本原则2 3 生产者消费者模型的好处 三 基于阻塞队列的生产者消费者模型3 1 原理3 2 代码实现3 3 pthread cond wait的第二个参数3 4
  • 重建linux系统的grub启动项

    鉴于没钱买新电脑 xff0c 所以在一个电脑上装了3个系统 xff0c Ubuntu xff0c ArchLinux和Windows 然而Windows系统重启经常会导致找不到Arch的启动项 xff0c 即在UEFI里找不到Arch的gr
  • python程序开机自启(打包成exe文件开机自启)

    import shutil import sys import os import getpass a 61 os path basename sys argv 0 获取自身文件名 d 61 getpass getuser 获取用户名 b
  • 【Linux】题解:生产者与消费者模型(附源代码)

    Linux 题解 xff1a 生产者与消费者模型 xff08 附源代码 xff09 摘要 xff1a 本文主要介绍生产者与消费者模型 xff0c 其中主要内容分为对该模型的介绍及分析 xff0c 阻塞队列实现该模型 xff0c 并对其升级实
  • Spring之bean对象

    目录 一 了解Bean 二 Bean的生命周期 三 Bean的应用 单例模式 多例模式 单例模式与多例模式优劣势 xff1a 一 了解javaBean 什么是javaBean对象 span style background color fb
  • SpringMVC入门

    目录 一 Springmvc简介及配置 导入pom依赖 二 Springmvc之helloworld实现 配置tomcat服务器 根据图片进行操作 三 Springmvc常用注解及返回处理 四 增删改查 一 Springmvc简介及配置 1
  • Spring Boot 之主启动类

    主启动类 文章目录 主启动类 64 SpringBootApplication作用 64 SpringBootConfiguration 64 EnableAutoConfiguration 64 AutoConfigurationPack
  • 计算机组成原理期末考试试题及答案

    计算机组成原理期末考试试题及答案 一 选择题 1 完整的计算机系统应包括 D A 运算器 存储器和控制器 B 外部设备和主机 C 主机和实用程序 D 配套的硬件设备和软件系统 2 计算机系统中的存储器系统是指 D A RAM存储器 B RO
  • python DBSCAN聚类算法

    文章目录 DBSCAN聚类算法基本思想基本概念工作流程参数选择DBSCAN的优劣势 代码分析 61 61 Matplotlib Pyplot 61 61 61 61 make blobs 61 61 61 61 StandardScaler
  • 1 操作系统第一章 操作系统概念、功能、四大特征、操作系统发展与分类

    文章目录 1 1 操作系统概念1 2 操作系统功能1 3 操作系统四大特征1 3 1 并发1 3 2 共享1 3 3 并发性和共享区别及对应关系 xff1a 1 3 4 虚拟1 3 5 异步 1 4 操作系统的发展与分类1 4 1 手工操作
  • 删除数组中指定的数字

    删除数组中指定的数字 题目 xff1a 有一个整数序列 xff08 可能有重复的整数 xff09 xff0c 现删除指定的某一个整数 xff0c 输出删除指定数字之后的序列 xff0c 序列中未被删除数字的前后位置没有发生改变 代码实现如下
  • session与Cookie

    目录 session与Cookie 1 session的一些方法与概述 2 Cookie的一些方法与概述 Cookie保存的类容如含特殊符号 需要转16径直文件 session与Cookie 1 session的一些方法与概述 sessio