当前位置: 首页 > 面试题库 >

Java中的会话是什么?

郝昊天
2023-03-14
问题内容

到目前为止,我了解Java中的Httpsession概念。

 HttpSession ses = req.getSession(true);

将根据请求创建一个会话对象。

setAttribute("String", object);

将“字符串”和值与Session对象绑定。

getAttribute("String");

返回与指定字符串相关联的对象。

我无法理解的是:我正在创建一个会话对象 HttpSession ses = req.getSession(true);
,并通过调用为其设置名称setAttribute("String", object);。在这里,此代码位于服务器内部。对于每个人,当他尝试登录时,将在服务器中执行相同的代码setAttribute("String", object);在此方法中,字符串值是一个常量。因此,创建的每个会话对象都将由我提供的相同字符串绑定。当我尝试检索字符串以验证他的会话时,或者在执行注销操作时,getAttribute("String");
ll返回相同的常量字符串值(对吗!!实际上我不知道,我只是在考虑其执行逻辑) 。然后,我如何才能使之无效。

我在Web上的所有教程中都看到了这种类型的插图。是设置该属性的实际方法吗?或者,真正的应用程序开发人员将在“字符串”字段中提供变量以动态设置它

(ie. session.setAttribut(userName, userName); //Setting the StringDynamically.. I dono is it right or not.)

我的最后一个问题是

WebContext ctx = WebContextFactory.get();
request = ctx.getHttpServletRequest();

上面的两行是做什么的?ctx和请求中将存储什么? HttpSession ses =req.getSession(true);将创建新的会话方式。ses中存储了什么值。


问题答案:

一些[随机]精度:

  1. 您不需要登录/注销机制即可进行会话。
  2. 在Java Servlet中,使用两种机制跟踪HTTP会话:HTTP cookie(最常用)或URL重写(以支持没有cookie或禁用cookie的浏览器)。仅使用cookie很简单,您无需执行任何特殊操作。对于URL重写,您需要修改所有指向servlet /过滤器的URL。
  3. 每次调用时request.getSession(true)HttpRequest都会检查该对象,以便在URL路径参数中找到以cookie或OR / AND编码的会话ID(分号后面是什么)。如果找不到会话ID,则Servlet容器(即服务器)将创建一个新会话。
  4. 会话ID作为Cookie添加到响应中。如果您还希望支持URL重写,则应使用response.encodeURL()方法修改HTML文档中的链接。如果找不到会话ID或会话ID指向无效会话,则调用request.getSession(false)或简单地request.getSession()将返回null。
  5. 每次 访问 都只有一个HTTP会话,因为Java会话cookie不会永久存储在浏览器中。因此,会话对象不会在客户端之间共享。每个用户都有自己的私人会话。
  6. 如果在给定时间内不使用会话,则会自动销毁会话。可以在web.xml文件中配置超时值。
  7. 可以使用invalidate()方法显式地使给定会话无效。
  8. 人们在谈论时JSESSIONID,他们指的是用于在Java中进行会话跟踪的HTTP cookie的标准名称。


 类似资料:
  • 问题内容: JMS会话的目的是什么?为什么仅连接不足以在发送方和接收方之间交换JMS消息? 问题答案: 参见java.sun.com 会话对象是用于生成和使用消息的单线程上下文。尽管它可以在Java虚拟机(JVM)之外分配提供程序资源,但是它被认为是轻量级的JMS对象。 会话有几个目的: 它是为其消息生产者和消费者提供服务的工厂。 它提供了提供程序优化的消息工厂。 它支持单一系列的交易,将其生产者

  • 本文向大家介绍Zookeeper 会话(Session)是什么?相关面试题,主要包含被问及Zookeeper 会话(Session)是什么?时的应答技巧和注意事项,需要的朋友参考一下 Session 可以看作是 ZooKeeper 服务器与客户端的之间的一个 TCP 长连接,通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向 ZooKeeper 服务器发送请求并接受响应,同时还能

  • 嗨,一个星期以来,我一直在追踪我的办公代码中的一个错误。它与Spring、Hibernate和Transaction有关。 我所知道的: 1.延迟加载。 2. Spring如何使用代理和拦截器进行事务管理。 3. Spring中的事务传播,我们的代码使用默认的REQUIRED。 4.每个请求/会话的会话和Hibernate的分离实体基础来保持会话,以及我们的会话不是每个会话的事实。 我的场景:我的

  • 问题内容: 我了解对数据库事务处理概念的一般理解。我们访问事务内的数据库以确保ACID属性。 在Hibernate中,有一个称为会话的概念。会话的用途是什么?什么时候应该在两个会话中而不是在同一会话中进行数据库访问? 为了进一步说明,我已经看到了hibernate代码, 从会话工厂获取会话 打开会议 开始交易 提交交易 关闭会议 我需要知道的是在这里召开会议的重要性是什么?为什么没有像交易工厂这样

  • 我理解数据库事务概念的一般理解。我们在事务中访问数据库以确保ACID属性。 在Hibernate中有一个称为会话的概念。会话的用途是什么?何时应该在两个会话中而不是在同一会话中访问数据库? 为了解释更多,我看到了hibernate代码 从会话工厂获取会话 打开会话 开始事务 提交事务 关闭会话 我需要知道的是会话在这里的重要性是什么?为什么没有像事务工厂这样的东西,开始事务并提交事务?

  • 问题内容: 我对加密一无所知。我想知道会话秘密是什么。 我看到这样的代码: 什么是秘密,我应该更改吗? 问题答案: 是的,您应该更改它。连接中的会话秘密仅用于 计算哈希 。没有字符串,对会话的访问实质上将被“拒绝”。看一下connect docs ,应该会有所帮助。