2.3.5 应用集成
现在,我们已经完成了详细设计的大部分任务,包括项目的创建、业务逻辑的编写、网页的编写和页面导航的配置,不过,这些都是相对独立的部分,我们必须通过应用集成,将其组合起来,成为一个整体。
应用集成的任务
通常我们在设计Web应用时,会采用三端体系结构。三端体系结构从逻辑上将应用分解为三个“层”,又称“端”,分别是表示层、业务层和数据层。应用集成的任务,就是将这三个层联系起来,如图 2 15所示。
|
| 图 2 15 Web应用的三端体系结构和应用集成的任务 |
在我们的应用中,没有数据层,因此,应用集成的任务就是联系业务层和表示层。具体来说,只有两项任务:
在页面导航中加入业务逻辑;
在页面之间传递参数。
导航的控制
在JSF中,导航的控制,实际上是利用了JSF框架的事件驱动模式。关于事件驱动模式的详细讨论,我们放在后面的章节中,这里仅仅介绍一下与导航控制相关的事件及其响应。
JSF的某些UI组件可以触发事件,例如,WebLogin中的“确定”按钮组件和“重新登录”超级链接组件都可以触发一种称为action的事件。一旦JSF侦测到有action事件被触发,JSF框架立即启动导航机制,准备导航。
那么,JSF框架是根据什么信息来控制导航的呢?其实很简单,JSF框架的导航依据就是action事件处理例程的返回值。当某个组件触发action事件时,JSF框架自动调用该组件的action事件处理例程,而JSF规范规定,action事件的处理例程必须返回一个String,这个String与导航配置中的哪个出口相等,JSF就选择哪个导航出口,于是该出口对应的网页,就被显示出来。
静态导航和动态导航
JSF的导航方式有两种类型,一种是静态导航,另一种是动态导航。
所谓静态导航,是指在导航设计时就能够定下来的导航走向。在WebLogin中,我们有一个静态导航,那就是从Retry.jsp到Login.jsp的导航。从Retry.jsp到Login.jsp的这个导航走向是无条件的,不需要任何判断逻辑,在设计时我们就能定下来,而不需要等到运行时来动态确定,因此,这是一个静态导航。
相反,从Login.jsp出发的两个导航路线,即“登录成功”和“登录失败”,则是动态导航。在设计时,我们只知道有这两种可能的导航走向,而具体选择哪个导航出口,则需要在运行时,根据用户输入的正确与否来判断。这种在设计时无法确定下来的导航走向,就需要用到动态导航。动态导航需要在导航时加入判断逻辑来动态选择。
图 2 16示出了静态导航和动态导航的区别。
|
| 图 2 16 静态导航和动态导航的区别 |
| 回书目 上一节 下一节 |