1、什么是session?
当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该服务器分配一个空间,该空间被这个浏览器独占。这个空间就是session,该空间的数据默认保留时间30min。
2、session可以用来做什么?
1)、网上商城中的购物车
2)、保存登录用户的信息
3)、将某些数据放入到session中,供同一用户的各个页面使用。
4)、防止用户非法登录到某个页面
......
3、如何使用session(这里我们谈一下与Servlet中的对比)
(1)得到session
Servlet中:HttpSession hs=request.getSession(true);(这里的HttpSession其实和session是一回事)
jsp中:session是一个内置对象,可以直接使用(session其实java九大内置对象之一)
(2)向session添加属性
Servlet中:hs.setAttribute(String name,Object val);
jsp中: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的时效性30分钟,这是指的发呆时间。
示例:
sessionTest1.jsp页面
<body>
<h1>给session添加属性</h1>
<%
session.setAttribute("myname","景陈勇");
session.setMaxInactiveInterval(20);//这里20指的是20秒,只要在20秒之内一直没有访问过session,那么session就失效了。
out.println("添加了一个属性,名字是myName:对应的值是:景陈勇");
%>
</body>
sessionTest2.jsp页面
<body>
<h1>得到某个属性</h1>
<%
String name=(String)session.getAttribute("myname");
out.println("得到的属性是:"+name);
out.println("session id="+session.getId());//每一个session id都是唯一的
%>
</body>
4、session技术防止非法登录
//防止用户非法登录
String u=(String)session.getAttribute("myName");
//如果用户没有登录
if(u==null){
//返回登录界面
response.sendRedirect("login.jsp?err=1");
return; //这个不能少,否则的话还会执行下面的代码
}
%>
String err=request.getParameter("err");
if(err!=null){
if(err.equals("1")){
out.println("<font color=red size=7>用户没有正常登录,请登录!</font><br/>");
}
}
5、session技术的缺点:
因为session的各个属性要占用内存,因此软件公司都是在迫不得已的情况下,才使用。
一般使用情况:
a:保存用户信息;b:保存购物车;