Java Session对象及其常用方法
来源:互联网 发布:ubuntu arm 黑客工具 编辑:程序博客网 时间:2024/06/06 09:52
HTTP协议是一种无状态协议。客户向服务器发出请求request,然后服务器返回响应response,连接就被关闭了。在服务器端不保留连接的有关信息,因此当下一次连接时,服务器端已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一个客户。因此,必须使用会话记录有关连接的信息。
从客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器,称做一个会话。当客户访问服务器时,可能会反复连接这个服务器上的几个页面、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种方法知道这是同一个客户,这时就需要session对象。session对象可以保存用户的登录信息,实现购物车功能等。
在jsp页面中可以直接使用session对象,也可以通过pageContext.getSession()或request.getSession()方法重新获取session对象。
session的工作原理
服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效,客户端与服务器的会话结束。
Session和Cookie的主要区别
- Cookie是把用户的数据写给用户的浏览器。
- Session技术把用户的数据写到用户独占的session中。
- Session对象由服务器创建,开发人员可以调用request对象的。getSession方法得到session对象。
session对象主要用于属性操作和会话管理
1.public void setAttribute(Sting name, Object value);//设定指定名字的属性的值,并将它添加到session会话范围内,如果该属性在会话范围内存在,则更改该属性的值。
2.public Object getAttribute(String name);//在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。
3.public void removeAttribute(String name);//删除指定名字的session属性,若该属性不存在,则出现异常。
4.public void invalidate();//使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。
5.public String getId();//获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。
6.public void setMaxInactiveInterval(int interval);//设置会话的最大持续时间,单位是秒,负数表明会话永不失效。
7.public int getMaxInActiveInterval();//获取会话的最大持续时间。
8.使用session对象的getCreationTime()和getLastAccessedTime()方法可以获取会话创建的时间和最后访问的时间,但其返回值是毫秒,一般需要使用下面的转换来获取具体日期和时间。
Date creationTime = new Date(session.getCreationTime());
Date accessedTime = new Date(session.getLastAccessedTime());
9.使用session.isNew()判断session是不是新创建的
//使用request对象的getSession()获取session,如果session不存在则创建一个HttpSession session = request.getSession();//获取session的IdString sessionId = session.getId();//判断session是不是新创建的if (session.isNew()) { response.getWriter().print("session创建成功,session的id是:"+sessionId);}else { response.getWriter().print("服务器已经存在session,session的id是:"+sessionId);}
session对象的销毁时机
session对象默认30分钟没有使用,则服务器会自动销毁session,在web.xml文件中可以手工配置session的失效时间,例如:
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 设置Session的有效时间:以分钟为单位--> <session-config> <session-timeout>15</session-timeout> </session-config></web-app>
当需要在程序中手动设置Session失效时,可以手工调用session.invalidate方法,摧毁session。
HttpSession session = request.getSession();//手工调用session.invalidate方法,摧毁sessionsession.invalidate();
- java中session对象及其常用方法
- java中session对象及其常用方法
- java中session对象及其常用方法
- java中session对象及其常用方法
- java中session对象及其常用方法
- Java Session对象及其常用方法
- java中的session对象及其常用方法
- java中session对象及其常用…
- session接口及其常用方法
- JAVA学习第三十八课(常用对象API— Map集合及其常用方法
- jsp 常用的内置对象及其方法
- DOM模型中的常用对象及其方法?
- JDBC四个核心对象及其常用方法
- JSP九个内置对象及其常用方法
- 九大内置对象及其常用方法
- Java常用类及其常用方法
- java中常用类及其常用方法
- java Object类及其常用方法
- UOJ#50 【UR#3C】链式反应 FFT求解多项式线性常微分方程
- Ruby on Rails 指南
- C#托管和非托管资源
- 变色状态栏
- 用户画像系统设计调研
- Java Session对象及其常用方法
- android studio下JNI生成so文件
- mysql---DML语句
- Java之IO流
- linux脚本批处理替换文件内容的方法
- 关于UWP的一些疑惑
- Git中pull对比fetch和merge
- [数据结构] 数组与链表的优缺点和区别
- Layer 图层圆角、边框 、底纹其他常用操作