Session

session是在客户端请求服务器自动创建的具有唯一ID的对象。其生存周期从用户第一次请求服务器开始,结束于session失效。

session失效有以下几种可能性:

1、在服务器设定的时间内用户没有请求服务器。

2、服务器主动运行session.invalidate()方法使其失效。

request也是客户端请求服务器时服务器自动生成的对象,用于标志一次请求。其生存周期是客户端请求开始,到服务器返回结果结束。
两者的区别:

1、记录的信息不同。

2、生存周期不同。sesion的生存周期长于request。
因此,session常用于报存不同页面的共享信息,如登陆信息等。

常规java操作session的方法

Java Servlet定义了一个HttpSession接口,实现的Session的功能,在Servlet中使用Session的过程如下:

(1) 使用HttpServletRequest的getSession方法得到当前存在的session,如果当前没有定义session,则创建一个新的session,还可以使用方法getSession(true)

注:

 Session的工作原理:
(1)当一个session第一被启动时,一个唯一的标识被存储与本地的cookie中;
(2)首先使用session_start()函数,从session仓库中加载已经存储的session变量。
HttpRequest对象有两种形式的getSession的方法调用:
一个是getSession()
一个是getSession(boolen isNew)
这样,前者会检测当前时候是否有session存在,如果不存在则创建一个,如果存在就返回当前的。
getSession()相当于getSession(true);

参数为true时,若存在会话,则返回该会话,否则新建一个会话;

参数为false时,如存在会话,则返回该会话,否则返回NULL;

(2) 写session变量。可以使用方法HttpSession.setAttribute(name,value)来向Session中存储一个信息。也可以使用HttpSession.putValue(name,value),但这个方法已经过时了。

(3)读Session变量。可以使用方法HttpSession.getAttribute(name)来读取Session中的一个变量值,如果name是一个没有定义的变量,那么返回的是null。需要注意的是,从getAttribute读出的变量类型是Object,必须使用强制类型转换,比如:

String uid = (String) session.getAttribute("uid");

也可以使用HttpSession.getValue(name),但是这个方法也已经过时了。

(4) 关闭session,当时用完session后,可以使用session.invalidate()方法关闭session。但是这并不是严格要求的。因为,Servlet引擎在一段时间之后,自动关闭seesion。

setMaxInactiveInterval(int i)

 

i的单位是秒。
如果设置的值为零或负数,则表示会话将永远不会超时。常用于设置当前会话时间。
session.setMaxInactiveInterval(10); //设置该session 10秒之后过期
posted @ 2020-03-20 16:07  Angry-rookie  阅读(176)  评论(0)    收藏  举报