Java Server Faces(JSF)历险(一)

从今天开始研究JSFJava Server Faces),JSF作为最新的MVC框架,得到了sun等业界技术领袖的支持,我相信JSF必然会超越StrutsTapestry成为主流开发技术。以后的系列日志会记录我学习JSF的历程。

Getting Start

1.       安装,下载如下软件包:
Java JDK 1.4.1
Tomcat 5.0+(
我曾经用过Tomcat5.5,它的配置有些不同,另外,多数IDE5.0的支持更好)
Java Server Faces
实现,SUN提供了参考实现,我选择了ApacheMyFaces

2.       开发工具
好的IDE可以使我的工作事半功倍,我选择了Eclipse+NitroX 3 Studio,在Matrix.org.cn可以找到破解。NitroX是我认为最好的Eclipse插件。另外,MyEclipse4也很好。如果你不想用D版,我推荐Exadel,它的Free版本提供了大量的功能,但是Exadel的下载地址有问题,你可以给support@exadel.com发邮件要一个可用地址。另外,建议安装PropertiesEditor,它对properties文件提供类似native2ascii的编码操作。

3.       NitroX中建立一个Web Application,新建一个JSF页,login.jsp

<!DOCTYPE HTML PUBLIC "-//W 3C//DTD HTML 4.01 Transitional//EN">

<%@ page language="java" contentType="text/html; charset=gb2312" %>

 

 

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<!—绑定资源文件,需要在src目录下建立resources/application.properties,如果使用NitroX,新建的web工程中就自带-->

<f:loadBundle basename="resources.application" var="msgs"/>

<f:view>

<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<!—引用资源文件的内容,这里作用相当于<%=%>h:outputTextJSF静态文本tag(以上都是我现在的理解)-->

  <title><h:outputText value="#{msgs['login.title']}"/></title>

</head>

<body><p></p><p></p>

<h:form>

<table align="center" border="1">

<tr>

<td><h:outputText value="#{msgs['login.username']}"/></td>

<!—绑定User类的username属性,User类是JSFmanaged bean(在faces-config.xml注册的),下面会介绍。下面的语句相当于<input type=”text” value=”<%=user.getUsername()%>”>-->

<td><h:inputText value="#{user.username}"/></td>

</tr><tr>

<td><h:outputText value="#{msgs['login.password']}"/></td>

<td><h:inputSecret value="#{user.password}"/></td>
"<!—action代表了一个系统事件,点击按钮就会触发该事件,本例子中的事件名称为login,它需要在faces-config.xml中定义-->
</tr><tr><td><
h:commandButton action="login" value="#{msgs['login.action']}"/></td><td></td></tr></table></h:form></body></html></f:view>

再建立一个:welcome.jsp

<!DOCTYPE HTML PUBLIC "-//W 3C//DTD HTML 4.01 Transitional//EN">

<%@ page language="java" contentType="text/html; charset=gb2312" %>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<f:loadBundle basename="resources.application" var="msgs"/>

<f:view><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  <title>欢迎</title>
</head><body><h3><
h:outputText value="#{msgs['welcome']}"/><h:outputText value="#{user.username}"/></h3></body></html></f:view>

 

 

4.       src(如果用NitroX,则为WEB-INF/src/java)目录下建立resources目录,并建立一个application.properties文件。这个文件必须是GBKGB2312编码,可以在文件属性中设置。
如果要编辑中文,要在Properties Editor

#login
login.username=用户名:
login.password=密码:
login.title=系统登录
login.action=登录
#welcome
welcome=欢迎您,

5.       声明User

package net.chinasam.learning.jsf;
import java.io.Serializable;
public class User implements Serializable {
         private static final long serialVersionUID = 4300075184736836406L;
         private String username;
         private String password;
         public String getPassword() {return password;}
         public void setPassword(String password) {this.password = password;}
         public String getUsername() {return username;        }
         public void setUsername(String username) {this.username = username;}}

6.       Managed Bean
User作为JSFManaged Bean,你可以使用IDE提供的可视化编辑工具,也可以在faces-config.xml中直接编辑:

<managed-bean>
<!—Bean的名字,在JSP中使用的user.username就是来自这里-->
    <managed-bean-name>user</managed-bean-name>      <managed-bean-class>net.chinasam.learning.jsf.User</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>  </managed-bean>

7.       导航规则

我们要求在login.jsf页面输入用户名和密码,然后进入welcome页面,该页面输出login.jsp输入的用户名。

<!—下面的导航规则告诉系统,从login.jsp产生一个login事件,改事件的结果就是页面导航到welcome.jsp-->
<navigation-rule>
    <from-view-id>/jsflearning/login.jsp</from-view-id>
    <navigation-case>
<!—这个就是我们提到的事件名称-->
        <from-outcome>login</from-outcome>
        <to-view-id>/jsflearning/welcome.jsp</to-view-id>
    </navigation-case>  </navigation-rule>

8.       其他工作

你必须加入myfaces.jarpackage,修改web.xml文件,将jsf的功能加入进来。幸好IDE环境已经帮助我们作了这些工作,不过还是了解一下的好。

9.       启动Tomcat,本来没有什么好说,但是还是要注意,NitroX下需要在run…References中配置一下。并且,你访问的是*.jsf而不是以前的*.jsp了,因为web.xml的代码决定了只有.jsf才可以使用JSF:

<servlet-mapping>

       <!-- Faces Servlet Mapping -->

       <servlet-name>faces</servlet-name>     <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架一样,JSF定义了一套JSF标签 JSF的全称   1、Joint Strike Fighter (JSF)   2、Java Server Faces (JSF) Java Server Faces (JSF)   JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。由于由Java Community Process (JCP) 推动,属于Java EE 5中的技术规范,而受到了厂商的广泛支持。   JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架一样,JSF定义了一套JSF标签,能够生成与JavaBean属性绑定在一起的HTML表单元素。从应用开发者的角度看,两种框架十分相似,但是JSF可能会得到更多的支持,因为JSFJava的标准。在未来的发展中,有可能所有的J2EE应用服务器都需要支持JSFJava Server Faces技术好处   引入了基于组件和事件驱动的开发模式,使开发人员可以使用类似于处理传统界面的方式来开发Web应用程序。提供了行为与表达的清晰分离。 不用特别的脚本语言或者标记语言来连接UI组件和Web层。JSF技术API被直接分层在Servlet API的顶端。 技术为管理组件状态提供一个丰富的体系机构、处理组件数据、确认用户输入和操作事件。 Java Server Faces应用程序   典型的JSF应用程序包含下列部分:   一组JSP页面   一组后台bean(为在一个页面上的UI组件定义的属性和函数的JavaBean组件)   应用程序配置资源文件(定义页面导航规则、配置bean和其它的自定义对象,如自定义组件)   部署描述文件( web.xml )   一组由应用程序开发者创建的自定义对象(有可能)   一些可能包含自定义组件、约束、转换器或者监听器的对象   为在页面中表现自定义对象的一组自定义tag   包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam
如果您是从使用的角度来看 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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值