Servlet机制Pushlet原理及用法详解

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后访问,该页面以五秒钟一个间隔,收到后台传来的数据!
工程部署后如下图展示

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

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

时间: 2020-10-17

Jsp+Servlet实现简单登录注册查询

本文实例为大家分享了Jsp+Servlet实现简单登录注册查询的具体代码,供大家参考,具体内容如下 1.注册功能: 制作一个注册页面 用户输入: 用户名 密码 年龄 注册成功:-->跳转至登录页面进行登录 注册失败:-->文字或其他形式的提示皆可 2.简易查询: 制作一个查询页面 输入用户名 显示该用户的用户名.密码.年龄 演示 1.启动进入登陆页面 2.点击注册,进入注册页面,成功跳转到登录页面 失败则提示 回到登录页面,登录成功进入查询页面 登录失败显示提示信息 输入用户名->显示该

springboot配置嵌入式servlet容器的方法

配置嵌入式Servlet容器 springboot默认tomcat为嵌入式servlet容器,所以不用在配置tomcat. 1.如何定制修改servlet容器? 1.在applicatio.properties里修改和server有关的配置(推荐) 如: server.tomcat server.tomcat.connection-timeout= 连接超时时间 server.tomcat.uri-encoding=UTF-8 修改编码 server.servlet.XXX 通用servlet容

解决IDEA的maven项目中没有新建Servlet文件的选项问题

问题:右键package新建却没有servlet的选项 原因:项目设置里面没有勾选Source Roots 解决办法: Step1. Step2 到此这篇关于IDEA的maven项目中没有新建Servlet文件的选项问题及解决方法的文章就介绍到这了,更多相关IDEA maven项目没有新建Servlet文件的选项内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

JS pushlet XMLAdapter适配器用法案例解析

近日有人咨询Pushlet XMLAdapter 适配器的问题,我特留意了一下 到官方看了一下http://www.pushlets.com/,Development Roadmap中最后面说到了这个问题,AJAX (XMLHttpRequest) Support 使用AJAX (XMLHttpRequest)的好处就是: cleaner and thinner client-side lib no issues with "busy" indicators pure XML data

详解Spring mvc DispatchServlet 实现机制

在Spring中, ContextLoaderListener只是辅助类,在web 容器启动的时候查找并创建WebApplicationContext对象,通过该对象进行加载spring的配置文件.而真正的逻辑实现其实是在DispatcherServlet中进行的,DispatcherServlet是实现servlet接口的实现类. DispatcherServlet 在 web.xml 中的配置如下: <servlet> <servlet-name>spring</serv

使用java基于pushlet和bootstrap实现的简单聊天室

这是一个简单的不能再简单的聊天室,本代码包含以下功能 1.用户注册. 2.用户登录. 3.当然还可以聊天. DBUtil.java 复制代码 代码如下: package com.hongyuan.core;   import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statemen

tomcat中Servlet的工作机制详细介绍

tomcat中Servlet的工作机制 在研究Servlet在tomcat中的工作机制前必须先看看Servlet规范的一些重要的相关规定,规范提供了一个Servlet接口,接口中包含的重要方法是init.service.destroy等方法,Servlet在初始化时要调用init方法,在销毁时要调用destroy方法,而对客户端请求处理时则调用service方法.对于这些机制的支持都必须由Tomcat内部去支持,具体则是由Wrapper容器提供支持. 在tomcat中消息流的流转机制是通过四个不

如何HttpServletRequest文件对象并储存

核心代码 由于HttpServletRequest不能直接取出文件数据,所以将其强制转换为MultipartHttpServletRequest MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; List<MultipartFile> files = multipartRequest.getFiles("files"); POST /*提交表单*/ fu

PowerShell中文件对象的属性方法总结

本文介绍一个PowerShell中文件对象有哪些属性,知道了这些属性对于我们更好的对文件进行操作是非常重要的. PowerShell是一个面向对象的脚本语言,在PowerShell中,所有的都是对象,文件也是对象.既然是对象,那肯定有属性.PowerShell中的文件对象,其实就是.NET中的System.IO.FileInfo类的实例.我们要查看完整的PowerShell文件对象的属性,其实不需要去翻MSDN,然后把System.IO.FileInfo类的属性找出来,那样太麻烦了,而且貌似在P

