选择自 lessoft 的 Blog
1概述:
JSF(Java Server Faces)是基于MVC模式的新一代web framework,是一套JCP支持的新一代web开发规范,各个厂商可以定义自己的JSF实现,使开发更加容易.
JSF具有一下优点: (1)基于MVC,可以有效的将数据显示与业务逻辑分开处理.(2)有功能强大丰富的web开发组件,可以可视化的设计开发web应用程序.(3)事件驱动,这是JSF比较重要的特点,这种机制大大减少了开发时间,提高了开发效率.
2.配置
JSF是一个标准的web framework,是以Servlet为调度核心,因此,如果想正常运行JSF程序,必须把JSF作为servlet来运行,后缀名为:.faces,示例代码如下(web.xml):
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
也需要把JSF的几个库文件(jsf-*.jar)放到web应用程序的lib下.
JSF是作为Servlet来运行,也有自己的配置文件,就是上面param所指定的faces-config.xml,这个文件中配置了JSF正确运行需要的一些信息,包括managed-bean(将JSF web页面中需要的bean以managed的方式配置起来,这样,就可以在web 页面中直接调用该bean 的属性和方法),navigation-rule(JSF页面之间的流转/调度配置)…….
JSF程序在web页面中也表现为custom tab,也就是说,JSF也跟strtus一样,有自己的一套tab library,它通过解析这些tag来实现对JSF程序的控制.目前,JSF有2套tab:jsf_core.tld和html_basic.tld,从名字上可以看出来,第一个主要是核心JSF程序使用的tag,包括view(所有的JSF程序都必须有的tag),loadBundle(资源相关),validator(校验相关)等等.第二个是web页面设计相关的的一些html组件tag,这些组件,可以组成普通或者复杂的web应用程序.
这里提一下,JSF最主要的特性之一,事件驱动,就是通过html组件来体现的,在定义了一个按钮(commandButton)以后,只要定义一下它的action,就可以直接的将这个动作映射到后台的某个managed-bean的某个方法上,这样,大大减少了原来中间层的javascript调用,也就缩短了开发时间,并且,也减少了中间出错的几率.
3.最简单的例子
想迅速了解JSF的运行机制以及使用JSF,我试着做一个最简单的例子,来观察JSF的运行.例子的基本想法是:两个基本的jsp页面(基于JSF的,也就是说,要引入JSF的tag lib),一个后台的Bean,Bean中有一个示例的可以调用的方法.在第一个页面中,有一个按钮,将按钮的action对应到Bean中的方法(通过faces-config.xml的managed-bean来定义),这样,当点击按钮的时候,调用该方法,并且,页面跳转到第二个web页面(通过faces-config.xml的navigation-rule来定义).
通过一番紧张的配置,写代码,查错,改错……,例子终于可以正确运行,达到了我想预期的目标,具体各个文件可能如下:
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config >
<managed-bean>
<managed-bean-name> demo </managed-bean-name>
<managed-bean-class> com.doublebridge.sm.web.bean.DemoBean </managed-bean-class>
<managed-bean-scope> request </managed-bean-scope>
</managed-bean>
<navigation-rule>
<navigation-case>
<description>Add a new user</description>
<from-outcome>addUser</from-outcome>
<to-view-id>/userDetail.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
两个jsp页面分别为userList.jsp和userDetail.jsp,上面的配置文件意思就是说,当我调用到”addUser”action的时候,页面就跳转到userDetail.jsp.定义的demo是DemoBean的实例,是由JSF来初始化,在web页面中直接调用即可.
userList.jsp
这个文件中,会有这样一块儿代码:
<f:view>
<h:form id="UserListForm" rendered="true">
<h:outputText>[tag outputText]</h:outputText>
<h:commandButton value="Exec Add User" rendered="true" action="#{demo.addUser}" id="btnAddUser" image="images/BuyBtn.gif" type="submit"/>
</h:form>
</f:view>
定义了JSF页面需要的最基本的view,html-form和一个command button,通过点击这个command button 来调用后台的demo.addUser方法,来实现真正的业务逻辑.这个过程中,我么不必考虑JSF是如何把这个demo.addUser对应到后台的方法上的,只要写这样对应写,就可以了.
userDetail.jsp
如果写都可以了.这个例子中,userDetail.jsp只是一个流转点.
DemoBean.java
package com.doublebridge.sm.web.bean;
public class DemoBean {
public String addUser(){
System.out.println("exec addUser");
return "addUser";
}
}
注意:这里该方法要定义为String类型,返回的字符串就是在faces-config.xml中定义的navigation-rule -> navigation-case - > from-outcome,JSF也就是通过这个来找到userDetail.jsp页面进行调度的.
通过这个例子,我们可以大致明白了JSF的一些基本原来和运行方式,接下来,我们就可以仔细研究每个html控件的方法和属性,以及jsf-core中其它的一些tag,能够带给我们的好处了.
注意事项:
1.Jboss4.03SP1自己带了MyFaces的实现,所以,当我们自己的实现是
Reference Implementation的时候,会与Jboss出现冲突,所以,需要删除(Rename)一些文件,tomcat5.5下jsf-lib目录.
分享到:
相关推荐
JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架一样,JSF定义了一套JSF标签 JSF的全称 1、Joint Strike Fighter (JSF) 2、Java Server ...
### Manning-JSF Java Server Faces in Action (2005) #### 标题解析与扩展知识点 **标题**:“Manning-JSF Java Server Faces in Action (2005)”明确指出本书是关于Java Server Faces(JSF)技术的一本指南书籍...
### JavaServer Faces (JSF) 入门学习资料解析 #### JSF简介 JavaServer Faces (简称JSF),是Sun Microsystems公司(现为Oracle公司的一部分)于2004年3月发布的一种用于构建企业级Java Web应用的标准框架。JSF的...
JavaServer Faces (JSF, or simply “Faces”) makes it easy to develop web applications by bringing support for rich, powerful user interface components (such as text boxes, list boxes, tabbed panes, ...
通过《JavaServer Faces (JSF) in Action》这本书,读者可以深入理解JSF的工作原理,学习如何设计和实现高效的JSF应用,以及如何解决实际开发中遇到的问题。无论你是初学者还是经验丰富的开发者,都能从中受益。
JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。...
《JSF核心编程 第二版》是一本深入探讨JavaServer Faces (JSF)技术的专业书籍,作者通过详尽的讲解和实例,为读者揭示了JSF框架的核心概念和实际应用。这本书不仅涵盖了JSF的基本原理,还包含了最新的JSF 2.0版本的...
JavaServer Faces(JSF)是Java平台上用于构建Web应用程序的官方标准框架,它提供了一种组件化、事件驱动的方式来创建用户界面。《JavaServer Faces核心编程(第3版)》是一本深入探讨JSF技术的专业书籍,源码的提供...
JavaServer Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端框架,它简化了Web应用程序的开发,尤其在处理表单提交、页面导航和组件管理等方面。本资源为《JavaServer Faces核心编程(第3版)》一书的源...
《JavaServer Faces核心编程(第3版 中文完整版)》是Java开发领域的一本经典著作,主要聚焦于JavaServer Faces (JSF) 技术的深入理解和实践应用。JSF是Java EE平台中的一个用于构建用户界面的组件模型框架,它提供了...
内容简介:通过本书的学习,读者能够最大限度地应用Java Server Faces和创建专业的JSF程序,以实现快速构建Java wed应用的基本架构。书中首先对度层和相关技术进行了综述,接着介绍了如何编写并部署JSF应用程序,...
JavaServer Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端Web应用程序框架,它专注于简化开发和管理用户交互的复杂性。JSF 1.2是该框架的一个早期版本,发布于2006年,是JSF规范的第二版。在本文中,...
《JavaServer Faces核心编程(第3版)》全面透彻地讲解JSF2.0,指导您驾轻就熟地掌握JSF 2.0的卓越功能。无论您是在Glassfish(或其他符合Java EE 6标准的应用服务器)上开发Java EE 6Web应用程序,还是在诸如Tomcat 6...
### JavaServer Faces (JSF) 实战:关键技术与实践 #### 一、JavaServer Faces (JSF) 简介 JavaServer Faces (JSF) 是一个基于Java EE标准的服务器端用户界面组件框架,它提供了创建丰富且交互式的用户界面的能力...