- 浏览: 174262 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 7230问题:在用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 1366运行环境: 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 3075转自:http://hi.baidu.com/hereson/ ... -
(转)利用HttpSessionListener实现网站在线人数统计功能
2010-11-30 11:14 1630在网站中经常需要进行在线人数的统计。过去的一般做法是结合登 ...
相关推荐
本压缩包提供了五个关键资源,涵盖了从基础到高级的多个方面:DHTML、JavaScript、Servlet、CSS以及W3C标准。下面将逐一详解这些知识点。 1. **DHTML(Dynamic HTML)**: DHTML是一种使网页具有动态效果的技术...
DHTML 对象 DHTML 属性 DHTML 方法 DHTML 事件 DHTML 集合 HTML 参考 HTML 元素 HTML 字符集 样式表(CSS)参考 CSS 属性参考 CSS 长度单位参考 其他参考 命令标识符 缺省行为参考 htc 行为参考 可视化...
1. **JavaScript**:JavaScript是DHTML的关键部分,它是一种轻量级的解释性编程语言,主要负责处理页面上的动态行为,如响应用户点击、改变元素属性、执行动画等。通过JavaScript,开发者可以创建表单验证、时间轮播...
DHTML 手册通常会涵盖这些基础知识,以及更高级的话题,如框架库(如jQuery)、AJAX使用、响应式设计、跨浏览器兼容性等。通过深入学习和实践DHTML,开发者能够创建更加丰富、互动的网页应用,提升用户与网页的交互...
3. **JavaScript**:JavaScript是实现DHTML动态效果的关键,它是一种轻量级的脚本语言,运行在浏览器端。JavaScript可以操作HTML文档,改变元素内容、位置、样式,响应用户事件,甚至与服务器进行异步通信,实现AJAX...
7. **兼容性问题**:由于DHTML涉及到多个技术,不同浏览器对这些技术的支持程度不同,因此在实际应用中需要考虑跨浏览器兼容性。 **DHTML的应用场景:** - 交互式表单:验证用户输入、实时显示错误信息。 - 导航...
这三份资源结合在一起,为网页开发者提供了一个全面的DHTML学习平台,涵盖了从基础概念到高级技术的各个方面,对于提升网页动态效果和交互性的实现能力具有重要意义。通过深入学习并实践这些知识,开发者可以创建出...
5. **兼容性考虑**: DHTML的效果在不同的浏览器上可能表现不一,需要了解不同浏览器对DHTML的支持情况,并进行适当的兼容性优化。 **DHTML手册CHM文件** 这份DHTML手册以CHM(Compiled Help Manual)格式提供,它...
在压缩包文件“dhtmlxSuite1”中,可能包含了DHTMLX Suite,这是一个流行的JavaScript UI库,用于构建富客户端Web应用。DHTMLX Suite提供了各种组件,如表格、树形视图、日历、菜单、对话框等,这些组件允许开发者...
DHTML的核心在于能够实现在浏览器端进行页面元素的动态操作,无需向服务器发送额外请求。这意味着网页可以在下载后继续变化,而无需重新加载整个页面。具体来说,DHTML能够实现的功能包括但不限于: - 动态隐藏或...
在ASP中,开发者可以使用各种编程语言,如VBScript或JScript,来编写网页逻辑,服务器处理这些脚本后返回结果给客户端浏览器。这种技术在20世纪90年代末和21世纪初广泛应用于网站开发。 **DHTML(Dynamic HTML)**...
6. **浏览器兼容性**:由于不同的浏览器对DHTML的支持程度不一,开发者需要考虑跨浏览器的兼容性问题,通常会使用像jQuery这样的库来简化这个过程。 7. **DHTML与Web应用**:随着Web2.0的发展,DHTML技术被广泛应用...
这些文档集合为开发一个完整的J2EE应用程序提供了全面的参考资料,从界面设计(CSS和DHTML)、数据存储(MySQL)、后台逻辑(Hibernate)、服务器接口(Servlet)到客户端脚本(jQuery),形成了一条完整的开发链路...
DHTML,全称为Dynamic HTML,是一种利用HTML、CSS(层叠样式表)和JavaScript等技术在浏览器端实现页面动态效果的技术集合。它使得网页能够具备交互性、响应性和动画效果,而无需刷新整个页面。DHTML是90年代末期...
8. **最佳实践**:最后,手册可能会给出一些编写高效、可维护的DHTML代码的最佳实践和建议,帮助开发者写出高质量的DHTML应用。 通过学习这本中文手册,开发者能够深入理解DHTML的默认行为,并能有效地在实际项目中...
JavaScript是一种广泛应用于客户端Web开发的脚本语言,它在DHTML5中扮演着核心角色。JavaScript与Java、Jscript和js之间虽然名字相似,但它们是完全不同的技术。Java是一种面向对象的、编译型的编程语言,而...
10. **浏览器兼容性**:由于不同浏览器对DHTML的支持程度不一,开发者通常需要使用像jQuery这样的库来处理兼容性问题,确保代码在各种浏览器上都能正常运行。 了解并熟练掌握DHTML、JavaScript和相关库如Prototype....
7. **浏览器兼容性**:由于不同的浏览器可能对DHTML的支持程度不同,手册可能会介绍如何编写跨浏览器的代码。 8. **实例分析**:提供实际的DHTML代码示例,帮助读者理解并应用这些技术。 《DHTML手册》作为一份较...