`
cheng5259
  • 浏览: 61793 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

JSF和JSP是新的搭档

阅读更多
Java在最近几年逐渐升温,随着Java SE 5和Java SE 6的推出,Java的未来更显得无比辉煌。但以Java为基础的JSP在Java SE 5推出之前却一直抬不起头来,这最重要的原因就是JSP虽然功能十分强大,但最大的优点也是它的最大缺点,功能强大就意味着复杂,尤其是设计前端界面的可视化工具不多,也不够强大。因此,设计JSP页面就变得十分复杂和繁琐...

Java在最近几年逐渐升温,随着Java SE 5和Java SE 6的推出,Java的未来更显得无比辉煌。但以Java为基础的JSP在Java SE 5推出之前却一直抬不起头来,这最重要的原因就是JSP虽然功能十分强大,但最大的优点也是它的最大缺点,功能强大就意味着复杂,尤其是设计前端界面的可视化工具不多,也不够强大。因此,设计JSP页面就变得十分复杂和繁琐。不过,在Java SE 5推出的同时,Sun为了简化JSP的开发难度,推出了新的JavaServer Faces(简称JSF)规范。从而使JSP走上了康庄大道。

作为一种高度组件化的技术,开发人员可以在一些开发工具的支持下,实现拖拉式编辑操作,用户只需要简单的将 JSF 组件拖到页面上,就可以很容易的进行 Web 开发了。这是其作为一种组件化的技术所具有的最大好处,我们能用的组件不光是一些比较简单的输入框之类,还有更多复杂的组件可以使用的,比如 DataTable 这样的表格组件, Tree 这样的树形组件等等。

作为一种标准的技术,JSF还得到了相当多工具提供商的支持。同时我们也会有很多很好的免费开发工具可以使用,前不久 Sun Java Studio Creator 2 和 Oracle JDeveloper 10g 作为免费的支持 JSF 的开发工具发布,给 JSF 带来了不小的生气。另外我们也有一些很优秀的商业开发工具可共选择,BEA Workshop (原 M7 NitroX),Exadel,MyEclipse 这样的基于 Eclipse 的插件开发工具,为现在广大的 Eclipse 用户带来了不小的便利,IBM 的 Rational Application Developer 和 Borland 的 JBuilder 也是很不错的支持 JSF 可视化开发的商业开发工具。

JSF和传统的Web技术有着本质上的差别,在传统的Web技术需要用户自己对浏览器请求进行捕捉,保存客户端状态,并且手工控制着页面的转向,等等。而JSF的出现,无疑给我们带来了巨大的便利,JSF 提供了事件驱动的页面导航模型,该模型使应用程序开发人员能够设计应用程序的页面流。与 Struts 的方式向类似的是,所有的页面流信息都定义在 JSF 配置 XML 文件 (faces-config.xml) 中,而非硬编码在应用程序中。这很大程度简化了开发人员开发难度,简化了应用程序的开发。

同时JSF也是一种遵循模型-视图-控制器 (MVC) 模式的框架。实现了视图代码(View)与应用逻辑(Model)的完全分离,使得使用 JSF 技术的应用程序能够很好的实现页面与代码的分离。所有对 JSF 页面的请求都会通过一个前端控制器 (FacesServlet) 处理,系统自动处理用户的请求,并将结果返回给用户。这和传统的 MVC 框架并没有太大的区别。

在JSF中不仅使用了 POJO 技术,而且还使用了类似 Spring 的控制反转(IoC) (或称为依赖注入-DI) 技术,在 JSF 的 Backing Bean 中,我们可以把视图所需要的数据和操作放进一个 Backing Bean 中。同时得益于 JSF 使用的 DI 技术,我们可以在配置文件中初始化 Managed Bean,同时我们也可以通过这样的技术很方便的和使用类似技术的 Spring 进行整合。

如何在JSP中使用JSF

只有通过JSF和JSP相结合,才能充分发挥它的功效。JSF是通过标签库和JSP 进行集成的。标签库就相当于ASP.NET的服务端组件。JSF提供了非常丰富的标签库,通过这些标签库,可以生成各种客户端模型,如HTML、WML、 XML以及JavaScript等。通过这些标签,你可以很容易建立大规模的客户端模型,并由这些标签自动处理客户端请求。

接下来让我们来看一个如何使JSF和JSP在一起工作的例子。在JSF中有两个库。第一个叫做内核库,在这个库中包含了各种主要的标签,如配置组件、管理事件、验证输入信息等。第二个库的主要功能是将HTML和JSF的各种标签相对应。每一个JSF标签都会对应一个HTML组件。如UIInput标签对应了HTML中的文本框或密码框。

在JSF标签中文本输入框叫做inputText,而密码输入库叫inputSecret。下面是一个简单的JSF和JSP结合的用户接口程序。

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>   
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>   
<html>   
<head>   
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=GB2312">   
<title>第一个JSF程序</title>   
</head>   
<body>   
 <f:view>   
 <h:form id="simpleForm">   
 <h:outputText id="favoriteLabel" value="请输入一个数字:"/>   
 <h:inputText id="favoriteValue" value="#{simple.longValue}">   
<f:validateLongrange maximum="30" minimum="0"/>   
 </h:inputText>   
 <p/>   
 <h:commandButton id="submit" value="提交" action="#{simple.simpleActionMethod}"/>   
 </h:form>   
 </f:view>   
</body>   
            </html>
在上面的代码中,我们可以了解到JSF是如何同JSP集成的。我们首先可以看到一个内核标签:view。然后是几个JSF组件。如form、 outputText、inputText以及commandButton。这几个组件被放到form中从而开成了form中的一部分。在程序的最开始,必须使用import导入两个标签库。代码如下。

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>   
            <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
上面2行代码声明了JSP中要使用哪一个JSF标签库。内核库使用前缀(prefix)f声明,而HTML库使用前缀(prefix)h声明。这两个前缀并不是必须要使用,而只是一个建议。在程序中,内核库必须要使用,因为view在所有的 JSF页中必须使用。而HTML标签在运行时将JSF标签转化为HTML组件,这个h前缀并不是必须的,而是JSF规范推荐使用的,这样,我们使我们的 JSF程序更易读。

在声明后是几行标准的HTML语句,本文不再详述。从 f:view 开始,是一段JSF语句。这段代码如下所示:

<f:view>   
<h:form id="simpleForm">   
<h:outputText id="favoriteLabel" value="请输入一个数字:"/>   
<h:inputText id="favoriteValue" value="#{simple.longValue}">   
<f:validateLongrange maximum="30" minimum="0"/>   
</h:inputText>   
<p/>   
<h:commandButton id="submit" value="提交"   
action="#{simple.simpleActionMethod}"/>   
</h:form>   
             </f:view>
/f:view 标签预示着JSF的开始,而它的下一个标签form将建立一个HTML Form。而outputText标签相当于HTML中的label组件。inputText标签相当于HTML中的textField组件。而 commandButton标签相当于HTML中的submit按钮。


参考网址:http://developer.51cto.com/art/200907/130990.htm
分享到:
评论

相关推荐

    2007年图书:JSP_JSF_Tomcat Web编程从入门到精通

    《2007年图书:JSP_JSF_Tomcat Web编程从入门到精通》这本书主要涵盖了Java服务器页面(JSP)、JavaServer Faces(JSF)以及Tomcat应用服务器在Web开发中的应用,旨在帮助初学者及有一定基础的开发者深入理解和掌握...

    Java代码中使用JSP/JSF表达式语言EL

    Java代码中使用JSP/JSF表达式语言(EL,Expression Language)是Web开发中的一个核心概念,它允许开发者在页面上动态地访问和操作JavaBean或其他数据源的数据。EL提供了一种简洁的方式来读取和设置Java对象的属性,...

    多功能计算器(java,jsf,jsp)

    【描述】中提到的项目是一个基于Java Server Faces(JSF)框架开发的计算器应用,它结合了Java后端技术和JavaServer Pages(JSP)用于前端展示。这个项目不仅提供了基本的计算功能,还可能包含了更多复杂的运算选项...

    jsf_page.rar_ jsf_page_JSF_PAGE_java jsf_jsf glassfish_jsp page

    - JSF的视图是由UI组件(如输入字段、按钮等)组成的,这些组件在JSP页面上声明,然后由JSF框架处理用户交互和数据绑定。 3. Java EE组件: - GlassFish是Java EE应用服务器之一,它提供了运行JSF应用的环境。在...

    JSP和JSF合并 打造完美的Web层应用

    【JSP和JSF合并:打造完美的Web层应用】 Java Server Pages(JSP)和JavaServer Faces(JSF)是Java平台上的两种重要技术,它们分别处理Web应用的不同层面。JSP主要负责后端逻辑处理,而JSF则专注于前端表现层的...

    JSF实例

    JSF和JSP可以很好地协同工作,JSF处理业务逻辑和数据管理,而JSP负责页面展示。开发者可以使用JSF的UI组件在JSP页面上构建交互式的用户界面。 ### JSF库和扩展 JSF有一个强大的生态系统,包括许多开源库,如...

    jsf登陆的例子 jsp+sqlserver2000 jsf标签

    JSP和JSF的结合使得开发者能够利用JSP的模板技术和JSF的强大功能,例如,使用JSP标签库来渲染JSF组件,简化页面的编写。 SQL Server 2000作为关系型数据库管理系统,存储并管理着用户的登录信息,如用户名和密码。...

    在JSP中用JSF组件

    JSF组件包含若干个Java类和配置文件。为创建一个自定义JSF组件,您需要开发一个扩展JSF基本组件类的Java类;为默认呈现软件包开发呈现程序;开发一个将在JSP页面中用于描述标签的Java类;编写一个标签库定义(TLD)...

    java java jsp jsf

    java jsp jsf fx java jsp jsf fx java jsp jsf fx

    JSF Java Server Faces (JSF)框架

    JSF是一种用于构建Java ... 包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam

    Beginning JSP,JSF and Tomcat 书中源码

    Beginning JSP,JSF and Tomcat 书中源码 Beginning JSP,JSF and Tomcat 书中源码

    JSP和JSF合并+打造完美的Web层应用

    文件"JSP和JSF合并+打造完美的Web层应用.doc"很可能是详细的教程或案例分析,它可能会涵盖如何设置项目结构、配置Web.xml、创建JSF组件、集成JSP页面、以及处理各种交互和事件等内容。而"附赠:超多精品源码.htm"则...

    jsf和hibernate资料

    JavaServer Faces (JSF) 和 Hibernate 是两种在Java Web开发中广泛应用的技术。JSF是一种用于构建用户界面的MVC(模型-视图-控制器)框架,而Hibernate则是一个对象关系映射(ORM)工具,它简化了数据库操作,使得...

    jsp/jsf和XML/XSLT技术整合的精华

    jsp/jsf和XML/XSLT技术整合的精华 随着JSTL 1.0,JSP™ 2.0和JSF 1.0技术 的介入,JSP™技术已经成为一个成熟的主 流表现层技术,但是它还没有提供足够的灵 活性和模块化 。 服务器端Java™技术的发展 • 最新的...

    JSP和JSF合并 共同打造完美的Web应用

    【JSP和JSF合并打造完美Web应用】 JavaServer Pages(JSP)和JavaServer Faces(JSF)是两种在Java平台上构建Web应用程序的关键技术。它们各有特点,但结合使用可以大大提高开发效率和应用程序的易维护性。在本文中...

    jsp jsf beginning study source code

    JSP和JSF是两种在Java平台上广泛使用的Web开发技术,主要用于构建动态网页应用。本教程源代码旨在帮助初学者理解这两门技术的基本概念、工作原理以及如何在实际项目中运用它们。 **JSP技术详解:** 1. **JSP基本...

    JSF中文教程jsf

    它可以直接利用EJB(Enterprise JavaBeans)进行服务层操作,与JPA(Java Persistence API)集成实现数据持久化,还可以与Servlet、JSP和CDI(Contexts and Dependency Injection)等其他Java EE技术无缝协作。...

    jsf入门列子和jsf与Tiles结合

    JSF基于模型-视图-控制器(MVC)架构,提供了丰富的组件库和生命周期管理,使得开发者能够更加便捷地创建动态、数据驱动的网页。 在上述的JSF入门例子中,我们首先看到的是`UserBean.java`,这是个简单的实体类,...

Global site tag (gtag.js) - Google Analytics