到目前为止,我理解了Java中的Httpsession概念。
HttpSession ses = req.getSession(true);将根据请求创建一个会话对象。
setAttribute("String", object);将“字符串”和值与会话对象绑定在一起。
getAttribute("String");将返回与指定字符串关联的对象。
我不能理解的是:我创建了一个类似HttpSession ses = req.getSession(true);的会话对象,并通过调用setAttribute("String", object);为它设置了一个名称。在这里,这段代码驻留在服务器内部。对于每个人,当他尝试登录时,服务器中的相同代码将被执行。setAttribute("String", object);在此方法中,字符串值为常量。因此,创建的每个会话对象都将由我提供的相同字符串绑定。当我尝试检索字符串以验证他的会话或执行注销操作时,getAttribute("String");将返回相同的常量字符串值(我说的对吗!!??实际上我不知道,我只是在考虑它的执行逻辑)。那么,我如何才能使。
我在WEB上的所有教程中都看到过这种类型的插图。这是设置该属性的实际方法吗?或者,真正的应用程序开发人员会在"String“字段中提供一个变量来动态设置它
(ie. session.setAttribut(userName, userName); //Setting the String Dynamically.. I dono is it right or not.)
我的最后一个问题是
WebContext ctx = WebContextFactory.get();
request = ctx.getHttpServletRequest();上面的两行是做什么的?什么将存储在ctx和请求中?HttpSession ses = req.getSession(true);将创建新的会话方式。存储在ses中的值。
发布于 2010-09-08 22:04:34
一些随机精度:
request.getSession(true)时,将检查HttpRequest对象,以便在URL path参数(分号后面的内容)中找到编码在cookie或/AND中的会话ID。如果找不到会话ID,servlet容器(即服务器)将创建一个新会话。response.encodeURL()方法修改HTML文档中的链接。如果找不到会话ID或会话ID引用的无效session.request.getSession(false)会话,则调用request.getSession()或简单地调用HTTP将返回null,因为Java session cookie不会永久存储在浏览器中。因此会话对象不会在客户端之间共享。每个用户都有自己的私有session.web.xml文件中配置。invalidate()方法显式地使给定会话无效。JSESSIONID时,他们指的是用Java语言进行会话跟踪的HTTP cookie的标准名称。发布于 2010-09-08 21:32:16
我建议你阅读一篇关于Java会话的tutorial。根据Java web服务器发送给浏览器的JSESSIONID请求/响应参数,每个用户都会得到一个不同的HttpSession对象。因此,每个用户都可以有一个具有相同名称的属性,并且为该属性存储的值对于所有用户都是不同的。
此外,WebContextFactory和WebContext都是DWR类,它们提供了一种获取servlet参数的简单方法。
发布于 2010-09-08 21:38:00
据我所知,您关心的是在HttpSession中存储内容时不同用户的分离。
servlet容器(例如Tomcat)利用它的JSESSIONID来处理这个问题。
故事是这样的:
servlet user first logs on website.
希望这(至少部分)回答了你的问题。
干杯
https://stackoverflow.com/questions/3668153
复制相似问题