一、什么是Session
1、session表示客户端与服务端的一次会话
2、Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览网站所花费的时间。
3、从上述定义中可以看到,session实际是一个特定的时间概念4、服务器的内存中,保存着不同用户的session,每个用户都有属于自己的session。
二、关于session对象
(1)session是JSP的一个内置对象,是HttpSession类的实例。
(2)session对象在第一个JSP页面被装载时自动创建,完成会话期管理。
(3)从客户打开浏览器并连接到服务器开始,到客户关闭浏览器窗口断开与服务器的连接,这一过程成为一个会话。
(4)当客户在同一个网站的不同页面之间进行切换并访问时,服务器是通过session来判断这些请求是否来自同一个客户。
(5)session一般有时间限制,长时间不操作可能会导致session失效。session失效后原session中保存的属性值会全部丢失。
-------------------------------
session对象的常用方法有:
long getCreationTime() : 返回session的创建时间(单位:毫秒);
public String getId() : 返回session的唯一ID号(该ID在session生成时,由JSP引擎创建)
public Object setAttribute(String name,Object value) : 按照键值对的方式在该session会话中保存一个属性(该属性是一个对象类型)
public Object getAttribute(String name) : 返回指定名称的属性的值(如果该名称的属性不存在,则返回null)
String[] getValueNames() : 返回一个包含在此session中所有可用属性的数组。
void setMaxInactiveInterval(int i) 该方法可直接设定session的生存时间,超过该时间session会重新创建。(单位:秒)
int getMaxInactiveInterval() : 返回一个时间,该时间表示当前session间隔多少时间之后会失效(单位:秒)。
三、session的生命周期
1.创建:当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验
2.活动:
①某次会话当中通过超链接打开的新页面属于同一次会话
②只要当前会话页面没有全部关闭,重新打开的浏览器窗口访问同一个项目资源时属于同一次会话
③除非本次会话的所有页面都关闭后在重新访问某个JSP或者servlet将会创建新的会话
注意:注意原有会话还存在,只是这个旧的Session仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验
3.session销毁的三种方式:
①调用session.invalidate()方法
②session过期(超时)
③服务器重新启动
设置session超时的两种方式:
tomcat默认session超时时间为30分钟
1:session.setMaxInactiveInterval(时间); //单位是秒
2:在web.xml配置
<span style="font-size:18px;"><session-config> <session-timeout> 10 <session-timeout> <session-config> //单位是分钟</span>
四、application对象
1、实现了用户间数据的共享,可存放全局变量。(类似静态对象)
2、开始于服务器启动,终止于服务器的关闭(生命周期)
3、在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作
4、在任何地方对application对象属性进行操作,都将影响到其他用户对此的访问
5、application对象是ServletContext类的实例
五、page对象
page对象就是指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例。
常用方法如下:
class getClass(); //返回此Object类
int hashCode(); //返回此Object的hash码
boolean equals(Object obj); //判断此Object是否与指定的Object对象相等
void copy(Object obj); //把此Object复制到指定的Object对象中
Object clone(); //克隆此Object对象
String toString(); //把此Object对象转换为String类的对象
void notify(); //唤醒一个等待的线程
void notyfyAll(); //唤醒所有等待的线程
void wait(int timeout); //使一个线程处于等待直到timeout结束或被唤醒
void wait(); //使一个线程处于等待直到被唤醒
六、pageContext对象
1、pageContext对象提供了对JSP页面内所有的对象及名字空间的访问。【权限很高】
2、可以访问到本页所在的session,也可以取本页面所在的application的某一属性值
3、简单说,pageContext对象相当于页面中所有功能的集大成者
4、pageContext对象的本类名也叫pageContext
常用方法如下:
(1)JspWriter getOut() 返回当前客户端相应被使用的JspWriter流(out)
七、Config对象
Config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括ServletContext时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
常用方法如下:
ServletContext getServletContext()返回含有服务器相关信息的ServletContext对象
String getInitParameter(String name)返回初始化参数的值
Enumeration getInitParameterNames()返回Servlet初始化所需所有参数的枚举
八、Exception对象
Exception对象是一个异常对象,当一个页面在运行过程中规发生了异常,就会产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
使用方法:
1、在可能会抛出异常的页面page指令里,设置errorPage="xxx.jsp",表示出现异常将抛给xxx页面去处理
2、在xxx页面里,要使用Exception对象,需要把page指令里的isErrorPage属性设置为true。
Exception对象常用方法:
(1)String getMessage() 返回描述异常的信息
(2)String toString() 返回关于异常的简短描述信息
(3)void printStackTrace() 显示异常及其栈轨迹
(4)Throwable FillInStackTrace() 重写异常的执行栈轨迹