一,session技术分析:
什么是session(一个浏览器实例):服务端保持状态
当用户打开浏览器,访问某个网站时,服务器就会在 “服务器的内存”为该浏览器分配一个空间,该“空间”被这个浏览器独占。
什么是cookie:客户端保持状态
二,session可以用来做什么?
1,网上商城中的购物车
2,保存登录用户的信息
3,将某些数据放入到Session中,供同一个用户的各个页面使用
4,防止用户非法登录到某个页面
。。。。。。
三,Session不好理解,咱们可以把它理解为一个表。
每一行可以看做Session的一个属性,每个属性包含两个部分,一个是该属性的名字(String),另外一个是它的值(Object)
名字(String) | 值(Object) |
每一行相当于Session的一个属性
四、如何使用Session
(1)得到session
servlet中,HttpSession hs = request.getSession(true);
jsp中,session是一个内置对象,可以直接使用
(2)向session中添加属性
servlet中:hs.setAttribute(String name,Object o);
jap中:session.setAttribute(String name,Object o);
(3)从session得到某个属性
servlet: hs.getAttribute(String name);
jsp : session.getAttribute(String name);
(4)从session删除某个属性
servlet: hs.removeAttribute(String name);
jsp : session.removeAttribute(String name);
五、session的注意事项
(1)session中属性存在的时间是30min,你也可以修改它的时间
(a)修改web.xml
(b)在程序中修改
(2)上面说的这个30min指的是用户的发呆时间,而不是累计时间
(3)当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的session id,并以此来区分不同的浏览器(即客户端)
(4)因为session的各个属性要占用服务器的内存,因此只有在迫不得已的情况下才会使用
<body>
<h2>给Session添加属性</h2>
<%
//session 是jsp的内置对象
session.setAttribute("myName","Aloys");
//session默认的有效时间是30min,可以设置30s
session.setMaxInactiveInterval(30);
out.println("设置Session属性!!!!myName=Aloys");
%>
</body>
</html>
<body>
<h2>获取Session属性</h2>
<%
String name = (String)session.getAttribute("myName");
out.println("获取Session属性的值:"+name);
%>
</body>