使用JSF和JSR168开发AJAX应用程序

来源:互联网 发布:斗鱼抢票软件作者qq 编辑:程序博客网 时间:2024/04/30 08:19

使用JSF和JSR168开发AJAX应用程序


一、介绍
AJAX是一个热点,也逐渐变成了下一代互联网的标准,因为它提供了很多有益的特征,包括:
(1)提高了用户的接受性和生产力,和桌面应用一样;
(2)容易部署,其立即更新对所有用户有效;
(3)连接标准且只依赖于广泛的部署技术;
(4)对已存在的Web应用,易于增量更新;
(5)有一个成功的组织——the OpenAjax Alliance(AJAX联盟),背后有很多重量级公司支持。
其缺点在于:开发困难,其异步通讯意味着难于设计、调试和维护。
二、Java平台
对开发者来说,有两个服务端技术能用于在AJAX开发中克服障碍:
(1)JSF
JavaServer Faces是一个Java标准,基于Struts的经验。它能加速Web应用开发,并能整合到开发环境,如Oracle JDeveloper,IBM/Rational Application Developer和Sun Studio Creator,以及为JSF准备的Web服务器,例如IBM Webshpere应用服务器,BEA Weblogic和Oracle应用服务器。
(2)Portals
像那些与JSR168标准一致的技术,在内容集合方面提供了许多优点,如:单点登陆(Single Sign-on),个性特征显示,带持久化和可定制交付等。
本文主要是讲解整合JSF到JSR168 portals中,然后在Portals中怎样扩展这些JSF组件来提供Ajax行为。

第一章
整合基本JSF组件到Portals
一方面,JSF规范支持Portlet通过abstract API来部署用例,但其参考实现不能执行,似乎是JSR168 Portlet环境的问题。在本上下文,JSF Portlet bridge reference implementation或者与你的特殊的JSF实现一致的桥,连同缺省的JSF参考实现是需要的。
即使JSF Portlet被打包成regular JSF应用程序,一些不同仍然存在。使用JSF技术来创建一个Portlet的附加步骤如下:
(1)复制jsf-portlet.jar Portlet bridge到你的JSF应用程序的WEB-INF/lib目录下;
(2)增加一个新的portlet.xml Portlet部署描述符文件在WEB-INF目录下;
下面是一个典型的portlet.xml部署描述符文件,其INIT_VIEW 参数被你的JSP页所取代。
-----------------------------------
<portlet-app[]>
    <portlet>
        <description>JSF Portlet</description>
        <portlet-name>jsfPortlet</portlet-name>
        <display-name>JSF Portlet</display-name>
        <init-param>
            <description>Portlet init view page</description>
            <name>com.sun.faces.portlet.INIT_VIEW</name>
            <value>/index.jsp</value>
        </init-param>
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>VIEW</portlet-mode>
        </supports>
        <portlet-info>
            <title>JSF Portlet</title>
            <short-title>jsfPortlet</short-title>
        </portlet-info>
    </portlet>
</portlet-app>
-----------------------------------
(3)避免任何<html>,<head>,<body>或任何其它在JSR168规范中禁止的标签的使用;
(4)只使用JSF自身的标签,确保ID在不同的Portlet下的唯一性。
-----------------------------------
<f:view>
    <p:portletPage>
        <h:form>
            <h:anyComponent/>
        </h:form>
    </p:portletPage>
</f:view>
-----------------------------------
(5)部署Portlet WAR文件。
(未完,再次继续)

 

原创粉丝点击