【发布时间】:2011-04-09 17:59:48
【问题描述】:
到目前为止,我了解 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"); 将返回相同的常量字符串值(我是对的!!??实际上我不知道,我只是在想它的逻辑执行)。那么,我怎么能无效。
我在 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 & request 中?
HttpSession ses = req.getSession(true); 将创建新的会话方式。 ses中存储了什么值。
【问题讨论】:
-
一个会话与单个用户相关联。两个不同的用户有不同的会话。如果您想与同一用户共享某些内容,请在会话对象上使用 setAttribute。如果在多个使用之间,则使用上下文对象。您也可以通过附加请求对象来共享对象。