使用 Acegi 保护 Java 应用程序,第 4 部分: 保护 JSF 应用程序
2010-03-18 00:00:00 来源:WEB开发网您已经了解了如何配置 Acegi 保护 JSF 应用程序。也看到了当启动 JSF-Acegi 应用程序时发生的一系列事件。本节描述当用户发送一个对受 Acegi 保护的 JSF 页面的请求时,JSF 和 Acegi 组件如何在 servlet 容器的框架中运行。
图 2 展示了当客户机发送一个对受 Acegi 保护的 JSF 页面的请求时,发生的事件顺序:
图 2. JSF 和 Acegi 协作提供 JSF 页面
详细来讲,图 2 展示的事件顺序如下所示:
servlet 容器创建一个表示用户请求的 servlet 请求对象。
回想一下 启动 JSF-Acegi 应用程序 小节中的第 3 步,JSF 的 ConfigureListener 实现 ServletRequestListener 接口。这意味着 ConfigureListener 侦听与创建和删除 servlet 请求对象相关的事件。因此,servlet 容器调用 ConfigureListener 类的 requestInitialized() 方法。
requestInitialized() 方法准备执行请求的 JSF 生命周期。准备过程包括检查请求的 faces 上下文是否存在。faces 上下文封装与应用程序资源相关的信息。faces servlet 执行 JSF 生命周期时需要这些信息。如果此请求是新会话的第一个请求,就会缺少 faces 上下文。在这种情况下,requestInitialized() 方法创建一个新的 faces 上下文。
servlet 容器检查用户的请求是否带有任何状态信息。如果 servlet 容器未找到状态信息,它会假设该请求是新会话的第一个请求,并为用户创建一个 HTTP 会话对象。如果 servlet 容器发现该请求包含某种状态信息(比如一个 cookie 或 URL 中的某种状态信息),它就会根据保存的会话信息恢复用户以前的会话。
更多精彩
赞助商链接