返回顶部
首页 > 资讯 > 精选 >如何使用HTTP会话
  • 373
分享到

如何使用HTTP会话

2023-06-03 08:06:49 373人浏览 八月长安
摘要

这篇文章主要介绍如何使用Http会话,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最佳实践: 请浏览有关实现 HTTP 会话的建议。为保护 HTTP 会话启用安全性集成HTTP 会话由会话标识来识别。会话标识是在运行

这篇文章主要介绍如何使用Http会话,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

最佳实践: 请浏览有关实现 HTTP 会话的建议。

  • 为保护 HTTP 会话启用安全性集成

    HTTP 会话由会话标识来识别。会话标识是在运行时生成的一个伪随机数。会话 hijacking 是一个已知攻击 HTTP 会话,当通过网络的所有请求被强制通过安全连接(意味着 https)时它可被阻止。但并不是每个客户环境中的配置都强制此约束,这是因为 SSL 连接的性能影响。由于这个缓和方式,HTTP 会话易受 hijacking 的攻击,并且因为这个弱点 WEBSphere Application Server 有一个选项以紧密结合 HTTP 会话和 WebSphere Application Server 安全性。在 WebSphere Application Server 中启用安全性,以使会话以仅允许创建这些会话的用户访问它们的方式来进行保护。

  • 完成后使用 javax.servlet.http.HttpSession.invalidate() 释放 HttpSession 对象。

    HttpSession 对象在 Web 容器中存活到:


    1. 应用程序使用 javax.servlet.http.HttpSession.invalidate 方法明确地、程序化地释放它;频繁、程序化的无效是应用程序注销功能的一部分。

    2. HttpSession 到期时(缺省 = 1800 秒或 30 分钟),WebSphere Application Server 销毁已分配的 HttpSession。基于会话管理设置,WebSphere Application Server 在内存中仅可以维持一定数量的 HTTP 会话。在分布式会话的情况下,当内存中达到最大高速缓存限制时,会话管理工具把最近最少使用(LRU)的一个会话从高速缓存中除去,为会话腾出空间。

  • 避免尝试保存和重新使用每个 servlet 或 jsP 文件外的 HttpSession 对象。

    HttpSession 对象是 HttpRequest(您可以仅通过 req.getSession 方法获取它)的功能,其副本仅在 servlet 或 JSP 文件的 service 方法的生存期有效。您无法高速缓存 HttpSession 对象和在 servlet 或 JSP 文件的范围外引用它。

  • 开发要在 HTTP 会话中存储的新对象时,实现 java.io.Serializable 接口。
    类的可串行性由实现 java.io.Serializable 接口的类启用。实现 ava.io.Serializable 接口允许在使用分布式会话时正确序列化对象。未实现此接口的类不会将它们的状态序列化或取消序列化。因此,如果类未实现 Serializable 接口,则 JVM 无法将该类的状态保持到数据库或另一个 JVM 中。可序列化类的所有子类型都是可序列化的。示例如下:

    [object Object][object Object]



    确保未标记为瞬态的所有实例变量对象是可序列化的。不能高速缓存不可序列化的对象。

    为了符合 Java Servlet 规范,当分布式 servlet 容器无法支持迁移存储对象的会话所需要的机制时,该容器必须为这些对象创建 IllegalArgumentException。仅当选择了 distributable 时才会创建异常。

  • HTTPSession api 不发布会话的事务行为。

    分布式 HTTPSession 支持不保证在故障转移方案中或会话亲缘关系中断时属性的事务完整性。使用事务感知的资源(象 Enterprise Java Beans)来保证应用程序所要求的事务完整性。

  • 确保您添加到会话的 Java 对象在正确的类路径中。
    如果您把 Java 对象添加到会话,则把那些对象的类文件放入正确的类路径中(如果在企业应用程序中利用跨 Web 模块的共享,则使用应用程序类路径,或者如果使用 Servlet 2.2 兼容的会话共享,则使用 Web 模块类路径)或者放入包括在 WebSphere Application Server 中使用的其他 servlet 的目录下。在会话集群的情况下,此操作应用到此集群中的每个节点。

    由于 HttpSession 对象在用户可能访问的 servlet 之间是共享的,所以考虑采用站点范围的命名约定,以避免冲突。

  • 避免在 HttpSession 对象中存储大对象图。

    在大多数应用程序中,每个 servlet 只需要全部会话数据的一小部分。然而,通过将数据作为一个大对象存储在 HttpSession 对象中,应用程序迫使 WebSphere Application Server 每次都处理所有数据。

  • 利用会话亲缘关系帮助您获取在 WebSphere Application Server 中的较高的高速缓存命中率。

    WebSphere Application Server 具有帮助会话亲缘关系的 HTTP Server 插件中的功能性。插件会从浏览器中读取 cookie 数据(或已编码的 URL),并且帮助把请求导向到适当的应用程序或克隆(基于已指定的会话密钥)。此功能增加了内存中的高速缓存的使用,并且减少对数据库或另一个 WebSphere Application Server 实例的命中。

  • 会话亲缘关系的最大化使用和避免中断亲缘关系。

    正确使用会话亲缘关系可以增强 WebSphere Application Server 的性能。WebSphere Application Server 环境中的会话亲缘关系是一种最大化地使用会话对象的内存中高速缓存,并减少读数据库或另一个 WebSphere Application Server 实例数的方法。会话亲缘关系通过高速缓存应用程序(用户正在与其进行交互)的服务器实例中的会话对象进行工作。如果应用程序部署在服务器组的多台服务器中,则应用程序可以把用户导向到其中任何一台服务器。如果用户在 server1 开始, 然后过一会进入到 server2,则服务器必须把所有会话信息写到外部位置,以便服务器实例(server2 正在其中运行)可以读取该数据库。可以使用会话亲缘关系避免数据库读。使用会话亲缘关系,用户将为第一个请求在 server1 上启动;然后,对于每个后续的请求,用户将被导向回 server1。Server1 必须仅查看高速缓存以获取会话信息;server1 从不需要调用会话数据库以获取该信息。

    您可以通过不中断会话亲缘关系改进性能。帮助您避免中断会话亲缘关系的一些建议是:


    1. 如果可能,把所有 Web 应用程序组合到单应用程序服务器实例,并使用模型或克隆来提供故障转移支持。

    2. 使用多框架 JSP 文件时,为框架页面创建会话,但是不为框架中的页面创建会话。(请参阅此主题中的后续讨论。)

  • 使用多框架页面时,遵循以下准则:


    1. 仅在一个框架中或访问任何框架集之前创建会话。例如,假设不存在已与浏览器相关联的会话,并且用户访问多框架 JSP 文件,浏览器发出 JSP 文件的并发请求。因为请求不是任何会话的部分,因此 JSP 文件结束创建多个会话,并且所有 cookie 都发回到该浏览器。该浏览器仅执行到达的最后 cookie。因此,仅客户机可以检索与最后一个 cookie 相关联的会话。建议您在访问利用 JSP 文件的多框架页面前创建会话。

    2. 缺省情况下,JSP 文件使用 request.getSession(true) 方法获取 HTTPSession。因此缺省情况下,如果不存在用于客户机的会话,则 JSP 文件会创建新会话。浏览器中的每个 JSP 页面正在请求一个新会话,但是,只有一个会话用于每个浏览器实例。开发者可以使用

      <% page="" session="false"> 关闭不访问此会话的 JSP 文件中的自动会话创建。接着,如果页面需要访问该会话信息,开发者可以使用 <%httpsession session="javax.servlet.http.HttpServletRequest.getSession(false);"> 以获取由原始会话创建 JSP 文件所创建的已存在的会话。此操作帮助您防止中断框架页面的初始装入上的会话亲缘关系。

    3. 仅使用一个框架更新会话数据。使用框架集时,请求并发地进入 HTTP 服务器。仅在一个框架中修改会话数据,以便会话更改不被所建议的并发框架集中的会话更改覆盖。

    4. 避免使用多框架 JSP 文件,其中框架指向不同的 Web 应用程序。此操作导致丢失另一个 Web 应用程序创建的会话,因为来自第一个 Web 应用程序的 JSESSIONID cookie 是由第二个 Web 应用程序创建的 JSESSIONID 所覆盖。

  • 当把安全性应用到 servlet 或 JSP 文件(使用带有启用的安全性集成的会话)时,保护所有页面(不只是某些页面)。

    当它应用到安全性和会话时,它保护所有页面或什么也不保护。因此,对于部分时间要保护会话状态的访问来说它是没有意义的。当在会话管理工具中启用安全性集成时,创建或访问会话的所有资源必须是受保护的或未受保护的。您不能混合受保护的和未受保护的资源。

    仅保护几个页面的问题是,在受保护的页面中创建的会话是用已认证用户的标识创建的。仅同一用户能够访问其他受保护的页面中的会话。要保护这些会话不被未授权的用户使用,不能从未受保护的页面访问它们。当发生来自未受保护的页面的请求时,拒绝访问并且创建 UnauthorizedSessionRequestException 错误。(UnauthorizedSessionRequestException 是运行时异常;它是为您记录的。)

  • 使用手工更新和 sync() 方法或基于时间的写应用程序(读取会话数据),但更新很少。

    写频率时使用 END_OF_SERVICE,当应用程序使用会话并且任何时候数据从该会话读出或写入时,LastAccess 时间字段会更新。如果使用数据库会话,则产生对数据库的新的写。此活动是性能命中,仅当数据值更新时(不是每个记录的读或写),您可以避免使用“手工更新”选项并且使记录写回数据库。

    要使用手工更新,请在会话管理服务中打开它。另外,应用程序代码必须使用 com.ibm.websphere.servlet.session.IBMSession 类来代替一般的 HttpSession。在 IBMSession 对象中,存在 sync 方法。此方法告诉 WebSphere Application Server 把会话对象中的数据写到数据库。此活动帮助开发者通过仅在必要时存留会话信息来提高整个性能。


    注: 使用手工更新的替代方法是利用时间更新以在不同的时间间隔中保持数据。此操作提供类似手工更新方案的结果。

  • 实现以下各建议以达到高性能:


    1. 如果应用程序不频繁更改会话数据,则使用手工更新和 sync 函数(或定时更新)有效地存留会话信息。

    2. 尽可能小地保持会话中存储的数据量。简单地使用会话来保持数据,因为有时在会话对象中会存储太多的数据。确定数据存储和性能之间的正确平衡以有效地使用会话。

    3. 如果使用数据库会话,则为会话数据库使用专用数据库。避免使用应用程序数据库。这能够帮助您避免争用 JDBC 连接并允许使用更好的数据库性能。

    4. 如果使用内存到内存会话,则将分区(组或单个副本)作为您的集群使用会增加大小并缩小减少。

    5. 验证您是否具有 WebSphere Application Server 的最新修订包。

  • 利用以下各工具帮助监视会话性能。


    1. 运行 com.ibm.servlet.personalization.sessiontracking.IBMTrackerDebug servlet。- 要运行此 servlet,必须运行要在 Web 应用程序中运行的 servlet 调用程序。或者,您可以明确地在要运行的应用程序中配置此 servlet。

    2. 使用与 WebSphere Application Server 一起提供的 WebSphere Application Server 资源分析器,监视 WebSphere Application Server 环境的活动会话和统计信息。

    3. 使用数据库跟踪工具,如 DB2 中的“Monitoring”。

