资讯专栏INFORMATION COLUMN

维持客户端状态

red_bricks / 1919人阅读

摘要:基于的应用程序都有维护这些状态的能力,因为是无状态的。为了支持这些,应用程序需要维护状态技术提供了管理的,并且有几种实现会话的机制。这个唯一标识在客户端作为一个维护,或者组件在返回客户端的每一个响应中包含这个唯一标识。

许多应用都需要一个客户端的多个请求是相互关联。例如,一个web程序能在多个请求间保存用户的状态。基于web的应用程序都有维护这些状态的能力,因为HTTP是无状态的。为了支持这些,web应用程序需要维护状态,servlet技术提供了管理session的api,并且有几种实现会话的机制。

访问一个session

session代表一个HttpSession对象。你可以通过请求的getSession方法访问session。这个方法返回关联到当前请求的session对象,或者,如果当前请求还没有session,这个方法会生成一个。

session关联的对象

你可以通过名称关联对象-值属性到session。这些属性可以被同一个web上下文处理同一个session的请求访问。
注意,你的应用程序可以通知web上下文和servlet生命周期(Handling Servlet Lifecycle Events)中的session监听器。 您还可以通知与会话关联的某些事件的对象,例如以下内容:

当往session中添加或移除一个对象。为了接收通知,你的对象必须实现javax.servlet.http.HttpSessionBindingListener接口。

当附加对象的session被休眠或激活。在虚拟机之间移动或保存到永久存储并从中恢复时,会话将被钝化或激活。为了接收通知,你的对象必须实现javax.servlet.http.HttpSessionActivationListener 接口。

session管理

因为HTTP客户端没有方法去标记是否不再需要一个session。每一个session都关联了一个超时时间,以便于资源的回收利用。这个超时阶段可以通过session的getMaxInactiveInterval 和setMaxInactiveInterval方法访问。

为了确保活跃的session不被设置为超时, 您应该使用服务方法定期访问会话,因为这会重置会话的生存时间计数器。

当与一个特定客户端交互完成后,你可以在服务端使用invalidate方法设置一个session无效、删除任何session数据。

使用netbeans 设置超时时间

要使用NetBeans集成开发环境在部署描述符中设置超时时间,请按照下列步骤操作。

打开项目如果你还未打开

展开你的项目Projects节点

展开项目节点下的Web Pages and WEB-INF节点

双击web.xml

在编辑器顶端点击General按钮

在Session Timeout属性中,键入数字
整数值表示在会话超时之前必须经过的不活动分钟数。

session跟踪

要将session与用户关联,web容器有几种方法,它们都需要在客户端与服务器直接传一个唯一标识。这个唯一标识在客户端作为一个cookie维护,或者web组件在返回客户端的每一个响应中包含这个唯一标识。
如果你的应用使用了session对象, 您必须确保在客户端关闭cookie时让应用程序重写URL,从而启用会话跟踪。你可以通过调用所有servlet的响应的encodeURL方法来实现。只有当cookie无效时,这个方法才在url中包含唯一标识;从另一个角度讲,这个方法返回的url不会改变。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73939.html

相关文章

  • python+pytest接口自动化之session对话维持的完成

      在app测试的过程当中,经常遇到有一些插口必须在登录状态下才可以要求,文中具体阐述了python+pytest接口自动化之session对话维持的完成,有兴趣的话可以认识一下  序言  在app测试的过程当中,经常遇到有一些插口必须在登录状态下才可以要求,不然会提醒请登录,那么如何处理呢?我们通过Cookie绕开登录,其实这也是维持登录状态的方式之一。那今天小编想讲根据session开展对话维...

    89542767 评论0 收藏0
  • WebSocket系列之如何建立和维护可靠的连接

    摘要:与此同时,后端服务的中也有相关的长连接维持时长设置。如何快速的恢复连接根据上面的操作方案,我们会在网络异常时断开连接。 概述 通过前四篇博客,相信读者对于WebSocket的使用和数据(不论是ArrayBuffer还是String)传输都有了一个深刻的了解。现在我们来介绍下,我在使用WebSocket时,连接相关模块遇到的一些共性问题,以及我们如何解决这些问题。 本文作为WebSock...

    BetaRabbit 评论0 收藏0
  • 服务器TIME_WAIT和CLOSE_WAIT分析和解决办法

    摘要:服务器出现异常最长出现的状况是服务器保持了大量的状态。此时主动关闭一方必须保持一个有效的状态下维持状态信息,以便可以重发。这就意味着,一个成功建立的连接,必须使得之前网络中残余的数据报都丢失了。,维持这些状态给服务器端带来巨大的负担。 showImg(https://segmentfault.com/img/bV9DQk?w=732&h=563); showImg(https://se...

    LeanCloud 评论0 收藏0
  • 服务器TIME_WAIT和CLOSE_WAIT分析和解决办法

    摘要:服务器出现异常最长出现的状况是服务器保持了大量的状态。此时主动关闭一方必须保持一个有效的状态下维持状态信息,以便可以重发。这就意味着,一个成功建立的连接,必须使得之前网络中残余的数据报都丢失了。,维持这些状态给服务器端带来巨大的负担。 showImg(https://segmentfault.com/img/bV9DQk?w=732&h=563); showImg(https://se...

    helloworldcoding 评论0 收藏0
  • 服务器TIME_WAIT和CLOSE_WAIT分析和解决办法

    摘要:服务器出现异常最长出现的状况是服务器保持了大量的状态。此时主动关闭一方必须保持一个有效的状态下维持状态信息,以便可以重发。这就意味着,一个成功建立的连接,必须使得之前网络中残余的数据报都丢失了。,维持这些状态给服务器端带来巨大的负担。 showImg(https://segmentfault.com/img/bV9DQk?w=732&h=563); showImg(https://se...

    Faremax 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<