Java中的会话是什么?

到目前为止,我了解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的标准名称。

以上是 Java中的会话是什么? 的全部内容, 来源链接: utcz.com/qa/413097.html

回到顶部