当前位置: 首页 > 图文教程 > 网络编程 > JSP > 高级页面流(Page flow):嵌套、异常处理和 Global.app

JSP
我认为JSP有问题(上)
我认为JSP有问题(下)
jsp“抓”网页代码的程序
关于在bean里面打印html的利弊看法
bean里面如何打印到html页面
jdbc3中的RowSet 接口规范
Apusic Application Server1.0中jsp源代码泄漏漏洞
Unify的eWave ServletExec拒绝服务漏洞
通过提交超长的GET请求导致IBM HTTP Server远程溢出
在HTTP请求中添加特殊字符导致暴露JSP源代码文件
Resin 1.2 重要源代码暴露漏洞
多中WEB服务器的通用JSp源代码暴露漏洞
Tomcat 暴露JSP文件内容
IBM WebSphere Application Server 暴露JSP文件内容
JRun 2.3.x 范例文件暴露站点安全信息
BEA WebLogic 暴露源代码漏洞
IBM WebSphere Application Server 3.0.2 存在暴露源代码漏洞
Tomcat 3.1 存在暴露网站路径问题
Sun Java Web Server 能让攻击者远程执行任意命令
Netscape 修复 JAVA 安全漏洞

JSP 中的 高级页面流(Page flow):嵌套、异常处理和 Global.app


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 544 ::
收藏到网摘: n/a

基本页面流框架能够为Web项目的一组页面集中管理导航状态和逻辑。尽管这比以往的Web开发模式有了明显的进步,但随着导航逻辑遍布各个页面、状态被存储在众多会话对象当中,某些更高级的页面流特性可以使您的项目更加出色和强大。

本文假定读者熟悉如何在WebLogic Workshop中构建和运行页面流。文中将会介绍三个特性:嵌套、声明性异常处理、Global.app。

嵌套

默认情况下,在一个新页面流中执行动作会导致当前页面流失效,这使得您可以为项目的不同部分创建独立的控制器,并最小化了每次用户会话需要保存的数据量。每个页面流管理它自己的状态和逻辑。在WebLogic Workshop IDE中,将控制权交给另外一个页面流用一个代表外部页面流的暗淡的终端节点表示。


想要更深入地了解高级页面流?请下载 本文附带的作者示例应用。
页面流嵌套使开发人员可以更好地将项目分解成独立的、自包含的功能块。它的核心功能是把当前页面流暂时放在一边,并将控制权交给另外一个页面流,该页面流将来会返回到原来的页面流。

什么时候应该使用页面流嵌套呢?当执行以下任务时嵌套十分有用:

  • 从用户那里搜集用于当前页面流的数据
  • 允许用户改正错误,或在执行特定动作的过程中提供额外信息
  • 为当前页面流中的数据提供另外一种显示视图
  • 显示在当前页面流中有用的用户信息(例如,帮助窗口)
让我们从一个简单的例子开始。在这个场景中,用户被要求选择一种颜色并根据选定的颜色被重定向到不同的页面。如果没有嵌套,页面流(/noNesting/noNestingController.jpf)可能是这样的:


如果颜色选择的部分更为复杂(比如在继续之前需要一个确认过程),就可以采用一个嵌套页面流来替代chooseColor.jsp,它同样可以满足要求(位于/simpleNesting/simpleNestingController.jpf):

嵌套页面流的一个重要特性是它可以替代页面的许多工作。嵌套页面流可以启动动作,甚至可以进行“post”,或者用表单进行初始化。通常,总是可以用嵌套页面流来替代页面。以下是该嵌套页面流的流程视图/chooseColor/chooseColorController.jpf:

该页面流允许用户选择一种颜色,请求确认,然后在原来的页面流上启动一个动作。该页面流出于激活状态时,原来的页面流被保存在用户会话中(位于堆栈中)。当该页面流结束时,被保存的原页面流上的“chooseRed”或“chooseBlue”动作将被激活。

创建和使用嵌套页面流是相当简单的。页面流向导提供了一个“make this a nested page flow”选项,它可以用类一级的注解@jpf:controller将新页面流定义为嵌套页面流:

/**

* @jpf:controller nested="true"

*/

public class chooseColorController extends PageFlowController