- 浏览: 171809 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
SimpleFunning:
ajax 怎么处理redirect 后台重定向 -
ykjsw:
java多态http://learn.jser.com/jav ...
Java知识积累:序列化、反序列化 -
xiayh04:
cs_wyx 写道用jxl很方便的啊我这边是不想应用第三方包的 ...
java生成excle column -
cs_wyx:
用jxl很方便的啊
java生成excle column -
sixinya:
ajax 怎么处理redirect 后台重定向
来自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发表评论
-
多线程,并发相关知识积累
2015-03-09 13:37 01 聊聊并发(一)——深入分析Volatile的实现原理 ... -
extjs5 学习
2015-01-04 23:10 0http://blog.csdn.net/jfok/art ... -
ajax 怎么处理redirect 后台重定向
2014-04-03 14:14 7198问题:在用Rich app时,基本所有请求都是ajax。在 ... -
mama
2014-02-25 18:19 0mama -
真空包装机
2014-01-21 17:12 0http://s.taobao.com/search?q=% ... -
sencha cmd
2013-12-19 00:30 0sencha -
eclipse java.lang.OutOfMemoryError: Java heap space
2013-11-26 18:03 1332运行环境: STS(eclipse -Xms40m -Xm ... -
保险材料
2013-10-28 17:58 0保险材料 -
海通zq
2013-10-21 21:53 0ht zq 系统 -
垂直搜索技术及框架选型
2013-09-23 12:50 01、垂直搜索与一般搜索区别 2、垂直搜索框架比较 ... -
spring ehcache annotation 配置
2013-08-05 23:38 0jdbc.properties #hibernate ... -
临时存放资料共享
2013-07-22 22:25 0临时存放资料共享: http://pan.baidu.c ... -
链接共享 临时存放
2013-07-22 22:24 1临时存放资料共享: http://pan.baidu.c ... -
用Ant自动测试JUnit spring
2013-07-10 21:52 0http://blog.csdn.net/shendl/ar ... -
JUnit+Ant自动化执行单元测试并生成报告
2013-07-10 21:47 0http://aofengblog.blog.163 ... -
ant junit spring集成
2013-07-10 21:42 0Spring框架下利用Ant进行自动测试 ... -
cccc
2013-07-05 15:50 0ccccc -
自己保留
2013-07-04 20:47 0自己保留 临时中转 -
一些常用的正则表达式-actionscript
2011-12-10 09:21 3037转自:http://hi.baidu.com/hereson/ ... -
(转)利用HttpSessionListener实现网站在线人数统计功能
2010-11-30 11:14 1607在网站中经常需要进行在线人数的统计。过去的一般做法是结合登 ...
相关推荐
DHTML 对象 DHTML 属性 DHTML 方法 DHTML 事件 DHTML 集合 HTML 参考 HTML 元素 HTML 字符集 样式表(CSS)参考 CSS 属性参考 CSS 长度单位参考 其他参考 命令标识符 缺省行为参考 htc 行为参考 可视化...
DHTML5-客户端JavaScript.ppt
本手册是 Rainer s DHTML Library 产品的一部分。 本手册针对的是已有一定网页设计制作经验的读者。其目的是提供完整清晰的样式表内容的快速索引及进阶帮助。所以对于网页制作和样式表的基础知识,仅简单介绍,...
DHTML 手册 DHTML 手册 DHTML 手册 DHTML 手册
如图 1 所示,“FlashGet” 按钮就是“网际快车”安装之后添加的按钮,这个按钮 能方便用户启动程序,而不用从开始菜单中启动应用程 序,节省了很多时间。 这么好的功能,我们的程序当然也应该有!需要说明的是,...
web开发相关手册文档 包括dhtml js servlet css w3c
DHTML 是一个营销术语 - 被网景公司(Netscape)和微软公司用来描述 4.x 代浏览器应当支持的新技术。 DHTML 是一种用来创建动态站点的技术组合物。对大多数人来说,DHTML 意味着 HTML 4.0、样式表以及 JavaScript 的...
DHTML 是一种用来创建动态站点的技术组合物。 对大多数人来说,DHTML 意味着 HTML 4.0、样式表以及 JavaScript 的结合物。 W3C 曾讲过:“动态HTML是一个被某些厂商用来描述可使文档动态性更强的HTML、样式...
Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。 ...
1. 将 WebFormDHTMLSetup.msi 文件从 WebFormDHTML 文件夹复制到您的计算机上。 2. 运行 WebFormDHTMLSetup.msi 文件并按说明操作。 3. 打开 .sln 文件 注意:如果 VS .NET 无法通过 Front Page 服务器扩展打开...
在网制作中,有许多的术语,例如:CSS、HTML、DHTML、XHTML等等.docx
DHTML手册 DHTML
易语言WebBrowser2.fne支持库中文名为易语言WEB浏览器支持库,本易语言支持库封装WEB浏览器控件。使您可以在 Windows 窗体客户端应用程序中显示网页。可以复制应用程序中的 Internet Explorer Web浏览功能,还可以...
DHTML技术资料 DHTML的概念 DHTML 技术的核心—DOM CSS-P DHTML 编程
DHTML&javascript 使用手册 动态 HTML (DHTML) 对象模型参考 DHTML 对象 DHTML 属性 DHTML 方法 DHTML 事件 DHTML 集合 HTML 参考 HTML 元素 HTML 字符集 样式表(CSS)参考 CSS 属性参考 CSS 长度单位参考...
Dhtml手册(Dhtml手册.chm)
DHTML 完全手册 动态 HTML (DHTML) 对象模型参考 <br>DHTML 对象 DHTML 属性 DHTML 方法 DHTML 事件 DHTML 集合 HTML 参考 <br>HTML 元素 HTML 字符集 样式表(CSS)参考 <br...
DHTML 对象 DHTML 属性 DHTML 方法 DHTML 事件 DHTML 集合 HTML 参考 HTML 元素 HTML 字符集 样式表(CSS)参考 CSS 属性参考 CSS 长度单位参考 其他参考 命令标识符 缺省行为参考 htc 行为参考 可视化...
DHTML电子书 DHTML电子书 DHTML电子书 DHTML电子书DHTML电子书 DHTML电子书