用户名: 密码: 免费注册 忘记密码? 加入收藏 | 设为首页
基于JSF开发实战经验
学院首页 | 资讯中心 | 服务器软件 | 系统工具 | 系统软件 | 办公软件 | 聊天软件 | 多 媒 体 | 网页制作 | 网站运营 | 平面设计
艺术欣赏 | 数据库软件 | 程序开发 | 网络组建 | 源码下载 | 驱动下载 | 软件下载 | 电脑安全 | IT创业 | IT博客 | IT社区
硬件数码导航 | 硬件频道 | 本本频道 | MP3频道 | 相机频道 | 手机频道 | 显卡频道 | LCD 频道 | 音箱音频 | 行情 | 评测 | 导购
学院专题 软件 - 系统 - 办公 - 聊天 - 多媒体 - 网页制作 - IT创业 - 运营 - 平面 - 设计欣赏 - 数据库 - 程序 - 服务器 - 组网

 当前位置: 首页>>技术频道>>程序>>JSP教程>>正文

基于JSF开发实战经验

日期:2006-9-15 4:26:08     来源:JR   编辑:   

JSF是什么?JSF为广大基于JAVA的 Web应用用户界面的开发人员提供了标准的编程接口、丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 UI组件)、事件驱动模型等一套完整的Web应用框架,通过 JSF ,您可以在页面中轻松自如地使用 WEB 组件、捕获用户行为所产生的事件、执行验证、建立页面导航…,同时您会发现,当使用支持JSF的开发工具来开发 JSF 应用的时候,一切将会变得异常简单,就类似于我们现在开发VB或者PowerBuilder程序一样的简便,GUI方式拖放组件、修改组件属性、建立组件间关联以及编写事件侦听器等等,这样,一个并不是特别熟悉Java的Web应用开发人员也能够轻松地完成自己的任务了,这种易开发性对于J2EE而言无疑是太重要了


JSF的开发流程和asp.net中所倡导的code behind方式很相似,核心是事件驱动,组件和标签的封装程度非常高,很多典型应用已经不需要开发者去处理http 。 页面操作会被自动映射到对应的java bean中,后台逻辑只需要同java bean发生交互 。 整个过程是通过“依赖注入(DI)”来实现的,看来这是目前解偶合的最佳途径啊,spring的影响真是深远 。 不过正式因为jsf采用了这样的方式,导致开发工作和以前的jsp/struts等都有非常大的不同,需要一定的时间去学习 。 学习之前建议先对依赖注入有比较清楚的认识,可以参考我的learn Spring in spring系列的第一篇 。

  本系列将以两个例子来讲解jsf的基本开发,第一个例子当然是hello world 。 目前可用的jsf ide不多,ibm要到06年才能放出支持jsf的wtp版本 。 所以我们的例子基本以手写为主,这样也能让我们有更清楚的认识,同时推荐目前最好的jsf开发工具:myeclipse 4.0 GA 。 后面的例子将会有jsf和hibernate的内容,它都能给予很好的支持 。 由于myeclipse并不免费,所以我们除了讲解在ide中如何操作外,还会叙述手动操作的具体内容,以免过于依赖开发工具 。 用什么服务器都可以,这里采用了jboss 4.0.2 。 如果你的服务器是高版本的tomcat(5.5+),那么必须要删除它自带的一些包才能很好的支持jsf,具体细节请查看它的文档 。

请自行下载jsf ri和JSTL 1.1 。

废话少说,开始了 。

在myeclipse 4.0GA中新建一个web项目,命名为hello,为项目增加对JSTL的支持:


在JSTL的版本中选择1.1 。
该操作实际上是把jstl.jar和standard.jar加到工程中 。

采用类似的操作为项目添加对jsf的支持:myeclipse—add jsf capabilities
如图:

其中的jsf implementation是选择使用哪中JSF实现,我们采用的是sun的jsf ri
JSF config path是配置文件的位置,保持不变
URL pattern是jsf servlet的映射方式,有两种选择,具体细节后面说明 。
以上操作上是为项目加入了jsf需要的jar和tld文件,并且创建了一个faces-config.xml的配置文件 。 涉及到的jar有:commons-beanutils.jar commons-collections.jar commons-digester.jar commons-logging.jar jsf-api.jar jsf-impl.jar
涉及到了jsf中所有的tld文件 。

当前的faces-config.xml文件的内容是:
<?xml version="1.0" encoding="UTF-8"?>
http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<FACES-CONFIG>

</FACES-CONFIG>

环境已经建立好了,现在我们要建立一个程序,它的功能是让用户在表单中输入名字,提交后系统会返回一个问候 。 使用jsf的以后好处是,开发人员会很自然的把mvc各层分开,不会像使用strtus那样别扭,这一点在后面的开发中感觉得到 。

首先开发model层,它是个很简单的bean:
package org.bromon.jsf.model.hello;
public class SayHello {
public String say(String name)
{
return "你好,"+name;
}
}

在model层中你可以随意的实现业务的数据逻辑,不需要与web层有任何的关系 。

下面开发控制层,它负责存取web层的数据,并且调用model层的逻辑:/**
* jsf的控制层方法
* @author bromon
*/
package org.bromon.jsf.control.hello;

import org.bromon.jsf.model.hello.*;

public class HelloDelegater {

//------属性---------
private String name;//表单中的文本框数据会传到这里
private String result;//web页会从这里取得运行结果
private SayHello sayHello;//model层的对象,并不事例化,由系统注入

//-----set/get--------
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public SayHello getSayHello() {
return sayHello;
}
public void setSayHello(SayHello sayHello) {
this.sayHello = sayHello;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}

//-----逻辑方法---------
public String say()
{
this.setResult(sayHello.say(this.getName()));
return "ok";
}
}

需要注意的是,属性的名字、set/get方法的名字必须严格按照java bean规范编写,因为它们要被注入依赖时使用 。 sayHello对象并没有被实例化,它会在运行时由系统注入 。

gigi_miao
  ▼ 下一篇新闻 40种Javascript中常用的使用小技巧
  ▲ 上一篇新闻 提升JSP应用程序七大绝招        网友发表观点请进入=>



我要纠错】【进入论坛交流】【关闭此页

文章搜索
   
最新文章

 
·千名爱好者参与首届PHP调查
·腾讯称QQ通讯信息密钥加密 不会被
·雅虎反超Google排名搜索第二
·中搜等十余家IT企业因流氓软件被
·盛大前员工克隆网游装备获暴利被
·凤凰网将向迅雷提供娱乐及宽带内
·信产部出手规范 新浪式企业法律架
·雅虎中国称旗下软件早已没有流氓
·中搜停止划词搜索与流氓软件决裂

广告赞助
相关文章 相关教程下载
焦点信息
·腾讯称QQ通讯信息密钥加密 不会被监听
·信产部出手规范 新浪式企业法律架构不得不改
·盛大前员工克隆网游装备获暴利被追刑责
·凤凰网将向迅雷提供娱乐及宽带内容
·雅虎中国称旗下软件早已没有流氓问题
·雅虎反超Google排名搜索第二
网友评论:(评论内容只代表网友观点,与本站立场无关!)
发表评论     Hard168社区推荐帖子
姓 名: *
* 请网友遵纪守法并注意语言文明。
IT人物推荐

王江民
马云
柳传志



关于本站    联络方式    广告服务    意见信箱    加入收藏   设为首页    -
本站部分内容来自网上,如有侵权部分,敬请告知,我们会在24小时内给予处理
版权所有:Hard168.Com,如需转载文章请与我们取得联系
京ICP备05063857号 Designed by Hard168.Com
基于JSF开发实战经验