一、概述
Jetspeed2中实现了对Ajax的支持。客户端可以通过基于HTTP请求的API接口异步向服务端发送请求,得到xml格式的数据响应。
二、Ajax简介
AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
Ajax 应用程序所用到的基本技术:
1)HTML 用于建立 Web 表单并确定应用程序其他部分使用的字段。
2)JavaScript 代码是运行 Ajax 应用程序的核心代码,帮助改进与服务器应用程序的通信。
3)DHTML 或 Dynamic HTML,用于动态更新表单。我们将使用 div、span 和其他动态 HTML 元素来标记 HTML。
4)文档对象模型 DOM 用于(通过 JavaScript 代码)处理 HTML 结构和(某些情况下)服务器返回的 XML。
AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。
Ajax应用程序的优势在于:
1. 通过异步模式,提升了用户体验
2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
3. Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。
Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
更多详细情况请参看相关文档说明。
三、功能
使用ajax接口可以实现以下功能:
<!--[if !supportLists]-->1、 <!--[endif]-->个性化页面布局:在一个页面里移动,复制,添加或移去一个portlet。
<!--[if !supportLists]-->2、 <!--[endif]-->布局样式选择:在一个页面里改变布局样式,比如行数,列数。
<!--[if !supportLists]-->3、 <!--[endif]-->主题和装饰器选择:在一个页面里改变主题和portlet装饰器。
<!--[if !supportLists]-->4、 <!--[endif]-->Portlet选择:为用户提供一个portlet的选择列表。
<!--[if !supportLists]-->5、 <!--[endif]-->安全配置:对一个资源配置安全约束或安全方针。
<!--[if !supportLists]-->6、 <!--[endif]-->菜单配置:为portal站点创建或修改菜单。
<!--[if !supportLists]-->7、 <!--[endif]-->普通的管理:目前只有获取用户信息和用户列表,其他的管理功能还没有。
四、实现
AJAX的实现可以分为客户端和服务端两方面:
在服务端,所有的AJAX API请求都是一个标准的Jetspeed Pipeline请求,您可以根据需要自己定义处理流程。在预定义的AjaxPipeline里需要经过7个Valve(阀门)。capabilityValve;portalURLValve;securityValve;localizationValve;profilerValve;containerValve;layoutValve。在layoutValve中定义了一个Spring component处理所有的AJAX请求——AjaxRequestService,根据不同的参数处理相应的请求。每一个AJAX处理都有一个自己的安全约束,在一个页面里的所有请求将使用整个页面配置的安全约束。根据不同的处理动作,需要判断是处于view模式下还是edit模式下。比如,获取信息的操作只要需要在view状态下;而添加,移动,删除等操作需要在edit状态下。
在客户端,AJAX客户端都是在javascript中调用。遗憾的是jetspeed2 中的javascript都被混淆了,不过可以查看别的资料去了解实现方式。比较核心的就是这么几个方法:
1、创建新的 XMLHttpRequest 对象
<script language="javascript" type="text/javascript">
var request = new XMLHttpRequest();
</script>
2、增加对 Microsoft 浏览器的支持
<script language="javascript" type="text/javascript">
var request = false;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = false;
}
}
}
if (!request)
alert("Error initializing XMLHttpRequest!");
</script>
3、打开请求
request.open("GET", url, true);
4、设置回调方法
request.onreadystatechange = updatePage;
5、发送请求
request.send(null);
6、处理服务器响应
function updatePage() {
if (request.readyState == 4)
if (request.status == 200)
alert("Server is done!");
else if (request.status == 404)
alert("Request URL does not exist");
else
alert("Error: status code is " + request.status);
}
五、接口定义
Jetspeed2中AJAX访问都是通过“ajaxapi”路径,后面跟随要操作的页面。如果没有指定就去访问当前用户的缺省页面。
对不同的请求有不同的请求参数,但其中有一个“action”参数是必须的,缺省的action是getpage。
例如:
http://localhost:8080/jetspeed/ajaxapi/Public/content.psml
具体的接口定义请参看Jetspeed2的官方网站,那里介绍的很详细,这里就不一一列举了。
六、参考资料
Jetspeed2官方网站
http://portals.apache.org/jetspeed-2/guides/guide-ajax-api.html
掌握AJAX系列 作者:Brett McLaughlin
http://www.ibm.com/developerworks/cn/web/wa-ajaxintro/
分享到:
相关推荐
朋友翻译的Jetspeed2之安装配置.doc,网上找到的JetSpeed2开发文档的中文翻译.pdf 。还有一份Jetspeed2总结.docx是以前公司同事总结的。
学习Jetspeed2时和同事一起对文档进行的简单翻译,适合初学者。
Jetspeed2之安装配置文档详细说明了jetspeed2安装已经配置,还有常见问题的解决
jetspeed2样式的开发文档,汉化的
关于Jetspeed一些入门的文档,适合初次接触Jetspeed的用户
包含jetspeed1.* 以及 jetspeed2.*的资料 本人找了好久! 希望大家支持!
与Jetspeed1.x比较,Jetspeed2.0 (以下简称J2)的架构发生了很大变化, J1.x使用了Turbine,在J2中Turbine不再使用, 而是使用了Spring Framework作为默认的组件框架,从官方的资料介绍看,J2架构支持将一种组件...
JetSpeed2开发文档的中文翻译,JetSpeed2开发文档的中文翻译
Jetspeed是Apache组织开发的一个...Apache开源组织的企业门户项目,现有两个版本:jetspeed1与jetspeed2。由于jetspeed1在设计上的“缺陷”,现在已经升级到jetspeed2。目前大陆还没有成功使用jetspeed2开发的案例。
NULL 博文链接:https://helloklzs.iteye.com/blog/1150044
Apache的门户技术 Jetspeed2的详细开发文档,包含框架介绍,技术内容,各种入门资源链接等
刚开始学习Jetspeed2的时候使用的中文参考,对初学者来说比较有用。
jetspeed中文文档,包括现在很多中文的jetspeed的介绍,是html形式的
在这篇教程中,您将了解如何使用象 JavaServer Pages(JSP)这样的 Web 编程技术开发基于 Jetspeed 的更动态的 portlet,以及如何使内容流入 WML portlet。还将提到几个 Jetspeed 文档中未提及的技巧,它们可以使您...
自己收集的一些jetspeed资料
这个是开发门户网站的好资料 可以一步一步的学会开发apache jetspeed2 开发
使用eclipse开发基于jsr168标准的portlet项目
Jetspeed安装与portlet开发.pdf
NULL 博文链接:https://abcity.iteye.com/blog/1446748
基于jetspeed的portlet开发探讨,供大家学习参考!!!!