Servlet机制Pushlet原理及用法详解

 更新时间:2020-10-17 15:51:19   作者:佚名   我要评论(0)

Pushlet(一种comet 架构的实现)是基于Servlet 机制,数据从server端的Java 对象直接推送(push)到客户端浏览器的(动态)HTML 页面,而无需任何Java applet 或者

Pushlet(一种comet 架构的实现)是基于Servlet 机制,数据从server端的Java 对象直接推送(push)到客户端浏览器的(动态)HTML 页面,而无需任何Java applet 或者插件的帮助。

  • 在MyEclipse中创建工程。附件包含了从官方下载的Pushlet包已经本次的源码包,直接导入到开发工具即可。
  • 在创建的工程中增加pushlet.jar,log4j.jar。拷贝pushlet.properties,sources.properties到WEB-INF下。拷贝ajax-pushlet-client.js到WebRoot下。
  • 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- $Id: web.xml,v 1.7 2005/02/21 17:21:49 justb Exp $ -->
<web-app>
	<!-- Define the pushlet servlet -->
	<servlet>
		<servlet-name>pushlet</servlet-name>
		<servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
		<load-on-startup>3</load-on-startup>
	</servlet>
	<!-- Define the Servlet Mappings. -->
	<!-- The pushlet -->
	<servlet-mapping>
		<servlet-name>pushlet</servlet-name>
		<url-pattern>/pushlet.srv</url-pattern>
	</servlet-mapping>
</web-app>

后台代码HelloWorldPlushlet.java,该类包含一个内部类

package com;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;
public class HelloWorldPlushlet {	
	static public class HwPlushlet extends EventPullSource {
		// 休眠五秒
		@Override
		protected long getSleepTime() {
			return 5000;
		}
		@Override
		protected Event pullEvent() {
			Event event = Event.createDataEvent("/cuige/he");
			event.setField("mess", "hello,world!Plushlet!");
			return event;
		}
	}
}

sources.properties清理其他,定义自己发布的内容

source1=com.HelloWorldPlushlet$HwPlushlet

在JSP中调用

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta http-equiv="Pragma" content="no-cache" />
		<script type="text/javascript" src="ajax-pushlet-client.js"></script>		
		<script type="text/javascript">
			PL._init(); 
			PL.joinListen('/cuige/he');
			function onData(event) { 
				alert(event.get("mess")); 
				// 离开
				// PL.leave();
			}
		</script>
	</head>
	<body>
		<center>
		<h1>
			my first pushlet!
		</h1>
		</center>
	</body>
</html>

将工程部署到Tomcat后访问,该页面以五秒钟一个间隔,收到后台传来的数据!
工程部署后如下图展示

每次访问时,后台都会打印增加到管理中的用户信息,当关闭浏览器后,服务器会在超时后自动清理!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • 详解Spring mvc DispatchServlet 实现机制
  • tomcat中Servlet的工作机制详细介绍
  • JS pushlet XMLAdapter适配器用法案例解析
  • 使用java基于pushlet和bootstrap实现的简单聊天室
  • springboot配置嵌入式servlet容器的方法
  • Jsp+Servlet实现简单登录注册查询
  • 解决IDEA的maven项目中没有新建Servlet文件的选项问题
  • 如何HttpServletRequest文件对象并储存

相关文章

  • Servlet机制Pushlet原理及用法详解

    Servlet机制Pushlet原理及用法详解

    Pushlet(一种comet 架构的实现)是基于Servlet 机制,数据从server端的Java 对象直接推送(push)到客户端浏览器的(动态)HTML 页面,而无需任何Java applet 或者
    2020-10-17
  • Nodejs在局域网配置https访问的实现方法

    Nodejs在局域网配置https访问的实现方法

    零、需求: 做一个局域网WebRTC视频聊天系统,需要用到HTTPS。因此,配置Node.js使其支持HTTPS访问。 一、解决 在线生成和证书 访问:https://csr.chinassl.net/g
    2020-10-17
  • 基于Java信号量解决死锁过程解析

    基于Java信号量解决死锁过程解析

    死锁在多线程的情况下,会出现数据不同步情况, 而为了避免这种情况,之前也说了:界区实现方法有两种,一种是用synchronized,一种是用Lock显式锁实现。 而如果不恰
    2020-10-17
  • 嘁,都2020了,你咋还在单纯的使用if-else

    嘁,都2020了,你咋还在单纯的使用if-else

    在高级语言中,基本上都提供了像if-else 和switch-case 这样的条件语句,方便大伙进行判断——引导程序走向。我们在写程序时,常常需要指明两条或者更多的执行路径,
    2020-10-17
  • Python通过format函数格式化显示值

    Python通过format函数格式化显示值

    英文文档: format(value[, format_spec]) Convert a value to a “formatted” representation, as controlled by format_spec. The interpretation of format_sp
    2020-10-17
  • Python基于staticmethod装饰器标示静态方法

    Python基于staticmethod装饰器标示静态方法

    英文文档: staticmethod(function) Return a static method for function. A static method does not receive an implicit first argument. The @staticmethod fo
    2020-10-17
  • Python classmethod装饰器原理及用法解析

    Python classmethod装饰器原理及用法解析

    英文文档: classmethod(function) Return a class method for function. A class method receives the class as implicit first argument, just like an instance
    2020-10-17
  • Python基于locals返回作用域字典

    Python基于locals返回作用域字典

    英文文档: locals() Update and return a dictionary representing the current local symbol table. Free variables are returned by locals()when it is called
    2020-10-17
  • J2EE Servlet基础在浏览器上运行HelloServlet的方法

    J2EE Servlet基础在浏览器上运行HelloServlet的方法

    Servlet servlet本身不能独立运行,需要在一个web应用中运行的 而一个web应用是部署在tomcat中。开发一个servlet需要 创建web应用项目 编写servlet代码 部
    2020-10-17
  • 如何通过Kaptcha在Web页面生成验证码

    如何通过Kaptcha在Web页面生成验证码

    kaptcha 是一个扩展自 simplecaptcha 的验证码库,方便我们不再写此类功能。 他的代码是谷歌托管的,可以从这里下载http://code.google.com/p/kaptcha/ 工程内已
    2020-10-17

最新评论