`

JSF MVC 流程

 
阅读更多
序言

在JAVA社区里,WEB应用的开发一直存在开发难的问题。从开始的最简单的CGI程序,到JSP,SERVLET。虽然说JSP/SERVLET的出现大大减轻了开发的难度,但稍微复杂点的WEB应用,就会产生大量重复代码,后来为了解决这些问题,先后出现了诸如Struts, Spring等优秀的框架,并得到了很大推广。在这些基础上,Java社区进程(Java Community Process:JCP),包括Sun Microsystems、Oracle、Borland、BEA、IBM以及一群业内知名的Java和Web专家,开始制作JSF规范请求,最初的Java规范请求(JSR127)起始于2001年中期,并于2004年3月,正式公开发布了JavaServer Faces规范和参考实现。

什么是 JSF?

JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的标准 Java 框架。它的目的是简化WEB应用程序的开发。它基于组件技术,并提供了以此为中心来开发 Java Web 用户界面的方法,从而简化开发。JSF框架体系完美地集成了具有良好构建的模型-视图-控制器 (MVC) 设计模式,确保了应用程序具有良好的可维护性。另外,因为JSF 是由 Java Community Process (JCP) 开发的一种 Java 标准,所以完全可以得到各大开发工具供应商的支持,为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。

JSF的体系结构

上面提到了JSF体系框架中的模型-视图-控制器 (MVC) 设计模式。我们具体来看看。典型的JSF应用:用户请求JSF页面,首先会统一把请求交由FacesServlet(Controller),FacesServlet里经过一系列的处理,调用业务模型(Model)处理,最后把JSP页面内容(View)展现给用户。

JSF的生命周期:

JSF把整个用户请求明确地分成了6个阶段,每个阶段完成不同的任务。一个典型JSF请求分成以下6个阶段:

  1. Restore View Phase:重载视图阶段
  2. Apply Request Values Phase:应用请求值阶段这个阶段主要做2件事:第一,把用户提交的数据设置到组件中去;第二,把用户事件(比如按下按钮等)加到事件队列。
  3. Process Validations Phase:数据检查阶段这个阶段主要做数据的合法性检查,如果用户输入了非法数据,则在画面上显示相应的错误消息。
  4. Update Model Values Phase:更新模型值阶段把组件里的值设置到Model中去。
  5. Invoke Application Phase:用户业务逻辑阶段主要处理用户按钮事件等,调用业务逻辑处理(action)。
  6. Render Response:重画画面阶段画面描画和展现。


为了便于理解,用下面2个图加以说明:
JSF的生命周期 概要图

JSF的生命周期(详细):


备注1:重载视图组件树(Component Tree)
备注2:如果设置了按钮等的immediate属性设置为true,且被提交的数据格式正确无误的情况下,则把用户提交的数据设置到组件(Components)中去,如果有Converter等,则调用Converter做变换。
另外:processValidators阶段(immediate为false),如果有Converter等,且被提交的数据格式正确无误,则调用Converter做变换。
备注3:把组件里的值设置到BackingBean。
备注4:Action Event处理。

从上图可以看出,组件在JSF里起着中心关键的作用。基本上所有的处理都是围绕着组件为中心。

但对于一般开发人员,他们可以不用关心组件的实现,只专注于业务逻辑(Model)方面的处理就行了。从用户请求到业务逻辑(Action Event)处理,JSF框架几乎为我们作了所有的其他工作。我们除了在JSP里写几个关联标签之外(如:<h:outputText value="#{mybean.userName}" />把用户名关联到Mybean中username属性;<h:commandButton action="#{mybean.onLogin}" />把该按钮事件关联到Mybean中的onLogin方法),可以完全不用管这个请求是怎么调用我们的业务逻辑处理的。

JSF中的组件

JSF除了提供了一系列的标准组件之外,还提供了接口供开发者开发自己的组件。

JSF组件的实现也非常灵活,一个JSF组件一般由(标签:Tag,组件:Component, 描画器:Renderer)三部分组成。它同样体现了MVC的设计思想,作到了数据和显示的分离。同一套组件,可以由不同的描画器(Renderer)描画,从而展现给用户不同的界面。

总结:

JSF在不牺牲开发能力和灵活性的前提下提供高效的以组件为中心的开发,使得以JSF开发的WEB应用具有高度的可扩展性,解决了Java Web 开发中的许多历史问题,大大降低了开发难度。同时由于它的开放性和标准性,将得到越来越多的开发商和开发人员的青睐。


分享到:
评论

相关推荐

    JSF教程(有关jsf实例的操作步骤)

    JSF的核心理念是将用户界面组件与后端业务逻辑分离开来,提供了一个模型-视图-控制器(MVC)架构。 **1. JSF组件库** JSF提供了丰富的组件库,包括按钮、表单、输入字段、表格、菜单等。这些组件可以通过XML声明在...

    JSF全套(JSF入门教+ LIB+ Ajax4JSF使用手册 )

    JavaScript Faces (JSF) 是Java平台上的一种用于构建用户界面的模型-视图-控制器(MVC)框架,它简化了Web应用程序的开发。本资源包包含了JSF从入门到进阶的多个方面,包括基础教程、核心组件库(LIB)、Ajax4JSF的使用...

    JSF的工作方式 JSF架构 JSF模型 JSF事件类型

    JSF的工作流程可以分为六个主要阶段,这些阶段在每次用户请求时都会自动执行: 1. **恢复视图(Restore View)**:当客户端发起请求时,JSF首先检查是否存在先前创建的视图。如果存在,JSF会恢复这个视图,即重新...

    精通JSF中文教程精通JSF中文教程

    通过导航规则,JSF可以控制用户操作后的页面跳转,实现动态的页面流程。 **7. JSF生命周期** JSF组件有六个主要的生命周期阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用和渲染响应。理解这些阶段...

    core jsf 1.2 jsf 核心

    JSF遵循MVC(Model-View-Controller)设计模式,将业务逻辑、视图呈现和用户交互分离开来,使得开发者能够更专注于各自领域的代码编写。JSF的核心组件包括UI组件、事件处理、数据绑定和转换验证。 ### 2. UI组件库 ...

    基于JSF,SQL SERVER2005的学生管理系统

    通过使用JSF,开发者可以创建可重用的UI组件,这些组件可以通过声明式的方式与数据源绑定,从而简化了Web应用的开发流程。 在"基于JSF,SQL SERVER2005的学生管理系统"中,JSF主要负责处理用户交互和展示数据。...

    JSF定义及原理

    JSF通过将托管Bean的属性和方法直接绑定到UI组件上,实现了MVC模式的无缝集成,进一步简化了开发流程。 #### 五、JSF与HTTP协议 尽管Web应用基于HTTP协议,其本质是非事件驱动的,但JSF通过封装HTTP请求和响应的...

    拍卖系统jsf+ejb+jpa

    在IT行业中,`JSF(JavaServer Faces)`、`EJB(Enterprise JavaBeans)`和`JPA(Java Persistence API)`是三个重要的Java技术,常用于构建企业级的应用系统,特别是拍卖系统这样的业务流程复杂的场景。这里我们将深入...

    jsf入门列子和jsf与Tiles结合

    JSF基于模型-视图-控制器(MVC)架构,提供了丰富的组件库和生命周期管理,使得开发者能够更加便捷地创建动态、数据驱动的网页。 在上述的JSF入门例子中,我们首先看到的是`UserBean.java`,这是个简单的实体类,...

    JSF示例程序(很详细)

    JavaScript Faces (JSF) 是Java平台上的一种用于构建用户界面的模型-视图-控制器(MVC)框架。这个压缩包文件包含的"JSF示例程序"是为初学者准备的,旨在提供详尽的指导,帮助他们快速理解和掌握JSF的基本概念、组件...

    jsf-api-2.0.3.jar.zip_jsf api_jsf jar包_jsf-api-2.0.3.jar_jsf-api

    JSF(JavaServer Faces)是Java平台上的一种用于构建用户界面的MVC(Model-View-Controller)框架。它提供了一种声明式的方式来创建Web应用程序,允许开发者通过组件和事件处理来构建用户界面,而无需深入HTML和...

    用jsf做的登录注册的组件

    1. **JSF架构**:JSF采用MVC(Model-View-Controller)设计模式,它提供了组件化UI开发的能力。模型负责业务逻辑,视图负责展示,控制器负责处理用户请求并更新模型。 2. **JSF组件**:JSF的核心是UI组件库,如`h:...

    JSF实战(中英版)

    - JSF作为MVC(Model-View-Controller)架构的一部分,提供了模型、视图和控制器的实现,使得开发者可以专注于业务逻辑而不必过多关心用户界面的细节。 - JSF通过XML配置文件定义页面组件和行为,使用EL...

    JSF sample

    JSF工作流程主要分为四个步骤:渲染、提交、应用请求值和更新模型值。当用户与页面交互时,JSF会处理表单提交,将输入数据映射到后台Bean的属性,并执行相应的动作。JSF通过Facelets作为默认视图技术,允许开发者...

    jsf1.2 jar包下载

    JavaServer Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端Web应用程序框架,它遵循Model-View-Controller(MVC)设计模式。JSF 1.2是该框架的一个较早版本,发布于2006年,提供了一系列增强功能和改进...

    JsfDemo入门例子

    通过"JsfDemo入门例子",初学者可以快速掌握JSF的基本概念和工作流程。从创建第一个JSF页面,到连接Managed Bean,再到处理用户事件,你将逐步了解如何使用JSF搭建一个完整的Web应用。实践是最好的老师,动手尝试这...

    jsf

    **JSF(JavaServer Faces)**是Java平台上用于构建用户界面的MVC(Model-View-Controller)框架,主要用于Web应用程序开发。它提供了一种声明式的方式来创建动态、交互式的Web界面,允许开发者将界面组件与后端业务...

    jsf+spring 实例

    SWF为JSF提供了更强大的流程控制能力,而SpringFaces则是Spring社区为了更好地集成JSF而创建的项目。 **4. 整合步骤** - 配置Spring:在Web应用的`web.xml`中配置Spring的DispatcherServlet,并添加Spring的上下文...

    seam+jsf+richfaces+ajax4jsf 电子书

    Seam作为整合框架,可以帮助管理和协调JSF、RichFaces和Ajax4jsf的交互,实现更高效的开发流程。例如,Seam可以自动处理RichFaces和Ajax4jsf组件之间的通信,提供统一的依赖注入和事务管理。通过Seam,开发者可以更...

    JSF API帮助文档

    JSF提供了一种声明式的方式来创建用户界面,并且它与MVC(模型-视图-控制器)设计模式紧密集成。这个API帮助文档是开发者理解和使用JSF的关键资源。 在JSF中,**组件** 是构建用户界面的基本单元,它们可以是简单的...

Global site tag (gtag.js) - Google Analytics