3.5 session对象

session是一个网站所有页面都能访问的一个表格。这个表格只有两列,类似于这样:
名称

abc
123
username
zhang
每增加一个session数据,表格就多一行数据,行数并没有限制(如果内存足够的话)。数据都是以“名称-值”这样的对来保存的,读取的话,是根据名字来读取的。 下面这个是保存一对数据到session,名称是abc,值是123
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<% session.setAttribute( "abc" , "123" );%>
以下是从session中读取名称为"abc"session可以直接保存对象,全部以Object类型保存,读取出来的时候,需要把Object类型转换成对应的类型才能使用。在一个页面保存一条session数据,可以在其余页面读取。
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<% String value=(String)session.getAttribute( "abc" );%>
session值是会定期清除的,例如session经常用来保存用户的登陆状态,如果超过一定时间没有操作,那么session清空,这个账户就是未登录状态了。我们可以通过这个函数session.setMaxInactiveInterval(arg0),来修改超时的时间,以毫秒为单位。
例如要定30分钟超时,那么就是session.setMaxInactiveInterval(30*60*1000)。 session是和用户相关联的,例如同时有两个人使用网站,就会生成两个不同的session对象,它们互不干涉。这个过程是容器(tomcat)来做的,对我们开发者来说是透明的。
如果要手动删除掉本用户关联的所有session,那么使用这个方法:session.invalidate()。 
如果只是session的某行数据要删除掉,那么就要用session.removeAttribute(Stringname),例如登出(退出)操作(点击后删除用户登录的session值)
返回类型
方法名
功能
示例
void
setAttribute(Stringname,Objectvalue)
保存一条数据到session,名字是name,值是value,如果已经有同名数据存在,那么它的值会被覆盖
session.setAttribute("abc","123");
Object
getAttribute(Stringname)按照名字name从session取值,如果不存在,返回nullStringvalue=(String)session.getAttribute("abc");
void
setMaxInactiveInterval(inttime)设置session超时时间
session.setMaxInactiveInterval(30*60*1000)
void
invalidate()将session失效,删除所有sesison数据
session.invalidate()
void
removeAttribute(Stringname)
根据名字删除session的某行数据
session.removeAttribute("abc");