以上是“如何使用HTTP会话”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何使用HTTP会话

本文链接: https://lsjlt.com/news/233611.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用HTTP会话
    这篇文章主要介绍如何使用HTTP会话,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最佳实践: 请浏览有关实现 HTTP 会话的建议。为保护 HTTP 会话启用安全性集成HTTP 会话由会话标识来识别。会话标识是在运行...
    99+
    2023-06-03
  • 如何在 Go 中创建 HTTP 会话
    在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天编程网就整理分享《如何在 Go 中创建 HTTP 会话》,聊...
    99+
    2024-04-05
  • 如何使用 PHP 创建和使用会话
    php 中使用会话来存储和检索跨请求的用户数据。创建会话后,可以使用 $_session 数组存储和检索数据。它适用于购物车管理、用户体验定制和登录状态维护。创建会话代码:session...
    99+
    2024-04-30
    php 会话
  • 如何使用Redis保存用户会话Session
    今天就跟大家聊聊有关如何使用Redis保存用户会话Session,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言PHP内置的绘画存储机制是把全部的...
    99+
    2024-04-02
  • Ubuntu 12.10中如何使用新的会话菜单
    这篇文章给大家介绍Ubuntu 12.10中如何使用新的会话菜单,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Ubuntu 12.10 改进的、紧凑的会话指示器。在 Ubuntu 12.10 中合并了之前分开的用户和系...
    99+
    2023-06-16
  • xshell如何导出会话
    这篇文章主要介绍了xshell如何导出会话的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇xshell如何导出会话文章都会有所收获,下面我们一起来看看吧。xshell导出会话的方...
    99+
    2022-12-01
    xshell
  • 使用dbms_monitor.session_trace_enable跟踪一个会话
    一 . 10046事件的 4个级别 10046 事件按照收集信息内容,可以分成4个级别: Level 1: 等同于SQL_TRACE 的功能 Leve...
    99+
    2024-04-02
  • 如何使用Redis和PHP开发用户会话管理功能
    如何使用Redis和PHP开发用户会话管理功能导语:用户会话管理是Web应用开发中一个重要的功能,它可以帮助我们追踪和管理用户登录状态,同时提供安全的身份验证和授权功能。在本文中,我们将介绍如何使用Redis和PHP来实现用户会话管理功能,...
    99+
    2023-10-22
    PHP redis 会话管理
  • 如何使用Redis和C#开发用户会话管理功能
    如何使用Redis和C#开发用户会话管理功能引言:在现代Web应用程序中,用户会话管理是一个非常重要的功能。它可以帮助我们追踪和管理用户的登录状态,确保用户的身份信息得到保护。而 Redis 是一个流行的高性能键值数据库,它提供了各种功能来...
    99+
    2023-10-22
    C# (编程语言) Redis (数据存储) 用户会话管理 (功能需求)
  • 如何使用会话Cookie和Java实现JWT身份验证
    目录1、基于会话的身份验证那么什么是会话Cookie? 2、基于令牌的身份验证哪个更好用?3、jwt实现登录HTTP是无状态协议,用于传输数据。它启用了客户端和服务器端>...
    99+
    2024-04-02
  • 如何使用 PHP 内置函数创建和管理会话?
    在 php 中管理会话的步骤如下:创建会话:使用 session_start() 函数。设置会话变量:使用 $_session 数组存储数据。访问会话变量:使用 $_session 数组...
    99+
    2024-04-22
    php 会话
  • linux中如何使用BPF增强SSH会话的安全审计
    这篇文章将为大家详细讲解有关linux中如何使用BPF增强SSH会话的安全审计,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Teleport是一款Golang语言开发的用来替代sshd的ssh服务器,支持...
    99+
    2023-06-16
  • 如何让使用SQL Server In-Memory存储ASP.NET的会话状态
    如何让使用SQL Server In-Memory存储ASP.NET的会话状态,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。从以前的 “classic” ASP 到目前的 ...
    99+
    2023-06-17
  • PHP中如何处理会话错误?
    PHP中如何处理会话错误?会话错误在Web开发中是一个常见的问题,特别是在处理用户会话时。会话错误可能是由于服务器问题、网络连接问题、不正确的会话配置等引起的。为了提供更好的用户体验,我们需要能够有效地处理会话错误,并给用户一个合适的反馈。...
    99+
    2023-12-09
    会话错误处理 PHP会话异常 错误处理会话问题
  • linux中怎么使用byobu复用SSH会话
    这篇文章主要介绍linux中怎么使用byobu复用SSH会话,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Byobu 能让你在保持会话活跃的情况下维护多个终端窗口,通过 SSH 连接、断开、重连以及共享访问。Byob...
    99+
    2023-06-16
  • PHP中使用Redis实现会话共享
    随着Web应用程序的迅速发展,越来越多的Web应用程序与用户产生了交互,因此需要一个会话管理的系统来管理用户状态。为了解决这个问题,Web应用程序使用会话(Session)技术来跟踪用户。会话管理是Web应用程序中非常基本的功能之一,它能保...
    99+
    2023-05-15
    PHP redis 会话共享
  • Vue.js中的会话数据怎么使用
    这篇文章主要介绍了Vue.js中的会话数据怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue.js中的会话数据怎么使用文章都会有所收获,下面我们一起来看看吧。Vue.js中的会话概述会话是Web应用程...
    99+
    2023-07-06
  • 数据库中如何使用dbms_monitor跟踪多个会话,service_name,sid等
    这篇文章主要为大家展示了“数据库中如何使用dbms_monitor跟踪多个会话,service_name,sid等”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“...
    99+
    2024-04-02
  • android对话框如何使用
    Android对话框可以通过AlertDialog类来使用,以下是一个简单的示例:1. 创建AlertDialog.Builder对...
    99+
    2023-08-23
    android
  • php如何设置会话超时时间
    这篇文章主要介绍“php如何设置会话超时时间”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何设置会话超时时间”文章能帮助大家解决问题。什么是PHP会话PHP会话是一个用于在服务端存储数据的机...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作