`

Pushlets:从Servlet发送消息给DHTML客户端浏览器 一

阅读更多
来自RMI或者CORBA的服务器端回掉可以通知客户端服务器上有什么变化。但是如果客户端是浏览器,情况又如何呢?本文介绍pushlets来完成此功能。 下载: http://www.pushlets.com ,当前下载版本为2.0.0 正文: 当前,开发者越来越将servlet或者jsp作为服务器前端语言了,但是同时,如果浏览器已经装载了当前html页面,它就很难从服务器端获取更新信息了。(如果客户端不主动请求的话)。 对于经验丰富的程序员,我们容易想起applet。本文我们要讨论一下到底如何做最好。 1, server-to-web client 通知:现有解决方案/font> 在进入pushlet概念之前,让我们回顾一下现有的server-to-web client方案,可以归结为:HTML刷新、server-side callback以及messaging。 HTML refresh <meta http-equiv="Refresh" content="4;URL=http://www.justobjects.nl"> 页面会定时刷新,但是多少时间合适? Server-side callback 在server-side callback中,server对象回调一个java-applet,通过RMI或者CORBA。通常,客户端首先传递一个RMI远程引用或者CORBA对象给server,server保存这些引用并按照顺序通知客户端,在javaworld的另外一篇文章中对此有详细的讨论(http://www.javaworld.com/javaworld/javaqa/1999-04/05-rmicallback.html)。 Messaging 消息方式的话,applet是messageing server的客户端,它通过TCP/IP连接或者UDP发送消息,最新进展甚至可以通过multicast。你可以通过消息中间件,如SoftWired的iBus,IBM的MQSeries,BEA的消息中间件等。JMS是消息的重要标准。 上述方案都有各自的优点和缺点。让我们看看Pushlet吧。 Pushlet是一个轻量级的客户端方案,不需要applet或者插件,直接和脚本以及HTML整合,使用标准HTTP连接,可以在任何servlet服务器中部署。它并一定是上述方案的替代,是你另外一个可选的方案。 Pushlet 基础 HTTP streaming Pushlet基于HTTP streaming,它不是读取完html页面就关闭HTTP连接,连接仍然开放。 我们可以开发一个JSP或者servlet,它持续发送HTML内容给客户端。如下: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Pragma" content="no-cache">"+(i++)+""); out.flush(); try { Thread.sleep(3000); } catch (InterruptedException e) { out.print("

"+e+"

"); } } } catch (Exception e) { out.print("

"+e+"

"); } %> 下一个例子中,我们了结一下pushlet的机制。如何让页面3秒钟刷新一次?包含三个文件:push-js-stream.html,push-js-stram-pusher.jsp,push-js-stream-display.html。主页面是push-js-stream.html。 push-js-stram-pusher.jsp parent.push('"; /** End the line of JavaScript */ String jsFunPost = "') "; int i = 1; try { // Every three seconds a line of JavaScript is pushed to the client while (true) { // Push a line of JavaScript to the client out.print(jsFunPre+"Page "+(i++)+jsFunPost); out.flush(); // Sleep three secs try { Thread.sleep(3000); } catch (InterruptedException e) { // Let client display exception out.print(jsFunPre+"InterruptedException: "+e+jsFunPost); } } } catch (Exception e) { // Let client display exception out.print(jsFunPre+"Exception: "+e+jsFunPost); } %> Push-js-stram.html <script language="JavaScript"> var pageStart="<HTML><HEAD></HEAD><BODY BGCOLOR=blue TEXT=white><H2>Server pushes: <P>"; var pageEnd="</H2></BODY></HTML>"; // Callback function with message from server. // This function is called from within the hidden JSP pushlet frame function push(content) { // Refresh the display frame with the content received window.frames['displayFrame'].document.writeln(pageStart+content+pageEnd); window.frames['displayFrame'].document.close(); } </script><frameset border="0" cols="*,0"> <!-- frame to display the content pushed by the pushlet --><frame src="push-js-stream-display.html" name="displayFrame" border="0" scrolling="no"> <!-- Hidden frame with the pushlet that pushes lines of JavaScript--><frame src="push-js-stream-pusher.jsp" name="pushletFrame" border="0" scrolling="no"> </frameset> Push-js-display.html /font>

WAIT...

运行一下上面的代码,它体现了pushlet的全部思想:在servlet或者jsp中将Javascript代码以流的形式传递给一个隐藏的frame。 Design of the Framework Pushlet框架应用的基本模式是Publish-Subscribe模式,也称作Observer模式,有服务器端组件和客户端组件: l 服务器端Java类(围绕pushlet.java),请看UML类图。 l 客户端可复用脚本(pushlet.js)和html(pushlet.html),用来接收DHTML客户端的事件。 (石头注:在2.0.0版本中,应该是lib目录下的js-pushlet-client.jsp和js-pushlet-net.html) l 客户端java类(JavaPushletClient.java和JavaPushletClientListener.java)用来接收Java客户端的事件。 l 用来在DHTML layer中显示内容的layer.js、layer-grid.js、layer-region.js。 l 测试事件和例子应用(如EventGenerators.java和temperature.html)。 关键类是Pushlet这个servlet,Publisher类,Subscriber接口和Event类。客户端通过调用Pushlet servlet,客户端接收Event
0
1
分享到:
评论

相关推荐

    web开发手册(javascript css servlet w3c dhtml)

    本压缩包提供了五个关键资源,涵盖了从基础到高级的多个方面:DHTML、JavaScript、Servlet、CSS以及W3C标准。下面将逐一详解这些知识点。 1. **DHTML(Dynamic HTML)**: DHTML是一种使网页具有动态效果的技术...

    网页开发必备:网页制作完全手册(DHTML html css htc )

    DHTML 对象 DHTML 属性 DHTML 方法 DHTML 事件 DHTML 集合 HTML 参考 HTML 元素 HTML 字符集 样式表(CSS)参考 CSS 属性参考 CSS 长度单位参考 其他参考 命令标识符 缺省行为参考 htc 行为参考 可视化...

    dhtml.rar_DHTML

    1. **JavaScript**:JavaScript是DHTML的关键部分,它是一种轻量级的解释性编程语言,主要负责处理页面上的动态行为,如响应用户点击、改变元素属性、执行动画等。通过JavaScript,开发者可以创建表单验证、时间轮播...

    DHTML 手册 DHTML 手册

    DHTML 手册通常会涵盖这些基础知识,以及更高级的话题,如框架库(如jQuery)、AJAX使用、响应式设计、跨浏览器兼容性等。通过深入学习和实践DHTML,开发者能够创建更加丰富、互动的网页应用,提升用户与网页的交互...

    Dhtml手册(Dhtml手册.chm)

    3. **JavaScript**:JavaScript是实现DHTML动态效果的关键,它是一种轻量级的脚本语言,运行在浏览器端。JavaScript可以操作HTML文档,改变元素内容、位置、样式,响应用户事件,甚至与服务器进行异步通信,实现AJAX...

    DHTML手册 DHTML

    7. **兼容性问题**:由于DHTML涉及到多个技术,不同浏览器对这些技术的支持程度不同,因此在实际应用中需要考虑跨浏览器兼容性。 **DHTML的应用场景:** - 交互式表单:验证用户输入、实时显示错误信息。 - 导航...

    DHTML手册 默认行为 文档对象模型3合1

    这三份资源结合在一起,为网页开发者提供了一个全面的DHTML学习平台,涵盖了从基础概念到高级技术的各个方面,对于提升网页动态效果和交互性的实现能力具有重要意义。通过深入学习并实践这些知识,开发者可以创建出...

    DHTML手册pdf下载

    5. **兼容性考虑**: DHTML的效果在不同的浏览器上可能表现不一,需要了解不同浏览器对DHTML的支持情况,并进行适当的兼容性优化。 **DHTML手册CHM文件** 这份DHTML手册以CHM(Compiled Help Manual)格式提供,它...

    Dhtml帮助文档 (Dhtml帮助文档)

    在压缩包文件“dhtmlxSuite1”中,可能包含了DHTMLX Suite,这是一个流行的JavaScript UI库,用于构建富客户端Web应用。DHTMLX Suite提供了各种组件,如表格、树形视图、日历、菜单、对话框等,这些组件允许开发者...

    DHTML学习资料

    DHTML的核心在于能够实现在浏览器端进行页面元素的动态操作,无需向服务器发送额外请求。这意味着网页可以在下载后继续变化,而无需重新加载整个页面。具体来说,DHTML能够实现的功能包括但不限于: - 动态隐藏或...

    DHTML手册-asp编程手册

    在ASP中,开发者可以使用各种编程语言,如VBScript或JScript,来编写网页逻辑,服务器处理这些脚本后返回结果给客户端浏览器。这种技术在20世纪90年代末和21世纪初广泛应用于网站开发。 **DHTML(Dynamic HTML)**...

    DHTML参考手册

    6. **浏览器兼容性**:由于不同的浏览器对DHTML的支持程度不一,开发者需要考虑跨浏览器的兼容性问题,通常会使用像jQuery这样的库来简化这个过程。 7. **DHTML与Web应用**:随着Web2.0的发展,DHTML技术被广泛应用...

    开发文档 (css+dhtml+hibernate+j2ee+jquery+mysql+servlet)

    这些文档集合为开发一个完整的J2EE应用程序提供了全面的参考资料,从界面设计(CSS和DHTML)、数据存储(MySQL)、后台逻辑(Hibernate)、服务器接口(Servlet)到客户端脚本(jQuery),形成了一条完整的开发链路...

    DHTML手册 DHTML手册

    DHTML,全称为Dynamic HTML,是一种利用HTML、CSS(层叠样式表)和JavaScript等技术在浏览器端实现页面动态效果的技术集合。它使得网页能够具备交互性、响应性和动画效果,而无需刷新整个页面。DHTML是90年代末期...

    DHTML 默认行为中文手册

    8. **最佳实践**:最后,手册可能会给出一些编写高效、可维护的DHTML代码的最佳实践和建议,帮助开发者写出高质量的DHTML应用。 通过学习这本中文手册,开发者能够深入理解DHTML的默认行为,并能有效地在实际项目中...

    DHTML5-客户端JavaScript.ppt

    JavaScript是一种广泛应用于客户端Web开发的脚本语言,它在DHTML5中扮演着核心角色。JavaScript与Java、Jscript和js之间虽然名字相似,但它们是完全不同的技术。Java是一种面向对象的、编译型的编程语言,而...

    DHTML JAVASCRIPT

    10. **浏览器兼容性**:由于不同浏览器对DHTML的支持程度不一,开发者通常需要使用像jQuery这样的库来处理兼容性问题,确保代码在各种浏览器上都能正常运行。 了解并熟练掌握DHTML、JavaScript和相关库如Prototype....

    dhtml手册

    7. **浏览器兼容性**:由于不同的浏览器可能对DHTML的支持程度不同,手册可能会介绍如何编写跨浏览器的代码。 8. **实例分析**:提供实际的DHTML代码示例,帮助读者理解并应用这些技术。 《DHTML手册》作为一份较...

Global site tag (gtag.js) - Google Analytics