一 Session的简介
1.Session出现的原因是Cookie存在的缺点:
Cookie的缺点:使用Cookie可以保存上一次请求的状态信息,但是如果传输的数量较多,会降低传输的效率和增大服务端程序处理的难度
2.Session的概念
Session是一种将会话状态保存在服务端的技术,它可以比喻成是医院发放给病人的病历卡和医院为每个病人保留的病历档案的结合方式 。
3.Session的应用介绍
客户端需要接收、记忆和回送 Session的会话标识号,Session可以且通常是借助Cookie来传递会话标识号。
4.Session的会话流程介绍
当浏览器请求--àweb服务器某个servlet程序会话开始,在服务器开辟一个存储区域,有一个唯一标示的,用来保存会话状态的区域(HttpSession对象)--à把会话ID通过相应的应答消息保存在客户端浏览器--à当在访问的时候,会封装会话ID,servlet会通过ID寻找
二 Session的跟踪机制
1.Servlet API规范中定义了HttpSession接口。httpSeecion的对象是保存了会话状态信息的存储结合,一个客户端在web服务端对应一个各自的httpSession对象。
2.HttpSession对象是保持会话状态信息的存储结构,一个客户端在WEB服务器端对应一个各自的HttpSession对象。
3.WEB服务器并不会在客户端并不是一开始访问就创建,而是访问某个能与客户端开启回话的servlet程序时WEB应用程序才会创建一个与该客户端对应的HttpSession对象。
4.WEB服务器为HttpSession对象分配一个独一无二的会话标识号,然后在响应消息中将这个会话标识号传递给客户端。客户端需要记住会话标识号,并在后续的每次访问请求中都把这个会话标识号传送给WEB服务器,WEB服务器端程序依据回传的会话标识号就知道这次请求是哪个客户端发出的,从而选择与之对应的HttpSession对象。
5.Web在创建了某个客户端对应的httpSession对象之后,只有没有超过 一个限定的空闲时间段,可以任意访问,如果超过了时间,就自动停止了会话。
6.HttpSession接口中专门定义了一个setAttribute方法来将对象存储到HttpSession对象中,还定义了一个getAttribute方法来检索存储在HttpSession对象中的对象,存储进HttpSession对象中的对象可以被属于同一个会话的各个请求的处理程序共享。
例子:(1)在SessionDemo1中设置属性
// 请求域中设置
String name = "张三";
request.setAttribute("name", name);
//在一次会话中设置---对上一个的覆盖
String name1 = "李四";
HttpSession session = request.getSession();
// 保存到会话中
session.setAttribute("name", name1); // 覆盖的操作
//在整个应用中设置
String name2 = "王五";
ServletContext context =this.getServletContext();
context.setAttribute("name", name2);
(2) 在sessionDemo2中获取属性
//获取从请求域中的对象
String name = (String) request.getAttribute("name");
//获取从Session会话中得到的属性
HttpSession session = request.getSession();
String name1 = (String) session.getAttribute("name");
//获取上下文对象的属性
ServletContext context =this.getServletContext();
String name2 = (String) context.getAttribute("name");
注:
HttpSession session = request.getSession();这句话有两种含义
(1)是第一次创建一个会话对象 创建一个唯一标示的ID 保存在服务端
(2) 获取session对象的引用 根据请求消息中的session去查找服务器中是否存在getSession的ID,请求消息中的ID和session对象中的ID是否一致
(3)当创建一个Session之后,会自动有一个会话ID标识,并且这个会话ID会保存在Cookie中,有Cookie发送给客户端,这是一个线程的结束,当在访问的时候,把磁盘的Cookie封装后发送给Web服务器。Cookie是一个临时的储存ID的。
(4)以上三种的使用
请求域的作用于是最小的
在同一个会话范围之内 是用Session
在不同会话中的范围内 用ServletContext
(5) Application域范围的属性,是整个应用程序对象
7. Session是实现网上商城的购物车的最佳方案,存储在某个客户Session中的一个集合对象就可充当该客户的一个购物车。
购物车的流程:
首页:看到所有的商品 InitServlt.class
1 洗衣机 800 <a href=”/demoWeb/buyServlet?id=1”>加入购物</a>
2 电视 800 <a href=”/demoWeb/buyServlet?id=2”>加入购物</a>
3 MP4 800 <a href=”/demoWeb/buyServlet?id=3”>加入购物</a>
4 录音机 800 <a href=”/demoWeb/buyServlet?id=4”>加入购物</a>
请求提交给 BuyServlet.class
获取要购买的商品的ID,获取对应的商品对象good
要判断
List cart = new LinkedList();
Cart.add(good);
Session.setAttribute(cart);
跳转到现实购物车的页面,由这个界面去实现所有要的货物 ListCartServlet.class
三 Session的超时管理
1.超时管理的作用
WEB服务器采用“超时限制”的办法来判断客户端是否还在继续访问,如果某个客户端在一定的时间之内没有发出后续请求,WEB服务器则认为客户端已经停止了活动,结束与该客户端的会话并将与之对应的HttpSession对象变成垃圾。
2.超时管理的原理
如果客户端浏览器超时后再次发出访问请求,WEB服务器则认为这是一个新的会话的开始,将为之创建新的HttpSession对象和分配新的会话标识号。
3.超时管理的设置
(1)在某一个工程的web.xml中设置
<session-config>
<session-timeout>1</session-timeout>
</session-config>
(2)在文件夹下的conf下的web.xml下设置
<session-config>
<session-timeout>1</session-timeout>
</session-config>
四 httpSession接口中的方法
(1)getId方法
(2)getCreationTime方法
(3)getLastAccessedTime方法
(4)setMaxInactiveInterval方法
(4)getMaxInactiveInterval方法
(5)isNew方法
* 如果客户端请求消息中返回了一个与Servlet程序当前获得的HttpSession对象的会话标识号相同的会话标识号,则认为这个HttpSession对象不是新建的。
(6)invalidate方法
(7)getServletContext方法
(8)setAttribute方法
(9)getAttribute方法
(10)removeAttribute方法
(11)getAttributeNames方法
五 HttpServletRequest接口中的Session方法
(1)getSession方法
ü public HttpSession getSession(boolean create)
ü public HttpSession getSession()
(2)isRequestedSessionIdValid方法
(3)isRequestedSessionIdFromCookie方法
(4)isRequestedSessionIdFromURL方法
注:注销的操作就是让这次会话强制的结束
六 httpSession初始化参数的比较
获取会话对象 ---------方法重载----功能是一样的
HttpSession session = request.getSession(true);
HttpSession session = request.getSession();
功能是:如果session对象不存在 创建session对象或者
如果session存在,获取session对象的引用
HttpSession session = request.getSession(false);
功能:如果session对象不存在 返回的是null
如果session存在 返回的是session对象的引用
实例应用:用户只要在登入了之后才可以购物,不肯能没有登入随便购物
LoginServlet.class 登入
HttpSession session = request.getSession();
Session.setAttribute(“name”,name);账号
转到web的其他页面去查看
BuyServlet.class:
List cart 购物车
Cart.add(good);
//不让在其他的页面中创建,而是获取,设置为fasle之后,条件不成力,不能往下执行
HttpSession session = request.getSession(false);
If(session==null){
跳转到登入的页面
}
Session.add(cart);
分享到:
相关推荐
系统session通常用于存放共享信息,例如用户请求和应用状态等,而报表session则存放与报表相关的访问信息,比如报表模板的访问情况等。 FineReport是一种报表开发工具,它在Web应用中的session处理机制与传统Web...
【session简介】 在Web开发中,session是一种关键的技术,用于在客户端和服务器之间保持状态。本文将深入探讨session的工作原理,以及在Java Web应用程序中如何有效地利用session。 **一、术语session** 在不同的...
本文将深入探讨PHP Session的配置与应用,以及如何在实践中运用它们。 一、PHP Session的基本原理 PHP Session的工作原理基于客户端和服务器之间的交互。当用户访问网站时,服务器创建一个唯一的Session ID,并将...
【Session的应用】 Session在Web开发中扮演着关键的角色,它是维持用户会话状态的一种机制。当用户打开浏览器访问网站并交互时,Web服务器通过Session来跟踪和管理每个用户的状态信息,比如用户登录状态、购物车内容...
于是,session机制应运而生,它在服务器端存储用户状态,通过一个唯一的session ID与客户端进行关联。 session的工作流程如下:当用户访问网站并登录时,服务器创建一个新的session,并分配一个唯一的session ID。...
与Session不同,Cookie存储在客户端,这意味着它们可以在用户关闭和重新打开浏览器后仍然存在,但容量有限,一般不超过4KB。Cookie通常用于存储登录状态、用户首选项等不敏感信息。 创建Cookie也很直观,比如`...
本文将深入探讨Cookie和Session的工作原理、应用场景以及如何在Java Web项目中进行有效利用。 **Cookie** Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,用于在客户端和服务器之间传递状态信息。它...
【跨服务器session应用详解】 在Web开发中,session机制是一种至关重要的技术,它允许服务器在多个请求之间跟踪用户的状态,从而实现动态交互和个性化服务。本文将深入探讨session的工作原理,以及如何在Java Web...
### Session概念及基本应用 #### 一、Session概念解析 **Session** 在计算机科学领域,尤其是在Web开发中,指的是服务器为了识别每个用户并保持用户的特定状态而采用的一种机制。简单来说,Session是一种用来追踪...
总结起来,JavaScript操作Session的关键在于利用表单提交或Ajax通信与服务器进行交互。虽然JS直接修改服务器端Session有困难,但通过以上方式可以巧妙地实现数据在客户端和服务器之间的传递,从而达到管理Session的...
Session2电子商务应用方案.pptx
### Cookie、Session、Application 的区别与应用 在 ASP.NET 中,为了存储用户的状态信息或临时数据,开发人员经常使用多种内置的对象,例如 Application、Session、Cookie、ViewState 和 Cache 等。这些对象各有...
每次客户端请求服务器时,都会携带这个Session ID,服务器据此识别出是哪个用户的请求,并获取到与之关联的Session数据。 Session的应用场景非常广泛,包括但不限于: 1. 存储登录信息:用户登录后,可以将用户名...
js中session的应用,在javascript中应用session,对页面前台全局变量有很好的应用
JSP内置对象session和application的应用 JSP(Java Server Pages)是一种服务器端脚本语言,用于生成动态网页。JSP内置对象是JSP提供的一些预定义对象,通过这些对象,可以访问和操作服务器端的资源。其中,session...
【标题】:“session机制与cookie机制(来源于IT168)” 【描述】:这篇文章讨论了session和cookie在Web开发中的重要角色,解释了它们如何帮助维持用户状态,并且介绍了这两种机制的基本概念。 【标签】:“session...
在.NET开发中,Session和Application是两种非常重要的全局存储机制,它们主要用于在Web应用程序中管理用户的状态信息...总之,理解和掌握Session与Application的使用是构建高效、用户体验良好的Web应用程序的关键步骤。
在探讨“IFrame中Session丢失的解决办法”这一主题时,我们首先需要理解Session与IFrame的基本概念及其在Web开发中的交互方式。Session是Web应用中用于存储用户特定信息的一种机制,它允许开发者在用户的会话期间...
然而,当涉及到多个应用程序时,标准的Session机制通常不会跨应用程序共享数据。本篇文章将深入探讨如何在ASP.NET中实现不同应用程序之间的Session共享。 **1. Session工作原理** Session在ASP.NET中基于HTTP协议的...
### ASP.NET Session的应用详解 #### 一、Session概念与作用 Session,即会话状态,是Web开发中不可或缺的一部分,尤其在ASP.NET框架下,它被广泛用于维护与当前浏览器实例相关的用户信息。例如,存储已登录用户的...