会话
什么是会话?
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
会话过程中要解决的一些问题?
每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据。
例如:多个用户点击超链接通过一个servlet各自购买了一个商品,服务器应该想办法把每一个用户购买的商品保存在各自的地方,以便于这些用户点结帐servlet时,结帐servlet可以得到用户各自购买的商品为用户结帐。
提问:这些数据保存在request或servletContext中行不行?
保存会话数据的两种技术:
Cookie
Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
Cookie API
javax.servlet.http.Cookie类用于创建一个Cookie,response接口也中定义了一个addCookie方法,它用于在其响应头中增加一个相应的Set-Cookie头字段。 同样,request接口中也定义了一个getCookies方法,它用于获取客户端提交的Cookie。Cookie类的方法:
public Cookie(String name,String value)
setValue与getValue方法(设置和获取Cookie的值)
setMaxAge与getMaxAge方法(设置和获取Cookie的有效期,如果不设置,默认为浏览器的缓存,即关闭浏览器的时候,Cookie就会失效。如果设置有效期,Cookie就会保存到硬盘。)
setPath与getPath方法(设置Cookie的有效路径,即如果Cookie的有效路径为/com/sevlet,那么Cookie只有在访问/com/sevlet下的资源的时候才有效。)
setDomain与getDomain方法(设置Cookie的有效域,比如:www.google.com setDomain(".google.com"),这样设置在访问.google.com这个域下面的内容时,Cookie有效。)
getName方法(就是得到Cookie的名称)
//查看Cookie中的方法,明确每个方法的用法。
HttpServletResponse中有一个addCokie(Cookie cookie)方法(用于打印Cookie)
HttpServletRequest中有一个getCookies()方法,得到一个Cookie数组。
Cookie细节
一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。
注意,删除cookie时,path必须一致,否则不会删除。
session
在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
分享到:
相关推荐
ASP.NET还提供了多种会话状态模式,如In-Proc(进程内,即默认的内存存储)、StateServer(使用独立的会话状态服务器)、SQLServer(存储在SQL Server数据库中)和Custom(自定义存储)。每种模式都有其适用场景和优...
- **会话Bean (Session Bean)**:分为有状态和无状态两种,用于封装业务逻辑操作。 - **消息驱动Bean (Message-Driven Bean)**:处理JMS(Java Message Service)消息。 ### 2. 有状态会话Bean (Stateful Session ...
***和ASP是两种不同的技术,虽然它们都可以用于编写Web应用程序,但它们的会话状态管理方式存在差异。***是在ASP基础上发展起来的,与ASP相比,它提供了更多的特性和改进。但是,在实际的网站开发过程中,我们仍然...
在Web应用开发过程中,会话状态跟踪是实现用户个性化体验和服务连续性的重要环节。所谓“会话状态跟踪”,即系统通过某种方式记录并跟踪用户的活动状态,以便于在不同请求之间保持一致性,提供定制化服务。本文将...
实战EJB之三开发会话Bean(有状态会话Bean) ...有状态会话Bean是EJB中的一个重要组件,可以在客户引用期间维护Bean中的所有实例数据的状态值,开发有状态会话Bean需要正确地理解其生命周期和开发过程。
这是很好的会话与状态ppt,实际例子,值得收藏!
在网页开发中,保持会话状态是一个至关重要的任务,尤其是对于需要存储用户...这展示了如何在 ASP.NET 应用程序中利用 SQL Server 有效地管理会话状态,即使在跨越多个服务器的环境中也能确保数据的持久性和一致性。
特别是在基于ASP.NET的应用程序中,开发者需要掌握如何管理和利用会话状态来提高应用程序的功能性和用户体验。本文将详细介绍在ASP.NET中实现会话状态的基础知识。 #### 什么是会话状态? 会话状态(Session State...
在IT领域,尤其是在Web开发中,会话状态(Session State)管理是确保用户交互连续性和数据完整性的重要环节。然而,在实现这一功能时,开发者可能会遇到“无法序列化会话状态”这一常见问题,这通常发生在试图将非...
在本文提供的ejb_02_Client和ejb_02这两个文件夹中,可能包含了演示如何使用EJB创建和调用有状态和无状态会话Bean的示例代码。通过研究这些代码,你可以更深入地了解这两种类型的Bean如何工作,以及如何在实际项目中...
ASP.NET作为ASP的升级版,在会话状态管理方面进行了改进和扩展。ASP.NET同样使用Session对象,但提供了更多的选项和更高效的实现。它支持四种会话状态模式: 1. In-Process:默认模式,会话数据存储在ASP.NET应用...
QQ在线状态查看和即时会话是互联网通信中常见的功能,特别是在中国的社交场景中,QQ作为腾讯公司推出的一款即时通讯软件,具有广泛的用户基础。本文将深入探讨如何查看QQ用户的在线状态以及如何进行即时会话。 首先...
在EJB中,无状态会话Bean是最简单的类型,它不保持任何客户端会话状态。这意味着每次客户端调用方法时,Bean都不会记住之前的状态。这种设计模式使得无状态会话Bean特别适合执行轻量级的、不涉及用户特定状态的操作...
QQ在线状态查看和即时会话是互联网通信中常见的功能,主要应用于社交软件,例如QQ。这一功能使得用户能够实时了解联系人的在线状态,并且能够快速发起即时会话进行沟通。以下将详细介绍这两个核心概念以及相关的技术...
在SharePoint环境中,这个问题尤为常见,因为SharePoint默认会禁用会话状态以提高性能和减少服务器资源消耗。 当遇到"ASP.NET 的会话状态已禁用。报表查看器控件要求在本地模式下启用会话状态"这样的错误信息时,...
### Java基础会话与状态详解...会话管理和状态保持对于提供个性化服务至关重要。Cookie和Session作为两种主要的技术手段,各有优缺点。开发者应根据实际需求合理选择和应用这两种技术,以实现高效且安全的Web应用开发。
如何使用 ASP.NET 实用工具加密凭据和会话状态连接字符串