Session
客户端的session其实是标记了你的请求来自哪个浏览
器,每一个客户端的session都是不同的
问题一:
在同一个客户端中session永远都一样吗?
答:每一次重启浏览器,你的session Id就会发生改变,结果会导致,再也无法取回原来在服务断奶保存的数据.
注意:有各种各样的浏览器,没打开一个不同的浏览器都是相当于重新打开了一个新的session,
而浏览器重启是完全关闭,不是在打开一个相同的浏览器,是要把所有一样的浏览器都关闭,在重新打开session才会发生改变.
问题二:
假设客户端的session ID不变(浏览器不重启),那么服务器会一直保存这个数据吗?
答:服务端(Tomcat)如果20分钟,没有人动,那么这个session就自动销毁
而session一般而言,就是用在记录你的登录信息
application
对于application在整个项目中,变量是有且只有一个的,所有的客户端是共同使用同一个application对象的
那么在人类社会中,哪里要用到application呢,
application就是用来解决资源分配问题的
那么那些应用场景是资源共享呢?
1.抢火车票
2.抽奖
3.统计点击次数
t1.jsp 创新一个新的session
t2.jsp 取出来显示
t3.jsp 取出来后,自增1,然后再重新赋值session
t1
<%
session.setAttribute("abc", 0);
%>
T2
<%
int i = (Integer)session.getAttribute("abc");
out.println("i的值:"+i);
%>
${abc}
T3
<%
int i = (Integer)session.getAttribute("abc");
//把取出来的值,自增1
i = i + 1;
//把运算后新的值,重新赋值给session
session.setAttribute("abc", i);
out.println("i的值:"+i);
%>
Application
A1.jsp
<%
application.setAttribute("abc", 0);
%>
A2.jsp
<%
int i = (Integer)application.getAttribute("abc");
i++;
application.setAttribute("abc", i);
%>
${abc}
关于Session和application的异同
1.session和application,request在配置属性,代码是一样的
2.session对每一个用户(浏览器)是单独的,而appli的所有用户(浏览器)是共享的一个的.从使用的角度来讲,共享同一个变量会出现资源争夺的冲突.(所有绝大部分是不用application的)
3.session服务器默认值保存20分钟(可以修改),而appli则是一直存在,知道tomcat关闭.