热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Oracle知识—HTTPServlet中持久化状态

HTTP协议的无状态1.在HTTP协议中无状态的优缺点a)HTTP交互是无状态的无状态是指,当浏览器发送请求给服务器的时候,服务器响应,但是同一个浏览器再发送请求给服务器的时候,他会响应,但是他不知道你就是刚才那个浏览器。b)优点i.客户浏览器不会注

HTTP协议的无状态 1. 在HTTP协议中无状态的优缺点 a) HTTP交互是无状态的 无状态是指,当浏览器发送请求给服务器的时候,服务器响应,但是同一个浏览器再发送请求给服务器的时候,他会响应,但是他不知道你就是刚才那个浏览器。 b) 优点 i. 客户浏览器不会注

  HTTP协议的无状态

  1. 在HTTP协议中无状态的优缺点

  a) HTTP交互是无状态的

  无状态是指,当浏览器发送请求给服务器的时候,服务器响应,但是同一个浏览器再发送请求给服务器的时候,他会响应,但是他不知道你就是刚才那个浏览器。

  b) 优点

  i. 客户浏览器不会注意到服务器出现故障并重启.

  ii. 在服务器不需要先前信息时它的应答就较快

  c) 缺点

  i. 对于事务处理没有记忆能力,可能导致每次连接传送的数据量增大

  ii. 很难产生收集信息去产生良好用户体验的一组页面.

  2. HTTP如果有状态的好处

  a) 减少数据的传送量

  b) 认证网页可以收集用户的认证信息

  c) 可以定义用户的对网页的访问权限

  COOKIE的原理和应用

  1. COOKIE

  a) 定义:

  是一种由服务器发送给客户的片段信息,存储在客户端浏览器的内在中或硬盘上,在客户随后对该服务器的请求中发回它。

  b) COOKIE规范:

  i. Netscape规范(版本0):

  ii. RFC2109(HTTP状态管理机制,,版本1):

  c) 响应报头:

  Set-COOKIE: NAME=VALUE; Comment=value; Domain=value; Max-Age=value; Path=value; Secure; Version=1*DIGIT

  d) 其他

  COOKIE中文译为小甜饼,是由Netscape公司发明的。Netscape公司也是最早开发浏览器的公司,在互联网刚刚发展的前期,它凭借着先入为主的优势Netscape也曾经成为最流行的浏览器。但由于windows95的普及,微软公司将IE浏览器与windows进行绑定销售,Netscape逐渐销声匿迹,不为人知了。但现在大多数的互联网协议与规范都源于Netscape公司的产品。COOKIE就是其中之后。它是一种由服务器发送给客户的片段信息,它可以存储在客户端浏览器的内在中或硬盘上,然后在客户随后对该服务器的请求中发回它。COOKIE目前遵循的规范主要是两种,一个就是Netscape规范,它的规范文件可以在找到。另一个是RFC2109,它的规范文件可以在上找到。这两个规范,规定了在HTTP协议中,关于COOKIE的报头的形式。比如,在RFC2109规范中,规定了响应报头的形式是这样子的。Name是COOKIE的名字,vlue是它的值。Name=value属性-值对必须首先出现,在此之后的属性值对可以以任何顺序出现。Comment属性是可选的,因为COOKIEs可能包含关于用户私有的信息,这个属性允许服务器说明这个COOKIE的使用,用户可以检查这个信息,然后决定是否加入或继续会话。 Domain属性是可选的,用于指定COOKIE在哪一个域有效,所指定的域必须以点号开始。Max-age属性是可选可的,用于定义COOKIE的生存时间,以秒为单位,如果超过了这个时间,客户端应该丢弃这个COOKIE,如果指定的秒数为0,表示这个COOKIE应该立即被丢弃。Path属性是可选的,用于指定这个COOKIE在哪一个URL子集下有效。Secure属性是可选的,它没有值,用于指示浏览器使用安全的方式与服务器交互。Version属性是必需的,它的值是一个十进制的整数,标识COOKIE依照的状态管理规范的版本,对于RFC2109 Version应该设为1.

  2. 使用COOKIE编程

  a) 特点

  i. 以键-值对的方式记录会话跟踪的内容

  ii. COOKIE的持久性较高

  iii. 用户可以手动限制COOKIE的使用

  iv. Session可以用来替代COOKIE

  3. 设置一个COOKIE

  a) 创建COOKIE:

  COOKIE c = new COOKIE("MyName", "MyValue");

  b) COOKIE的方法:

  i. getConnment()、setComment(String purpose)

  ii. getDomain()、setDomain(String pattern)

  iii. getMaxAge()、setMaxAge(int expiry)

  iv. getName()、getValue()

  v. setValue(String newValue)

  vi. getPath()、setpath(String uri)

  c) 使用COOKIE

  i. Response.addCOOKIE()

  ii. Request.getCoonkie()

  4. 实例—登录程序

  a) 功能:

  i. 使用COOKIE来保存用户登录信息

  ii. 初次登录,将信息保存到客户端的硬盘上

  iii. 再次访问,先验证用户登录信息,通过后显示欢迎信息

  b) 步骤:

  i. 第一步:编写LoginServlet.java和GreetServlet.java

  ii. 第二步:编译JAVA源文件

  iii. 第三步:部署servlet

  5. 实例—LoginSerlvet

  6. 实例—GreetServlet

  7. 向浏览器输出会话

  a) COOKIE

  i. 跟踪跟浏览器有关的会话

  ii. 有些浏览器不支持

  iii. 有些用户由于安全原因不使用

  b) 重写URL

  i. 通过一个请求URL的会话ID把一个会话绑定到一个浏览器上

  ii. 耗费时间去扫描页面和URL重定向

  iii. 使用encodeURL()和encodeRedirectURL()

  Session的原理和应用

  1. Session

  a) 定义:

  i. 一个浏览器到一个服务器相关的HTTP交互的集合.

  ii. 是被浏览器访问的Servlet获取的与那些交互相关的数据集合.

  b) javax.servlet.http.HttpSession支持的接口.

  2. HttpSession接口

  a) HttpSession接口中的方法

  i. public Object getAttribute(String name)

  ii. public void setAttribute(String name,Object value)

  iii. public void removeAttribute(String name)

  iv. public int setMaxInactiveInterval()

  v. public void invalidate()

  3. 补充说明

  a) Servlet运行就会创建会话.

  b) Servlet可以通过下面的方法来获得session对象:

  getSession()

  c) 任何servlet可以请求创建会话.

  d) 对处理目标浏览器中请求的所有Servlet都可以访问会话中的信息.

  e) 会话会由于浏览器的不活跃而超时而失效。

  4. COOKIE和Session比较

  a) session

  i. 由服务器端创建

  ii. 由服务端保存信息

  iii. 打开新的浏览器,就会开始一次新的会话

  b) COOKIE

  i. 由服务器发送给客户端的片段信息,存储在客户端浏览器的内存中或硬盘上。

  ii. 由客户端保存信息

  iii. 在COOKIE有效期间内,多个浏览器可访问同一个COOKIE对象

  回顾COOKIE和Session

  COOKIE在一个浏览器中存储一个变量和对应的值.

  COOKIE可以由浏览器用户配置.

  不是所有的浏览器都支持COOKIE.

  可以使用addCOOKIE()和getCOOKIE ()方法获取COOKIE.

  session是由浏览器和网络服务器之间的交互所关联的数据集合.

  每打开一个浏览器,就会创建一个新的session对象

  会话开发时存在下列方法:

  getSession()

  setAttribute(key, value)

  getAttribute(key)

