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