tomcat会生成jessionId传递给浏览器,浏览器保存在会话cookie中,当浏览器再去向服务器发送请求的时候,这个jessionId也会发送到服务器端,通过jessionId来找到服务器端为用户维持的一个session。我想求教的是,这个jessionId是在什么时候生成并发送给浏览器的呢?···为什么我第一次访问服务器的时候,这个jessionId已经存在到http的header中了?···tomcat,jessionId
解决方案 »
- 请java高手帮我看看我写的一个数据库类如何改进会更好些
- 公司放假一个月,Java软件工程师适合什么兼职?
- 问个小问题~很简单的~~~
- extjs 分栏面板
- 怎么样让一个组件一直聚焦
- 在eclipse里怎样进行级联删除操作?
- 有没有人碰到过DispatchAction里做文件上传的案例?
- 如何定时上成一个mdb文件?
- weblogic建立的server,用startWebLogic.cmd启动后要求输入用户名和密码,system/security输入后自动跳出
- EJB部署完成,用JSP如何调用?(来者有分)
- jsp怎样将复杂结构的表格导出为word?
- 在jsp页面布局的时候,什么情况下用div,什么情况下用table
但是这个jessionid是保存在cookie中的,所以你请求的时候header中会带上从客户端的cookie中获取到的jessionid。
再来从session产生的角度阐述下:
登陆后,你的确得到了session,也拥有了一个session id(jsessionid),如果你一分钟不动,属于你的session会失效。但此时你的jsessionid并没有变(存在cookie中),因为此时你的jsessionid是放在了你浏览器的cookies中的。如果你这时进行操作,浏览器会将你的jsessionid传送到服务器(也就是你看到的header头中有),服务器拿这个jsessionid去找属于你的session,但不好意思,这时找不到了,因为超时后被干掉了。
关键是查看http请求,http头里就带有这个jessionId,没有服务器的应答,这个jessionId就出现了
关键是查看http请求,http头里就带有这个jessionId,没有服务器的应答,这个jessionId就出现了
我的解释没看吗?你打开电脑,打开浏览器,发送请求,此时虽然没有建立session,但是浏览器会取cookie中得jessionid
关键是查看http请求,http头里就带有这个jessionId,没有服务器的应答,这个jessionId就出现了
我的解释没看吗?你打开电脑,打开浏览器,发送请求,此时虽然没有建立session,但是浏览器会取cookie中得jessionid
我明明清除了cookie,额···,好吧,估计是我的cookie没清除干净。你说我存在本地磁盘上的cookie中已经有了这个jessionId,那么我再登陆的时候服务器端我的session肯定是不存在的,这个时候是不是服务器端就要开辟空间,为我创建一个session啊?··服务器怎样去生成jessionId的啊?····怎样保证产生的这个jessionId没有被使用过?(是根据时间吗?···如果根据时间的话,那高并发的访问,也可能出现时间相同的情况啊··)这个jessionId是怎么维持不相同的?···
if (result != null) {
// Not thread-safe but if one of multiple increments is lost
// that is not a big deal since the fact that there was any
// duplicate is a much bigger issue.
duplicates++;
} result = sessionIdGenerator.generateSessionId();
} while (sessions.containsKey(result));
return result;
}
public String generateSessionId() { byte random[] = new byte[16]; // Render the result as a String of hexadecimal digits
StringBuilder buffer = new StringBuilder(); int resultLenBytes = 0; while (resultLenBytes < sessionIdLength) {
getRandomBytes(random);
for (int j = 0;
j < random.length && resultLenBytes < sessionIdLength;
j++) {
byte b1 = (byte) ((random[j] & 0xf0) >> 4);
byte b2 = (byte) (random[j] & 0x0f);
if (b1 < 10)
buffer.append((char) ('0' + b1));
else
buffer.append((char) ('A' + (b1 - 10)));
if (b2 < 10)
buffer.append((char) ('0' + b2));
else
buffer.append((char) ('A' + (b2 - 10)));
resultLenBytes++;
}
} if (jvmRoute != null && jvmRoute.length() > 0) {
buffer.append('.').append(jvmRoute);
} return buffer.toString();
}