内置对象session与httpSession对象是同一个东西吗?

文章目录

JSP内置对象session

一、概述

session
session表示客户端与服务器的一次会话
Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所进过的这段时间,也就是用户浏览这个网站所花费的时间
从上述定义中可以看到,session实际上是一个特定的时间概念
在服务器的内存当中保存着不同用户的session,session和用户是一一对应的。

session对象
session对象是一个JSP内置对象。
session对象在第一个JSP页面被装载时自动创建,完成会话期管理。
从客户端打开浏览器并连接到服务器开始,到客户端关闭浏览器离开这个服务器结束,被称为一个会话。
当一个客户访问一个服务器,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。
session对象是HttpSession类的实例。

session对象常用方法如下:
long getCreationTime() 返回session创建时间
String getId() 返回session创建时JSP引擎为他设的唯一ID号
void setAttribute(String name, Object value) 使用指定名称将对象绑定到此会话
Object getAttribute(String name) 返回此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null
String[] getValueNames() 返回一个包含此session中所有可用属性的数组
int getMaxInactiveInterval() 返回两次请求间隔多长时间此session被取消(单位:秒)

二、session的生命周期

session的生命周期包括三个阶段:创建、活动、销毁
创建:
当客户端第一次访问某个jsp或者servlet的时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此sessionId携带过去,服务端会对此sessionId进行校验。
活动:
某次会话当中通过超链接打开的新页面属于同义词会话。
只要当前页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。
本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet将会创建新的会话。
注意事项:注意原有会话还存在,只是这个旧的SessionID任然存在服务端,只不过再也没有客户端会携带它然后交予服务端校验。
销毁:
Session的销毁只有三种方式:
1.调用了session.invalidate()方法
2.session过期(超时)
3.服务器重新启动

Tomcat默认session超时时间为30秒。
设置session超时时间有两种方式:
1.session.setMaxInactiveInterval(时间);//单位是秒
2.在web.xml中配置


10

// 单位是分钟
(注:web.xml文档在项目的WEB-INF目录下)

httpSession对象

一、概述

HttpSession是由JavaWeb提供的,用来会话跟踪的类。session是服务器端对象,保存在服务器端!!!
HttpSession是Servlet三大域对象之一,所以它也有setAttribute()、getAttribute()、removeAttribute()方法。
HttpSession底层依赖Cookie,或是URL重写!

二、HttpSession作用

会话范围:会话范围是某个用户从首次访问服务器开始,到该用户关闭浏览器结束!
会话:一个用户对服务器的多次连贯性请求!所谓连贯性请求,就是该用户多次请求中间没有关闭浏览器!

服务器会为每个客户端创建一个session对象,session就好比客户在服务器端的账户,它们被服务器保存到一个Map中,这个Map被称之为session缓存!
Servlet中得到session对象:HttpSession session = request.getSession();
Jsp中得到session对象:session是jsp内置对象之下,不用创建就可以直接使用!

session域相关方法:
设置属性:void setAttribute(String name, Object value);
获取属性:Object getAttribute(String name);
删除属性:void removeAttribute(String name);

上一篇:内置对象session与httpsession对象


下一篇:内置对象session和HttpSession对象是同一个东西吗?