什么是Java会话?
作者:互联网
参见英文答案 > How do servlets work? Instantiation, sessions, shared variables and multithreading 8个
到目前为止,我理解Java中的Httpsession概念.
HttpSession ses = req.getSession(true);
将根据请求创建会话对象.
setAttribute("String", object);
将使用Session对象绑定’String’和value.
getAttribute("String");
将返回与指定的字符串关联的对象.
我无法理解的是:我正在创建一个像这样的会话对象
HttpSession ses = req.getSession(true);
并通过调用setAttribute(“String”,object);为其设置名称.
这里,此代码驻留在服务器内部.对于每个人,当他尝试登录服务器中的相同代码时将被执行. setAttribute(“String”,object);在此方法中,字符串值是常量.因此,创建的每个会话对象都将使用我提供的相同字符串进行绑定.当我尝试检索字符串以验证其会话时,或者当注销操作采用getAttribute(“String”)时; ll返回相同的常量字符串值(我是对的!!实际上我不知道,我只是在想它的执行逻辑).然后,我怎么能够无效.
我在WEB上的所有教程中都看到了这种类型的插图.它是设置该属性的实际方法吗?或者,真正的应用程序开发人员将在“String”字段中给出一个变量来动态设置它
(即session.setAttribut(userName,userName); //动态设置字符串..不管是不是.)
我的最后一个问题是
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,session,servlets,dwr 来源: https://codeday.me/bug/20191004/1853535.html