推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 在Windows Server 2008 R2上配置IIS FTP服务
    本文详细介绍了如何在Windows Server 2008 R2操作系统上通过IIS配置FTP服务的过程,包括服务器角色的选择与安装、FTP站点的创建以及必要的服务和防火墙设置检查。 ... [详细]
  • 为何我选择了华为云GaussDB数据库
    本文分享了作者选择华为云GaussDB数据库的理由,详细介绍了GaussDB(for MySQL)的技术特性和优势,以及它在金融和互联网行业的应用场景。 ... [详细]
  • Win10 UWP 开发技巧:利用 XamlTreeDump 获取 XAML 元素树
    本文介绍如何在 Win10 UWP 开发中使用 XamlTreeDump 库来获取和转换 XAML 元素树为 JSON 字符串,这对于 UI 单元测试非常有用。 ... [详细]
  • HTTPS与TLS/SSL协议详解:握手及记录协议
    HTTPS,即HTTP over TLS/SSL,通过在HTTP通信层引入安全协议,确保数据传输的安全性。本文将深入探讨TLS/SSL协议的基本概念、HTTPS的必要性,以及TLS握手和记录协议的工作原理。 ... [详细]
  • Barbican 是 OpenStack 社区的核心项目之一,旨在为各种环境下的云服务提供全面的密钥管理解决方案。 ... [详细]
  • 应对.avast后缀勒索病毒:全面指南
    本文详细介绍了.avast后缀勒索病毒的特性、感染途径、恢复方法及预防措施,旨在帮助用户有效应对这一威胁。 ... [详细]
  • 推荐两款实用的网络诊断工具
    大家好,因为一些私事很久没有更新博客了。今天向大家介绍两款非常有用的网络诊断工具——Tracert和Telnet,帮助你更好地理解和解决网络问题。 ... [详细]
  • OBS (Open Broadcaster Software) 架构解析
    本文介绍 OBS(Open Broadcaster Software),一款专为直播设计的开源软件。文章将详细探讨其技术架构、核心组件及其开发环境要求。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
  • 利用YAML配置Resilience4J的Circuit Breaker
    本文探讨了Resilience4j作为现代Java应用程序中不可或缺的容错工具,特别介绍了如何通过YAML文件配置Circuit Breaker以提高服务的弹性和稳定性。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 深入解析SSL Strip攻击机制
    本文详细介绍了SSL Strip(一种网络攻击形式)的工作原理及其对网络安全的影响。通过分析SSL与HTTPS的基本概念,探讨了SSL Strip如何利用某些网站的安全配置不足,实现中间人攻击,以及如何防范此类攻击。 ... [详细]
author-avatar
LMS柳树_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有