- 浏览: 38727 次
- 性别:
- 来自: 北京
文章分类
JSF是JAVA EE规范的一部分。它是:Java Web应用的用户界面框架。
l JSF提供一套API以及标签库,用来创建页面表单以及复杂的界面元素
l JSF使得编写表单提交的代码更加简单,这些代码可以响应那些不同的按钮提交,改变某些值或某些用户的选择等等
l Managed beans:使得JSF简化了处理请求参数的方法
l EL(Expression Language):JSF有一套表达式语言用来访问java bean的属性以及集合元素等。
l 提供表单域类型转换以及验证
实现包
Apache的myfaces包是第一个开源的JSF实现。Myfaces有一些扩展的包,这些包是对JSF标准组件的扩充,可以协助我们更加快速的开发。Myfaces的扩展包括:
* Tomahawk <shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="width: 70.5pt; height: 15pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata></shape>:myfaces提供了一系列远远超过规范规定的组件,这些组件可以兼容JSF1.1的参考实现,以及其它兼容JSF1.1规范的其它实现,当然也兼容myfaces的JSF实现。
* Tobago:目标是提供一套基于JSF以及myfaces的良好设计的UI组件。Tobago不仅仅只是一套标签库。下面的几点让它与其它框架不同:
- 无需HTML设计,聚焦于商业应用程序的开发。开发者可以将精力集中在用户界面上,而不是网页。
- UI组件是对HTML的抽象,它不仅仅可以用于HTML页面,它的输出格式可以定制。
- “主题”机制,使得可以很容易切换应用程序的外观。
- 布局管理器可以自动排列组件,这就意味着无需使用HTML表格或其它技术来手工管理组件的布局。
* Trinidad:JSF1.1的组件库
最新的myfaces包(版本是:<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-US">1.1.1</span></chsdate>)是对JSF1.1规范的实现。
UI组件模型
JSF提供一套丰富灵活的组件模型,包括:
l 一套UIComponent类,定义UI组件的状态和行为。
l 呈现模型:定义如何用不同的方式来呈现组件
l 事件和监听器模型用来处理组件的事件。
l 转换模型:进行数据转换
l 验证模型:如何验证数据的合法性
UI组件类
比如UIForm、UIInput等等,具体请参考文档。
组件呈现模型
不同的组件会有不同的呈现方式,同一个组件可能会有不同的呈现方式,比如UISelectOne,可以使用radio来呈现,也可以使用下拉框来呈现等。这些,都是通过呈现模型来定义的。
数据转换模型
当一个组件绑定到一个对象上之后,对于组件数据来说,总共有两个视图:
一个是模型视图:从这个角度去看,数据表现为java对象的类型,如int ,long,Date等等
一个是呈现视图:从这个角度去看,数据表现为一种可以被人读取或修改的形式。比如一个Date类型,可能被展现为一个yyyy-MM-dd格式的字符串,或者是三个字符串,分别代表年、月、日。
可以定义自己的转换器来转换数据。
事件与监听器模型
事件:值改变事件、动作事件、数据模型事件。
值改变:比如输入框的值被更改、选中了checkbox等
动作事件:点击按钮或超链接
数据模型事件:UIData组件的一行被选中的时候触发这个事件。
导航模型
Navigation-rule,可以包含一个from-view-id和多个navigation-case
每个navigation-case中,主要包括转向的页面。
From-view-id : 当前页面
From-action:从哪个action方法
From-outcome:从哪个逻辑名称
To-view-id:转向哪个页面
安装JSF:下载http://java.sun.com/j2ee/javaserverfaces/download.html
1、在Eclipse中添加JSF的支持:
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <img height="356" alt="" src="http://www.blogjava.net/images/blogjava_net/freeman1984/clip_image002.jpg" width="553" border="0"><br><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype>
不要选择Install JSF Jars and packaged TLDS和Install JSF TLDs,因为我们要安装的版本跟Eclipse支持的版本不一样,我们用的是新的版本。在MyEclipse中添加支持的目的,是为了可以使用MyEclipse的页面导航设计器,避免我们手工编写页面导航的繁琐性。
点击完成即可。
myEclipse添加了JSF的配置文件和修改了web.xml文件!
为了跟新版本的myfaces配合,我们最好将web.xml中关于myfaces的配置全部按照下面的说明重新配置一遍:
我们的例子以myfaces的实现包以及Tomahawk的扩展包作为学习JSF的起点。
依赖包可以在tomahawk-examples-1.1.6-bin/myfaces-example-blank-1.1.6.war中找到。
2、添加依赖包:
将依赖包拷贝到WEB-INF/lib下面,如果已经有的包,可以选择覆盖或不覆盖,然后解决其中版本有冲突的包,将低版本的包去掉!
冲突的包主要包括:commons-collections,commons-fileupload,commons-lang,commons-logging
3、修改web.xml文件,添加如下内容:
l 指定配置文件的位置
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
l Tomahawk的过滤器,用于解释那些扩展的功能
<filter>
<filter-name>extensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
l Myfaces的Servlet
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
4、在WEB-INF目录下,添加faces-config.xml配置文件
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd" >
<faces-config>
</faces-config>
下一篇将结合MyEclipse对JSF的支持来开发JSF的程序。
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<filter>
<filter-name>extensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd" >
<faces-config>
</faces-config>
发表评论
-
Tomcat解决URL传中文的方法
2007-09-28 19:03 892在TOMCAT-HOME/conf/server.xm ... -
介绍两个jsp上传组件commons-fileupload和SmartUpload(部分来自网页)
2007-09-28 21:39 1105第1个上传组件commons-fileupload ==== ... -
仍一个能增减行的javascript
2007-10-08 18:52 742<html><head> <s ... -
jFreeChart(动态web应用)
2007-10-09 14:12 763JFreeChart 1.0.2的动态应用,根据数据库中的 ... -
jFreeChart初探(静态应用)
2007-10-09 14:17 591初学JFreeChart,整理一个例子:(部分来自网页) ... -
初探tomcat连接池
2007-10-11 18:30 551相关工具: tomcat版本5.5 ,mysql,drp(数据 ... -
初探struts中的(Converter)的一个例子
2007-10-18 19:09 584Struts中的Converter可以将一些特定对象转换成字符 ... -
other
2007-10-19 18:23 649最近正在抽时间研究jive的源代码,如果有谁想 ... -
struts(il8n)实现国际化的一个例子
2007-10-19 20:45 833struts利用在session中放一个local对象来 ... -
struts中自定义taglib函数例子
2007-10-21 12:43 645首先建立自己的函数:package com.struts; ... -
一个从另一个打开页面返回值的javascript例子
2007-11-16 14:52 776今天写项目的时候用到了需要从另一个打开页面取值的j ... -
struts中利用ExceptionHandler处理异常
2007-11-22 13:33 660在Struts1.X的版本中加入了对异常的处理 ... -
DWR学习及应用
2007-11-25 20:31 645DWR是一个开源的类库,可以帮助开发人员开发包含AJAX技术 ... -
java群
2007-12-03 20:25 63刚健了一个java群,用于大家互相探讨java,共同促进学习, ... -
ibatis学习(三)---ibatis与spring的整合
2007-12-07 18:26 2002Spring通过DAO模式,提供了对iBATIS的良好支持 ... -
ibatis学习(二)--ibatis使用介绍
2007-12-07 18:27 716SqlMapClient对象 这个对象是iBatis操作 ... -
ibatis学习(一)--ibatis介绍以及用例
2007-12-07 18:31 649介绍 iBATIS是以SQL为中 ... -
dwr实现级联菜单
2007-12-08 10:39 790Dwr的介绍请见:http://www.blogjava. ... -
JSF学习及应用二-(用例)
2007-12-11 09:41 567实例1 1、 创建一个JSP 2、 在相同的路径下,用. ... -
JSF学习及应用三-(与spring整合)
2007-12-11 09:46 658JSF与Spring整合的原理是获得彼此的上下文引用,以此 ...
相关推荐
JavaServer Faces (JSF) 是一种基于组件的Web应用程序开发框架,由Sun Microsystems(现为Oracle Corporation的一部分)开发,旨在简化用户界面构建。JSF2是该框架的第二主要版本,引入了许多改进和新特性,使得它...
**JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...
在"JSF第一步--JSF+Spring+Hibernate+AJAX编程实践 试读"这本书中,读者可以期待学习如何设置这些技术的集成环境,创建JSF组件,配置Spring容器,理解Hibernate的映射和查询机制,以及如何在JSF中使用AJAX进行异步...
JSF是Java平台上的一个标准用户界面框架,用于构建Web应用程序。而Spring Boot则简化了Spring应用的初始设置和配置,提供了一种快速开发新服务的方式。版本号2.2.6表明这是该项目的一个稳定版本,通常包含了错误修复...
通过对这个源码的学习,开发者可以了解JSF应用的基本结构,如何创建和配置Managed Beans,以及如何设计和管理视图。同时,示例代码可能涵盖了错误处理、AJAX支持、国际化等方面,这些都是JSF开发中的关键点。 **7. ...
**JSF 2.0(JavaServer Faces 2.0)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。这个"JSF2.0-hello-world-example-2.1.7.zip"是一个示例项目,用于帮助开发者了解如何在JSF 2.0环境...
另一本JSF入门教程,可能涵盖了JSF的基础概念、环境配置、第一个JSF应用的创建、数据绑定、导航控制等内容。它是系统学习JSF的基础,与API手册配合使用效果更佳。 通过这些资料,你将能够全面了解JSF的基础知识,...
4. **示例或测试代码**:演示如何使用Ajax4jsf的实例,帮助开发者理解和学习如何集成到自己的JSF应用中。 5. **文档**:可能包含API文档、用户指南、开发人员手册等,提供关于如何使用和扩展框架的详细信息。 6. **...
JavaServer Faces(简称JSF)是Java平台上的一个用于构建Web应用程序的MVC(Model-View-Controller)框架。JSF 2.x是其第二个主要版本,带来了许多增强特性和改进,使得开发更加高效和简单。这个"JSF-2-Hello-World-...
3. **JSF与Spring Boot的集成**:学习如何使用`jsf-spring-boot-autoconfigure`来简化JSF在Spring Boot应用中的集成,包括配置、依赖管理和部署。 4. **Java客户端开发**:掌握如何设计和实现一个Java客户端,包括...
示例项目对于初学者尤其有价值,它们展示了JSF 1.2如何实际工作,以及如何配置、部署和运行一个JSF应用。通过学习和分析这些例子,开发者可以快速掌握JSF 1.2的关键特性和最佳实践。 总的来说,JSF 1.2是Java Web...
通过阅读`jsf-doc`,开发者可以获得对JSF概念的深入了解,学习如何配置JSF应用,以及如何解决常见问题。 #### JSF 1.2 的核心概念与特性 - **组件模型**:JSF 1.2基于组件模型,允许开发者组合和定制UI组件。`...
JSF(JavaServer Faces)是Java平台上的一个MVC(模型-视图-控制器)框架,用于构建用户界面,特别是Web应用。 【描述】"ant-get-free-port.zip" 提供了一个Ant插件,这个插件的主要功能是帮助开发者在程序运行时...
JavaScript Server Faces(JSF)是Java平台上用于构建Web应用程序的一种模型-视图-控制器(MVC)框架。作为Java EE的一部分,它为开发人员提供了一种结构化且组件化的编程模型,简化了用户界面的创建和维护。在这个...
【标题】"weld-jsf-translator-war-2.0.0.Beta4.zip" 提供的是一个基于 Weld 和 JSF 的翻译器战争工件,它属于 JavaServer Faces (JSF) 应用程序的组成部分。Weld 是 CDI (Contexts and Dependency Injection) 框架...
在这个“jsf+ejb3 实例-员工管理系统”中,我们将深入探讨这两个技术在构建一个实际应用中的融合和作用。** **JSF简介** JavaServer Faces (JSF) 是一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它...
【标题】"weld-jsf-translator-war-2.2.0.CR2.zip" 提供的是一个基于Weld和JSF的翻译器Web应用的战争(WAR)文件,版本为2.2.0.CR2。Weld是Java EE平台中的CDI(Contexts and Dependency Injection)规范的参考实现...