`

DWR实现简单推送服务的示例

    博客分类:
  • DWR
阅读更多
/*
 * Copyright (c) 2012-2032 Accounting Center of China Aviation(ACCA).
 * All Rights Reserved.
 */
package com.acca.action;

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.directwebremoting.Browser;
import org.directwebremoting.ScriptSessions;
import org.directwebremoting.ServerContextFactory;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 
 * 
 *
 * @author zhouhua, 2012-11-25
 */
public class PublishAction extends ActionSupport {

    private String msg;

    /**
     * @return the msg
     */
    public String getMsg() {
        return msg;
    }

    /**
     * @param msg the msg to set
     */
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String showMsg(){
      HttpServletResponse response= ServletActionContext.getResponse();
      response.setContentType("text/html;charset=utf8");
      String page = ServerContextFactory.get().getContextPath() + "/message.jsp";
      Browser.withPage(page, new Runnable() {
          public void run() {
              ScriptSessions.addScript("showMsg('" + msg + "')");
          }
      });
    try {
        response.getWriter().print(msg);
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(msg);
        return SUCCESS;
    }

}
 
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;">
<title>Insert title here</title>
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="jquery/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
	$(function() {
		dwr.engine.setActiveReverseAjax(true);
	});

	function showMsg(msg) {
        alert(msg);
	}

</script>

</head>
<body>
</body>
</html>
 
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;">
<title>Insert title here</title>
</head>
<body>
    <form action="publishAction.action" method="post">
      <input type="text" name="msg">
      <input type="submit" value="send">
    </form> 
</body>
</html>
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <welcome-file-list>
    <welcome-file>send.jsp</welcome-file>
  </welcome-file-list>
  
    <listener>
    <listener-class>org.directwebremoting.servlet.DwrListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

    <!-- This should NEVER be present in live -->
    <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
    </init-param>

    <!-- Remove this unless you want to use active reverse ajax -->
    <init-param>
      <param-name>activeReverseAjaxEnabled</param-name>
      <param-value>true</param-value>
    </init-param>
    
    <init-param>
           <param-name>crossDomainSessionSecurity</param-name>
           <param-value>false</param-value>
    </init-param>
    <init-param>
          <param-name>allowScriptTagRemoting</param-name>
          <param-value>true</param-value>
    </init-param>

    <!-- By default DWR creates application scope objects when they are first
    used. This creates them when the app-server is started -->
    <init-param>
      <param-name>initApplicationScopeCreatorsAtStartup</param-name>
      <param-value>true</param-value>
    </init-param>

    <!-- WARNING: allowing JSON-RPC connections bypasses much of the security
    protection that DWR gives you. Take this out if security is important -->
    <init-param>
      <param-name>jsonRpcEnabled</param-name>
      <param-value>true</param-value>
    </init-param>

    <!-- WARNING: allowing JSONP connections bypasses much of the security
    protection that DWR gives you. Take this out if security is important -->
    <init-param>
      <param-name>jsonpEnabled</param-name>
      <param-value>true</param-value>
    </init-param>

    <!-- data: URLs are good for small images, but are slower, and could OOM for
    larger images. Leave this out (or keep 'false') for anything but small images -->
    <init-param>
      <param-name>preferDataUrlSchema</param-name>
      <param-value>false</param-value>
    </init-param>

    <!-- This enables full streaming mode. It's probably better to leave this
    out if you are running across the Internet -->
    <init-param>
      <param-name>maxWaitAfterWrite</param-name>
      <param-value>-1</param-value>
    </init-param>

    <!--
    For more information on these parameters, see:
    - http://getahead.org/dwr/server/servlet
    - http://getahead.org/dwr/reverse-ajax/configuration
    -->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
  
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
  <package name="struts" extends="struts-default" namespace="/">
   <action name="publishAction" class="com.acca.action.PublishAction" method="showMsg">
     <result>message.jsp</result>
   </action>
  </package>
</struts>    
 
1.消息接收页面必须引入:
<script type="text/javascript" src="dwr/engine.js"></script>
2.所需jar包,因为本示例是结合struts2实现,所需jar包如下:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
dwr.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
3.运行示例:
1)将示例部署到服务器上,启动服务器,访问http://localhost:8080/demo_dwr进入发送页面;
2)然后在新建一个页面,访问http://localhost:8080/demo_dwr/message.jsp进入接收页面,是接收页面保持打开状态
3)发送页面输入要发送的公告或消息,接收页面会弹出相应的信息
1
6
分享到:
评论
1 楼 jhacker7 2012-12-28  
之前用DWR的reverse Ajax做了个IM, 原理和你这个差不错,  需要处理好script session, 现在有了webscoket, 这种山寨的技术过时了, 哈哈

相关推荐

    dwr消息推送完整示例

    在这个“dwr消息推送完整示例”中,我们将深入探讨如何利用DWR实现实时的消息推送功能。 **一、DWR基础** 1. **安装与配置** 在开始之前,确保你的项目中已经包含了DWR的JAR文件。将它们添加到项目的类路径中,并...

    dwr spring服务器主动推送示例代码

    **DWR (Direct Web Remoting) 服务器主动推送示例代码** DWR(Direct Web Remoting)是一个开源的Java库,允许Web应用程序在浏览器和服务器之间进行双向通信,即服务器可以主动向客户端推送数据,而不仅仅是响应...

    dwr demo 反向推送 导向推送

    这个"**dwr demo 反向推送 导向推送**"是一个示例项目,展示了如何利用DWR来实现反向推送技术,也称为服务器推送。这种技术允许服务器主动地将数据推送到客户端,而不需要客户端不断地发起请求。 在传统的HTTP协议...

    dwr3实现推送功能

    本篇文章将详细讲解如何利用DWR 3实现推送功能。 1. **DWR 3 的基本概念** DWR 3 提供了一种安全、高效的机制,使得JavaScript可以调用Java方法,并将结果返回到页面上。这种机制是基于HTTP的异步请求,因此无需...

    dwr实现的服务器推demo

    在这个"**dwr实现的服务器推demo**"中,我们看到一个实例,展示了如何利用DWR的技术来实现实时的、无需刷新的服务器推送功能。 服务器推是一种技术,它允许服务器主动地将数据发送到客户端,而不需要客户端(通常是...

    dwr3推送消息

    要实现DWR3的推送消息,首先需要在服务器端配置DWR。这包括创建`dwr.xml`配置文件,定义允许的远程方法,并启用推送支持。在`dwr.xml`中,你可以使用`&lt;push&gt;`标签来配置推送引擎,例如设置推送类型(如Ajax或者...

    DWR服务器推送技术(实时)

    DWR (Direct Web Remoting) 是一种开源的Java库,它允许Web应用...- HTML和CSS文件:包含使用DWR实现服务器推送功能的示例页面。 通过学习和应用DWR,开发者可以构建出更具实时性和互动性的Web应用,提升用户的体验。

    DWR消息推送简单实例

    DWR(Direct Web Remoting...综上所述,这个"DWR消息推送简单实例"涵盖了DWR框架的基础使用、Maven工程的构建以及消息推送的实现。通过学习这个实例,开发者可以更好地理解如何在实际项目中利用DWR实现高效的双向通信。

    Java Dwr实现消息精准推送以及js调用后台+demo

    在“Java Dwr实现消息精准推送以及js调用后台+demo”这个主题中,我们将深入探讨如何利用DWR来实现高效的消息推送和JavaScript与后台Java的交互。以下是一些关键知识点: 1. **DWR基础**:DWR的核心功能是提供一种...

    DWR推送技术大全 dwr推送聊天实例

    DWR推送技术的实现主要涉及以下几个关键组件: 1. **DWR Engine**:这是DWR的核心部分,负责处理JavaScript与服务器端Java对象之间的交互。它通过AJAX(Asynchronous JavaScript and XML)技术在客户端和服务器之间...

    dwr单点推送

    **正文** DWR(Direct Web Remoting)是一个开源的Java库,它允许JavaScript在Web浏览器和...通过深入理解和实践`dwr_concreate_push`中的源码,开发者可以掌握DWR推送的精髓,并将其应用于各种实时数据更新的需求中。

    dwr消息推送示例代码

    4. **创建DWR推送示例**: - 首先,你需要在服务器端创建一个可被DWR调用的Java方法,这个方法负责检查并返回新消息。 - 在DWR配置文件中,注册这个Java方法,允许其被JavaScript调用。 - 在客户端,使用DWR的...

    dwr消息推送详细步骤

    在`dwr3实现消息精确推送详细步骤 - jsczxy2 - ITeye技术网站_files`这个文件夹中,可能包含了示例代码和教程的详细步骤。这些资源可以辅助理解每个阶段的具体操作。 10. **最佳实践** 实现消息推送时,要考虑...

    dwr 消息后台推送

    在"DWР消息后台推送"的例子中,我们将探讨如何利用DWR实现从服务器向客户端推送消息的技术。 1. **DWR基本概念** DWR的核心功能是提供一种方法,让JavaScript可以调用服务器端的Java方法,就像它们是本地函数一样...

    dwr java推送例子 免积分

    这可能意味着示例提供了无需积分或其他形式的访问控制就能使用推送服务的方法。在实际应用中,如果需要对用户行为进行限制或收费,通常会设定积分系统,用户需要积累一定的积分才能使用特定服务。在这个例子中,...

    DWR3消息推送(聊天Demo)

    在这个"DWR3消息推送(聊天Demo)"项目中,开发者提供了一个使用DWR3实现的简单聊天应用,让我们来详细了解一下这个示例中的关键知识点。 首先,我们要理解DWR3的核心特性。DWR3是DWR(Direct Web Remoting)的第三个...

    DWR后台精准推送信息至前台

    在“DWR后台精准推送信息至前台”这个主题中,我们将深入探讨DWR如何实现消息推送,并为初学者提供一个入门的指南。 1. **DWR基础概念**: - **Direct Web Remoting**:DWR的核心理念是创建一种无缝的接口,让...

    dwr 消息推送

    在提供的压缩包文件`webChat`中,很可能包含了一个简单的聊天应用示例,它使用DWR实现了服务器到客户端的消息推送功能。通过分析这个示例,你可以更深入地理解DWR的使用方法,以及如何在实际项目中应用消息推送。 ...

    DWR数据推送封装的demo

    这个“DWR数据推送封装的demo”提供了一个示例,展示了如何利用DWR来封装并处理多种类型的数据推送,从而实现更加高效、灵活的页面交互。 DWR的核心功能在于它允许JavaScript在浏览器端直接调用服务器端的Java方法...

Global site tag (gtag.js) - Google Analytics