session内置对象:
SESSION ID=B564A2D318ECDF70EB94C6DE2080E951
客户端的session 其实是标记了你的请求来自哪个浏览器
问题1:永远都一样吗?
答:重启了浏览器,你的session id就改变了,
结果会导致,再无法取回原来在服务端保存的数据。
问题2:假设客户端的session id不变(浏览器不重启),
那么服务器会一直保存这个session的数据吗?
答:服务端(tomcat)如果20分钟,没有人动,
那么这个session就自动销毁。
Session的应用场景:一般而言,就是用于记录你的登录信息
SESSION ID=73A4F52FED80DE48C0C207519DCE6190
对于application在整个项目中,变量是有且只有1个,所有客户端都共享同一个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对每一个用户(浏览器)是单独的,而application的所有用户(浏览器)是共享的一个的。从使用角度来讲,共享同1个变量会出现资源争夺的冲突。(绝大部分时候都不用application的)
3、 session服务器默认只保存20分钟(可以修改),而application会一直存在,直到tomcat关闭。