内容包括:
必备知识:
会话跟踪实现主要有3种方式:
a. SSL 这种方式我们 先不研究
b. cookies
会话跟踪 的实现 可以基于 会话cookie,这种cookie 是在浏览器内存中的 名字必须叫jsessionid, 如果浏览器禁用了cookie 那服务器端就不能跟踪会话了 ,就要采用url重写
如果客户端没禁止cookie ,也可以吧cookie 保存在客户端的硬盘上 ,这种cookie是持久cookie ,用户在每次访问一个url的时候 浏览器会吧这个url域下的cookie发到服务器上,服务器根据自己关心的cookie的名字来跟踪会话。迅雷看看记录播放历史就是这样干的
c. URL 重写
就是在所有的页面跳转上加上 encodeURL() 或者 encodeRedirectURL(),之中方式是由于容器在处理动态页面或者action的时候会自动添加 ;jsessionid=?????? 的字符串 来标示会话,对于静态页面就无能为力了,不过我们可以吧静态页面改造成动态页面来解决 比如吧11.htm 改成tt.jsp
测试项目结构:
例子1:使用会话cookie 和URL重写 追踪会话 需要的3个servlet
LoginServlet 使用会话cookie 会话跟踪的servlet
GreetServlet 使用会话cookie 登陆后打印会话信息
LogoutServlet 使会话失效
结论:如果客户端没禁止cookie 会话跟踪成功,如果客户端禁止了cookie.则每次都是新的会话,会话跟踪失败
iE 禁止cookie
访问 登陆servlet 看到IE 下面的提示: 红色的部分标示IE拒绝了回话cookie
对于这种方式我们就只好用URL重写了 ,重写以后再访问登陆页面 发现后面已经有了服务器生成的 jsessionid, 浏览器和服务器就可以使用这个标识来传递会话了
例子2:使用持久cookie(保存在用户的硬盘上)追踪会话 需要的2个 servlet
LoginServlet2
GreetServlet2
附件中试测试源码
分享到:
相关推荐
下面是一个简单的JSP会话跟踪示例: ```jsp ; charset=UTF-8" %> // 获取或创建会话 HttpSession session = request.getSession(); // 设置属性 session.setAttribute("username", "John"); // 从会话中...
例如,如果一个购物车应用使用SSB,那么Bean可以跟踪用户的购物选择,直到用户完成购买。这种状态保留使得SSB适合处理复杂的业务流程,其中多个步骤涉及相同的数据。 2. 无状态SessionBean(Stateless Session Bean...
在这个“Servlet会话小例子”中,我们将深入探讨如何利用Servlet、RequestDispatcher和ServletContext接口来管理用户会话,并通过文件“HomeWork”进一步理解其实现。 首先,Servlet是Java EE规范的一部分,它提供...
本教程将通过一个聊天室小例子,深入探讨这三个概念及其在ASP.NET中的具体应用。 首先,让我们了解这三者的基本含义: 1. **Application**:在ASP.NET中,`Application`对象代表了整个应用程序域的共享状态。它...
无状态SessionBean对每个请求都创建一个新的bean实例,不保留任何特定客户端的信息;而有状态SessionBean则可以保存客户端的状态信息,适用于需要跟踪用户会话的情况。 Oracle数据库是广泛使用的的关系型数据库管理...
每个客户端会话都对应一个唯一的Session Bean实例,它能记住客户端的上下文信息,适合处理需要跟踪用户状态的情况,如购物车或在线游戏。 实现有状态Session Bean的步骤与无状态类似,但需要使用`@Stateful`注解,...
Session是ASP.NET中的一个关键概念,它允许开发者在用户浏览器的不同请求之间保持状态信息。以下是对"session例子"的详细解析: 1. **Session的基本概念** Session是一种服务器端的技术,用于跟踪用户的会话状态。...
例如,我们可以创建一个`ShoppingCartSFSB.java`,它包含一个`addItem`方法,每次调用都会将商品添加到用户的购物车中: ```java @Stateful public class ShoppingCartSFSB implements ShoppingCartSFSBLocal { ...
例如,一个SSB可能实现一个货币转换服务。无论哪个用户请求汇率,SSB都只依赖于输入参数,而不会存储任何与特定用户相关的信息。 三、两者之间的区别 1. 状态维护:SFSB维护会话状态,而SSB不维护。 2. 性能:由于...
服务器为每个会话分配一个唯一的ID(session_id),并将这个ID通过Cookie返回给客户端。客户端在后续请求时将session_id带回去,服务器根据这个ID查找对应会话的数据。 2. 特点: - 存储位置:Session数据存储在...
- 生命周期:有状态SessionBean在客户端首次调用时创建一个实例,并在整个会话期间保持活动。当客户端完成所有操作并调用`remove()`方法时,或者达到预设的会话超时,Bean才会被销毁。 - 实现方式:实现`javax.ejb...
Session的主要目的是跟踪用户在同一个会话中的活动。例如,购物车功能就需要使用Session来存储用户选择的商品,即使用户在页面之间跳转,购物车内容也能保持不变。此外,Session还可以用于实现用户登录状态的维持,...
Session Bean是Java EE中的一个概念,它代表了一个业务逻辑组件,允许客户端通过远程接口与服务器进行交互。本教程将深入探讨有状态和无状态Session Bean的区别和使用场景,通过具体的例子来加深理解。 首先,让...
在压缩包中的例子中,你可能会找到一个名为` StatelessExample `的类,它实现了无状态SessionBean的接口,并提供了一些业务方法。 接着,我们转向有状态SessionBean(Stateful Session Bean)。与无状态SessionBean...
在Web开发中,Cookie和Session是两种非常重要的用户身份管理和会话跟踪技术。它们都是用来在客户端和服务器之间存储和传递信息的方式,但各有特点和适用场景。本篇将通过具体的示例代码来深入理解Cookie和Session的...
会话跟踪是Web应用程序中一个重要的概念,尤其是在需要保持用户状态的情况下,如购物车、在线注册或个性化用户体验等。`HttpSession`接口提供了创建和管理用户会话的功能,允许服务器存储和检索特定用户的数据。 **...
Session存储的数据存在于服务器端,因此安全性相对较高,但会占用服务器内存,且不适合大量用户并发的场景,因为每个用户都会创建一个独立的Session。 **ViewState**: ViewState是ASP.NET中用于保持页面控件状态的...
总的来说,这个压缩包为Java开发者提供了一个学习EJB Session Bean的良好起点,无论是有状态还是无状态,都能帮助你更好地理解和应用这一强大的组件。在实践中,结合其他Java EE技术,如JPA(Java Persistence API)...