Servlet機(jī)制Pushlet原理及用法詳解
Pushlet(一種comet 架構(gòu)的實(shí)現(xiàn))是基于Servlet 機(jī)制,數(shù)據(jù)從server端的Java 對(duì)象直接推送(push)到客戶端瀏覽器的(動(dòng)態(tài))HTML 頁(yè)面,而無(wú)需任何Java applet 或者插件的幫助。
- 在MyEclipse中創(chuàng)建工程。附件包含了從官方下載的Pushlet包已經(jīng)本次的源碼包,直接導(dǎo)入到開(kāi)發(fā)工具即可。
- 在創(chuàng)建的工程中增加pushlet.jar,log4j.jar??截恜ushlet.properties,sources.properties到WEB-INF下??截恆jax-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>
后臺(tái)代碼HelloWorldPlushlet.java,該類包含一個(gè)內(nèi)部類
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清理其他,定義自己發(fā)布的內(nèi)容
source1=com.HelloWorldPlushlet$HwPlushlet
在JSP中調(diào)用
<%@ 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"));
// 離開(kāi)
// PL.leave();
}
</script>
</head>
<body>
<center>
<h1>
my first pushlet!
</h1>
</center>
</body>
</html>
將工程部署到Tomcat后訪問(wèn),該頁(yè)面以五秒鐘一個(gè)間隔,收到后臺(tái)傳來(lái)的數(shù)據(jù)!
工程部署后如下圖展示

每次訪問(wèn)時(shí),后臺(tái)都會(huì)打印增加到管理中的用戶信息,當(dāng)關(guān)閉瀏覽器后,服務(wù)器會(huì)在超時(shí)后自動(dòng)清理!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解Spring mvc DispatchServlet 實(shí)現(xiàn)機(jī)制
- tomcat中Servlet的工作機(jī)制詳細(xì)介紹
- JS pushlet XMLAdapter適配器用法案例解析
- 使用java基于pushlet和bootstrap實(shí)現(xiàn)的簡(jiǎn)單聊天室
- springboot配置嵌入式servlet容器的方法
- Jsp+Servlet實(shí)現(xiàn)簡(jiǎn)單登錄注冊(cè)查詢
- 解決IDEA的maven項(xiàng)目中沒(méi)有新建Servlet文件的選項(xiàng)問(wèn)題
- 如何HttpServletRequest文件對(duì)象并儲(chǔ)存
相關(guān)文章
Mabatis錯(cuò)誤提示Parameter index out of range的處理方法
這篇文章主要介紹了Mabatis錯(cuò)誤提示Parameter index out of range 的處理方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
Spring @Valid @Validated實(shí)現(xiàn)驗(yàn)證
這篇文章主要介紹了Spring @Valid @Validated實(shí)現(xiàn)驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
jvm中指定時(shí)區(qū)信息user.timezone問(wèn)題及解決方式
同一份程序使用時(shí)間LocalDateTime類型,在國(guó)內(nèi)和國(guó)外部署后,返回的時(shí)間信息前端使用出問(wèn)題,這篇文章主要介紹了jvm中指定時(shí)區(qū)信息user.timezone問(wèn)題及解決方法,需要的朋友可以參考下2023-02-02
IntelliJ IDEA中properties文件顯示亂碼問(wèn)題的解決辦法
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中properties文件顯示亂碼問(wèn)題的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
java調(diào)用微信接口實(shí)現(xiàn)網(wǎng)頁(yè)分享小功能
這篇文章主要為大家詳細(xì)介紹了java調(diào)用微信接口實(shí)現(xiàn)網(wǎng)頁(yè)分享小功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
Spring Boot 中的自動(dòng)配置autoconfigure詳解
這篇文章主要介紹了Spring Boot 中的自動(dòng)配置autoconfigure詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
Java向上取整的幾種常見(jiàn)實(shí)現(xiàn)方法
這篇文章主要介紹了Java向上取整的幾種常見(jiàn)實(shí)現(xiàn)方法,包括整數(shù)除法技巧、Math.ceil()函數(shù)、手動(dòng)檢查余數(shù)、位運(yùn)算和使用BigDecimal的setScale方法,每種方法都有其適用場(chǎng)景,選擇合適的方法可以提高代碼的性能和可讀性,需要的朋友可以參考下2024-12-12

