JavaServer Faces技术与应用

JavaServer Faces技术与应用

 

 

什么是框架(Framework):

一堆组件协同运作的机制,该系统更具扩充性、维护性。(J2EEStruts……

J2EE(EJB,JMS,JavaMail,Portal,JDBC,JTA/JTS,JNDI,RMI,Socket,LDAP)

Struts(validationActionActionForm。。。)

 

技术的演进:(CGIASPServletJSPFramework)

CGI应该说是Web应用的祖先了,它实现了用户浏览器与服务器的交互。这是个划时代的进步,但是它的开发太复杂。随后微软推出ASP技术,ASP使开发变得非常简单,这也使得ASP在一段时间内风靡全球。不久Sun也推出了ServletSunCGI解决方案)技术,但是Servlet要在Java代码中嵌入很多的HTML代码使得代码比较混乱,而且不便于维护,这样Sun又推出了JSPJSPServlet恰恰相反是在HTML代码中嵌入很多Java代码。这点和ASP有点类似。但是都很混乱,逻辑和显示没有分开导致它们成为了不伦不类的东西,而且很难调试,MVC模式的引入使这种局面有所改观,JSP开发者可以选择Mode1Mode2的方式进行开发,能够勉强的使业务逻辑和显示的分离,但这样并不完善,混乱依旧,WEB框架在这种背景下诞生了,WEB框架(例如Struts)大多是基于MVC设计模式,他们定义了自己的一套规范,分别把业务逻辑,显示和流程控制分开,开发者只要按照他们的规范进行开发,就可以开发出低耦合,高维护的WEB应用程序

 

名词解释:

Model 1JSP为中心的开发模型。

当然这种开发模式在进行快速和小规模的应用开发时,是有非常大的优势,但是从工程化的角度考虑,它也有一些不足之处:应用的实现一般是基于过程的,一组JSP页面实现一个业务流程,如果要进行改动,必须在多个地方进行修改。这样非常不利于应用扩展和更新。

由于应用不是建立在模块上的, 业务逻辑和表示逻辑混合在JSP页面中没有进行抽象和分离。所以非常不利于应用系统业务的重用和改动。

Model 2 :表示的是基于MVC模式的框架。

 

JSTL JSP 标准标记库(JSTL)是 JSP 1.2 定制标记库集,这些标记库实现大量服务器端 Java 应用程序常用的基本功能。通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,JSTL 使 JSP 作者可以专注于特定于应用程序的开发需求,而不是为这些通用操作“另起炉灶”。

 

什么是JavaServer FacesJSF

是一个使用者界面框架(UIFramework),专门用来开发以Java为基础的Web Application的展示层部分,用此框架可使Web ApplictionUI的开发上更具扩充性、维护性。

 

JavaServer Faces目的

Ø        便于开发、加速开发

Ø        开发角色分离

Ø        Web UI标准化、组件化

 

JSF相关知识介绍

Ø        现今所遇到的开发挑战

Ø        怎样分离开发角色

Ø        JSF要解决的问题

 

现今所遇到的开发挑战:

1,用户界面(User Interface 与业务逻辑(Model)无法完全分离。

2,就算使用表达式语言(Expression Language 和标签库(Tag Library)仍然无法完全分离

3,没有实现真正的MVC设计模式(MVC Design Pattern),Struts也一样。

4View层应该能产生事件(Event),使系统唤起事件管理者(Event Handler),开发者再利用Event Handler进行逻辑处理

5,种类繁多的客户端

目前Framework太多,大多假设客户使用的是浏览器,且使用html作为标记语言

 

开发角色的分离:

Ø        JSF是真正的MVC

MVCModelViewController的简写。"Model" 代表的是应用的业务逻辑(通过JavaBeanEJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

我对MVC的理解:

M:实现业务逻辑

C:选择业务逻辑

V:显示处理结果

Ø        开发角色的分离 View的开发

View的开发可以由网页开发人员和组件开发者来完成,网页开发者负责完成页面的设计,组件开发者可以开发应用所需要的组件(如:菜单和树等组件)供应用程序开发者使用,而且也可以用别人已经开发好的组件,这样在以后随着组件越来越多、越来越丰富会使得在View这层的开发更简单,更具扩展性。

Ø        开发角色的分离 Model的开发

由应用程序开发者负责。

Ø        开发角色的分离 Controller的设置

由应用程序开发者负责。

 

JSF要解决的问题:

Ø        JSF要解决的问题―便于开发

1,开发工具机密结合

Project RaveSun ONE StudiojBuilderEclipse

2,正的MVC-开发角色分离

JSF网页开发者(View设计)

应用程序开发者(负责ModeController

组件开发者(扩充现有的组件或开发新的组件)

工具厂商

Ø        JSF要解决的问题—事件驱动

JSF组件的解释:每个页面包括一些 JSF 组件用来描述 WEB 控件,如表单、输入框、按钮等等(可以理解为小到一个按钮或一个输入框是一个组件,大到一个树形菜单或一个Form也是一个组件),组件可以嵌入另一个组件中,正如输入框可以在表单中。每个 JSP 页面就这样表示为组件树。

 

JSF规定了2种事件处理方式,一种是ActionListener另一种是ValueChangeListener

如果是一个按钮就可以注册为ActionListener,如果是一个输入框或复选框等等就可以注册为ValueChangeListener,当鼠标单击按钮时就会触发ActionListener事件,当你在输入框中改变一个值提交后就会触发ValueChangeListener事件。

 

 

JSF要解决的问题—支持不同的客户端

名次解释:

ØJSF Core Library
1
,基本程序运作(生命周期控制、事件处理)
2
UI组件架构(UI Component Library

ØRender
Server端的UI组件转换成任何一种浏览器都可解释执行的语言

ØRenderKit
一堆Render的组合

 

 

JSF具备以下特点

1,能够与开发工具搭配使开发更方便

2,不局限与一种浏览器

3,不一定只能和JSP搭配

 

JSFStruts的比较

相同之处:
1,都采用标签库(taglib)来处理表示层。

2,二者都采用了JavaBean来保存jsp页面上的数据。(struts中就是FormBeanJSF中就是back bean

3,都采用bean作为控制层。(StrutsActionBeanJSFBacking Bean

4,都采用xml配置文件来处理页面导航等问题,增加了系统的灵活性。

5,都采用资源文件来处理国际化和本地化的问题

 

不同之处:

1,二者的侧重点不同。Struts侧重于控制层而JSF侧重于表示层。

2,控制层:
Struts
通过FormAction来提交请求,通过ActionServlet来分发请求,最后由ActionBean来处理请求。
JSF
采用事件模式处理用户提交的请求,JSF实现了事件监听器来监测事件,例如当用户单击了一个按钮就会触发一个按钮单击事件,还有valuechange事件监听器来监测数值改变的事件等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您是从使用的角度来看 JSF,则您不用理会HTTP、数据转换等细节,JSF 将细节 都隐藏起来了,无论您是网页设计人员或是应用程序设计人员,都可以使用自己熟悉的方式 来看JSF。 • 入门 藉由以下的几个主题,可以大致了解JSF 的轮廓与特性,我们来看看网页设计人员 与应用程序设计人员各负责什么。 o 简介 JSF o 第一个 JSF 程序 o 简单的导航 Navigation o 导航规则设置 o JSF Expression Language o 国际化讯息 • Managed Beans JSF 使用 Bean 来达到逻辑层与表现层分离的目的,Bean 的管理集中在组态档 案中,您只要修改组态档案,就可以修改 Bean 之间的相依关系。 o Backing Beans o Beans 的组态与设定 o Beans 上的 List, Map • 数据转换与验证 转换器(Converter)协助模型与视图之间的数据转换,验证器(Validator)协助 进行语意检验(Semantic Validation)。 o 标准转换器 o 自订转换器 o 标准验证器 o 自订验证器 o 错误讯息处理 o 自订转换, 验证标签 • 事件处理 JSF 的事件模型提供一个近似的桌面GUI 事件模式,让熟悉GUI 设计的人员也能 快速上手Web 程序设计。 o 动作事件 o 实时事件 o 值变事件 o Phase 事件 JSF 标签 Tellixu 整理 2005-12-16 JSF 教程 2 网页设计人员要作的就是了解JSF 的标签的使用方式,这就像是学习进阶的HTML 标 签,另一件事就是与程序设计人员沟通好各个Bean 的名称绑定。 • 标签入门 卷标的相关属性查询,您可以参考 Tag Library Documentation,这边的介绍只 是一些简单的入门实例。 o 简介 JSF 标准标签 o 输出类标签 o 输入类标签 o 命令类标签 o 选择类标签一 o 选择类标签二 o 其它标签 • 表格处理 对于必须使用表格方式呈现的数据,JSF 的 <h:dataTable> 卷标协助您进行动 态表格数据的输出。 o 简单的表格 o 表头, 表尾 o TableModel 类别 自订组件 JSF 让您可以自订组件,每个组件都是可替换的,这使得组件在搭配时更有弹性,但 相对的却使开发组件的过程复杂的多,这边对自订JSF 组件只是个入门砖,更多有关自订 组件的细节可得要专书来说明。 • JSF 生命周期与组件概述 要开发 JSF 组件,您需要更深入了解 JSF 的一些处理细节,包括了 JSF 生命周 期以及 JSF 框架。 o JSF 生命周期 o 概述自订组件 • 简单实例 在不考虑组件有子组件的情况下,这边以实际的一个例子来说明开发组件的过程, 至于考虑子组件的情况请参考专书介绍。 o 编码, 解碼 o 组件卷标 o 使用自订组件 o 自订 Renderer

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值