详解 Python 与文件对象共事的实例

详解 Python 与文件对象共事的实例 Python 有一个内置函数,open,用来打开在磁盘上的文件.open 返回一个文件对象,它拥有一些方法和属性,可以得到被打开文件的信息,以及对被打开文件进行操作. >>> f = open("/music/_singles/kairo.mp3", "rb") (1) >>> f (2) <open file '/music/_singles/kairo.mp3', mode 'r

FSO文件对象介绍及常用函数

FSO的意思是FileSystemObject,即文件系统对象.FSO对象模型包含在Scripting 类型库 (Scrrun.Dll)中,它同时包含了Drive.Folder.File.FileSystemObject和TextStream五个对象,用来操作文件和文件夹十分方便. FSO文件(File)对象属性 属 性 说 明 DateCreated 返回该文件夹的创建日期和时间 DateLastAccessed 返回最后一次访问该文件的日期和时间 DateLastModified 返回最后一

Python编程中的文件读写及相关的文件对象方法讲解

python文件读写 python 进行文件读写的内建函数是open或file file_hander(文件句柄或者叫做对象)= open(filename,mode) mode: 模式    说明 r        只读 r+      读写 w       写入,先删除源文件,在重新写入,如果文件没有则创建 w+     读写,先删除源文件,在重新写入,如果文件没有则创建(可以写入写出) 读文件: >>> fo = open("/root/a.txt") >

Python判断对象是否为文件对象(file object)的三种方法示例

文件操作是开发中经常遇到的场景,那么如何判断一个对象是文件对象呢?下面我们总结了3种常见的方法. 方法1:比较类型 第一种方法,就是判断对象的type是否为file >>> fp = open(r"/tmp/pythontab.com") >>> type(fp) <type 'file'> >>> type(fp) == file True 注意:该方法对于从file继承而来的子类不适用, 看下面的实例 class f

Python读写文件模式和文件对象方法实例详解

本文实例讲述了Python读写文件模式和文件对象方法.分享给大家供大家参考,具体如下: 一. 读写文件模式 利用open() 读写文件时,将会返回一个 file 对象,其基本语法格式如:  open ( filename, mode) 其中,filename变量是一个包含了你要访问的文件名称的字符串值.而mode决定了你打开文件的模式:只读,写入,追加等.所有可取值见如下的完全列表. 注:这个参数是非强制的,默认文件访问模式为只读模式(r) 例如,我们现在将一个字符串写入到test.txt文件中

从C语言中读取Python 类文件对象

问题 你要写C扩展来读取来自任何Python类文件对象中的数据(比如普通文件.StringIO对象等). 解决方案 要读取一个类文件对象的数据,你需要重复调用 read() 方法,然后正确的解码获得的数据. 下面是一个C扩展函数例子,仅仅只是读取一个类文件对象中的所有数据并将其输出到标准输出: #define CHUNK_SIZE 8192 /* Consume a "file-like" object and write bytes to stdout */ static PyObj

jQuery Ajax使用FormData对象上传文件的方法

FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用FormData对象 有详尽的FormData对象使用说明. 但上传文件部分只有底层的XMLHttpRequest对象发送上传请求,那么怎么通过jQuery的Ajax上传呢? 本文将介绍通过jQuery使用FormData对象上传文件. 使用<form>表单初始化FormData对象方式上传文件 HTM

HttpServletRequest对象常用功能_动力节点Java学院整理

使用HttpServletRequest可以防止盗链行为,什么是盗链行为,比如说在一个别的网站上超链接,指向我们的网页中的某个数据,这样从他的网页上就可以直接进入到我的某个页面,无需从我的指定路口进入: 例如在一个简单的1.html文件中加入了我的[myservlet]web应用下的某个Servlet访问的超链接: 如果我的Servlet中代码仅仅为为访问输出数据,例如: response.setContentType("text/html;charset=utf-8"); Strin