37. 一千万个人访问网站 ,就创建一千万份session,你一份,我一份,getSession()可以拿到相应的session. 比如:张三来拿到session,就request.getSession(); 还有带参数,
request.getSession(true); false;
session跟cookie类似,也跟窗口绑定,通过这个servlet设置的session,无法再开一个窗口来显示session中的值。
开两个窗口就相当于两个不同的人,但是开子窗口可以拿到session中的值,什么叫开子窗口,,,,在ie打开的情况下,再选文件,点新建选项卡,这就叫打开一个子窗口。
38. session有一个超时的概念,比如一千万个人在购物,有五百万已经购物完了,不可能一直还常驻内存,销毁的目的是释放资源,session默认的超时时间30分钟,如果你在项目中没有配,它就用tomcat conf目录下的缺省配置。当你30分钟鼠标没有响应的时候session就丢掉了,有些特殊的应用,比如计时的什么东西,要几个小时,你就要自己设置。最好的例子就是在线股票行情的应用,你如果一过30分钟没有人操作,你session就断了,我损失就大了。
超时的目的,就是释放资源。
40. request的时候,就是请求服务器的时候创建session的时候,也就创建了一个sessionid,当response的时候,response,服务器返回这个sessionid,每次都带着sessionid在传,因为http是无状态的,
,可以用httplook监测到这个情况。
如果第一次请求的时候,那个jsp页面,他的 session="false" 的话,他就不会创建session了。
第一次请求的时候,服务器会创建一个sessionid给你,客户端会将sessionid写入cookie 但是 以后你再请求的时候,你就会把带着sessionid带回传。 |
|
|
还有cookie是可以禁用的。禁用了sessionid就没有了。客户端保存不了cookie啊,
41. 怎么解决上述,客户不小心禁用cookie或者有意禁用cookie呢?这里说的禁用,是不让cookie往客户机里面写一个放cookie的文件,就是不会在客户机上面产生一个什么。。什么。。.txt 的文本文件。但是这个sessionid是传过来了,放在哪呢?放在客户机内存里面。 采用URL重写。所谓的url重写,就是把sessionid每次访问的时候都添加到地址栏的后面。每个url后面都带sessionid,就叫url重写。url重写,不是重定向,我说怎么这么陌生呢. 一般情况不使用url重写,一般用session不用url重写,url重写麻烦,每一个url都要重写