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事件监听器来监测数值改变的事件等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值