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)文章
關(guān)于微服務(wù)使用Dubbo設(shè)置的端口和server.port的區(qū)別
這篇文章主要介紹了關(guān)于微服務(wù)使用Dubbo設(shè)置的端口和server.port的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解
這篇文章主要介紹了Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解,條理清晰,依次介紹了Java基本類(JFC),AWT和Swing的區(qū)別,Swing基本框架,圖形化設(shè)計(jì)步驟以及組件容器的使用等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
Mybatis-plus實(shí)現(xiàn)join連表查詢的示例代碼
mybatis-plus在連表查詢上是不行的,如果需要連表查詢,就得乖乖的去寫(xiě)xml文件了,本文介紹了mybatis-plus-join框架,它支持連表查詢,感興趣的可以了解一下2023-08-08
SpringBoot?調(diào)用外部接口的三種實(shí)現(xiàn)方法
Spring Boot調(diào)用外部接口的方式有多種,常見(jiàn)的有以下三種方式:RestTemplate、Feign 和 WebClient,本文就詳細(xì)介紹一下,感興趣的可以了解一下2023-08-08
詳解SpringBoot 處理異常的幾種常見(jiàn)姿勢(shì)
這篇文章主要介紹了詳解SpringBoot 處理異常的幾種常見(jiàn)姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
詳解spring boot實(shí)現(xiàn)多數(shù)據(jù)源代碼實(shí)戰(zhàn)
本篇文章主要介紹了詳解spring boot實(shí)現(xiàn)多數(shù)據(jù)源代碼實(shí)戰(zhàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
RabbitMQ中的prefetch_count參數(shù)詳解
這篇文章主要介紹了RabbitMQ中的prefetch_count參數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11

