session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获取这些会话的有效数据。
在jsp页面中可以直接使用session对象(jsp的内置对象),也可以通过pageContext.getSession()或者request.getSession重新回去session对象。
session可以保存用户的信息和实现购物车等功能。
HTTP协议是一种无状态协议,客户向服务器发出的请求request,然后服务器返回响应response,连接就被关闭了,在服务器不保存连接的有关信息,因此在下一次连接时,服务器已经没有以前的连接信息了,无法判断这一次连接和上一次连接时同一个客户信息,因此,必须使用会话记录有关连接的信息。
从客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器,称做一个会话。当客户访问服务器是,可能会反复连接这个服务器上的几个页面、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种方法知道这是同一个客户,这时就需要session对象。
session的工作原理如下:
1、客户首次访问服务器的一个页面时,服务器就会为该用户分配一个session对象,同时为这个session指定唯一的ID,并且将该ID发送到客户端并写入到cookie中,使得客户端与服务器的session建立一一对应的关系;
2、当客户端继续访问服务器端的其它资源时,服务器不再为该客户分配新的session对象,直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效,客户端与服务器的会话结束。
3、当客户重新打开浏览器访问网站时,服务器会重新为客户分配一个session对象,并重新分配sessionID。
session对象主要用于属性操作和会话管理,常用方法如下:
1、public void setAttribute(String name,String 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());
<%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>session对象方法</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<b>
会话ID:<%=session.getId() %> <br>
是否新会话:<%=session.isNew() %><br>
设置和获取属性对象:用户名 =
<%session.setAttribute("用户名","bing"); %>
<%=session.getAttribute("用户名") %><br>
<%
Date creationTime = new Date(session.getCreationTime());
Date accessedTime = new Date(session.getLastAccessedTime());
%>
会话创建时间:<%=creationTime %><br>
上次访问时间:<%=accessedTime %><br>
会话持续时间(s):<%=session.getMaxInactiveInterval() %><br>
<%session.setMaxInactiveInterval(12); %>
修改后的会话持续时间(s):<%=session.getMaxInactiveInterval() %><br>
<%session.invalidate(); %>
</b>
</body>
</html>
分享到:
相关推荐
在本文中,我们将详细介绍 Session 对象及其常用方法。 Session 对象的工作原理是:当客户首次访问服务器的一个页面时,服务器就会为该客户分配一个 Session 对象,同时为该 Session 对象指定一个唯一的 ID,并且将...
理解 Session 的工作原理及其在 Java 中的具体实现对于开发高效稳定的 Web 应用程序至关重要。通过本课程的学习,你不仅能够掌握 Session 的基本概念和使用方法,还能了解到 Session 在实际开发中的应用场景和最佳...
首先,我们来看Session对象,它是`HttpSession`类的实例,代表了客户端与服务器之间的一次会话。以下是一些重要的Session方法: 1. `getCreationTime()`:返回Session创建的时间,以毫秒为单位。 2. `getId()`:...
本篇文章将深入探讨JSP中的9个内置对象及其常用函数,帮助你更好地理解和运用它们。 1. **pageContext对象**:这是JSP页面的上下文对象,提供了访问其他JSP内置对象、请求、响应、session等的能力。常用函数包括`...
下面将详细介绍QBC中的一些常用方法及其应用场景。 #### 1. `eq()` 方法 `Restrictions.eq()` 方法用于表达“等于”关系,即查询某个属性等于特定值的所有记录。 - **语法**:`Restrictions.eq(String propertyName...
### j2ee 九大内置对象及其方法详细说明 在J2EE(Java 2 Platform, Enterprise Edition)开发中,为了简化编程过程并提高代码的可维护性和可读性,引入了九大内置对象。这些对象自动地由容器创建,并提供给开发者...
23.1.1 Session对象的生命周期与本地线程绑定 23.1.2 Session对象的生命周期与JTA事务绑定 23.2 实现对话 23.2.1 使用游离对象 23.2.2 使用手工清理缓存模式下的Session 23.3 小结 23.4 思考题 第24章...
"java常用jar包集合"是一个综合性的资源,涵盖了多种Java开发中常用的技术框架和库,方便开发者快速构建和运行J2EE应用。以下是对这些jar包及其相关知识点的详细说明: 1. **数据库驱动包**: - **JDBC驱动**:...
本教程聚焦于Hibernate中的Session接口以及get、load、persist这三个常用的方法,它们是 Hibernate 实现对象-关系映射(ORM)的核心组件。 首先,我们来理解Session接口。Session在Hibernate中扮演着数据库连接的...
本文将详细介绍 Hibernate 中常用的几种方法,包括 `save`, `update`, `saveOrUpdate`, `merge` 等,帮助开发者更深入地理解 Hibernate 的工作原理及其使用方式。 #### 二、Hibernate 对象状态管理 在 Hibernate ...
- **获取Session对象**:可以通过HttpServletRequest对象的getSession()方法获取HttpSession对象。 - **设置Session属性**:使用HttpSession对象的setAttribute(String name, Object value)方法来设置Session属性。 ...
在Web开发中,Session是一种常用的技术,用于跟踪用户的会话状态。SessionID则是服务器为每个用户会话分配的一个唯一标识符,对于实现用户身份验证、个性化服务等功能至关重要。本文将围绕如何获取SessionID展开讨论...
- 当对象通过`Session`的`save()`方法保存后,对象转变为持久状态。 - 持久状态的对象具有唯一的数据库标识(OID),并且总是与一个`Session`关联。 - 持久状态的对象是事务性的,并且由Hibernate进行管理。 - ...
- 理解Session对象的功能及其实现机制。 - 掌握如何使用Session对象来完成用户的模拟登录功能。 - 学习如何验证用户的登录状态并展示相应的信息。 #### 二、预备知识详解 1. **会话(Session)概念**: - 会话是...
"java web开发常用模块源代码"这个主题涵盖了这些模块的核心源代码,为开发者提供了宝贵的参考资料。下面将详细介绍一些常见的Java Web开发模块及其相关知识点。 1. **Servlet与JSP**: Servlet是Java Web应用中的...
- `@SessionAttributes`:将对象绑定到session中。 - `@ModelAttribute`:用于将数据绑定到模型中。 ##### 与其他框架的区别 - **SSH(Struts + Spring + Hibernate)**:传统的Java Web开发框架组合,其中Struts...
下面我们将深入探讨Java Web中常用的几个对象及其对应的接口实例化。 1. **Request对象**:Request对象是`javax.servlet.HttpServletRequest`接口的实例。它代表来自客户端的一次HTTP请求,包含了请求的所有信息,...
- **检索Session**:服务器通过Session ID查找对应的Session对象,从而获取用户的会话信息。 ##### 4.3 Session的优势 - **安全性**:由于Session数据存储在服务器端,相比Cookie更安全。 - **灵活性**:服务器...
- **定义**: Session 是 Hibernate 框架中最常用的接口之一,它又被称为持久化管理器。Session 负责所有与数据库交互的工作,包括管理持久化对象的生命周期,并通过提供第一级别的高级缓存来确保持久化对象的数据与...
2. **JSP**:JSP页面可以使用内置对象(如request、response、session、pageContext等)和EL表达式。 3. **JSTL**:JSTL标签库,如fmt、fn、c、sql等,简化JSP页面的逻辑代码。 4. **过滤器(Filter)**:Servlet ...