DW3 消息推送

1.新建项目

  参见:http://www.cnblogs.com/yysbolg/p/yys_Blogs_java.html

2.添加jar包:

  • commons-fileupload-1.2.jar
  • commons-io-1.3.1.jar
  • commons-logging-1.0.4.jar
  • dwr.jar
  • itext-2.0.6.jar
  • jakarta-oro-2.0.8.jar
  • log4j-1.2.12.jar

3.web.xml 配置:

<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>MyDWRSample</display-name>

  <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>
    
    <init-param>
     <param-name>fileUploadMaxBytes</param-name>
     <param-value>25000</param-value>
    </init-param>

    <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
    </init-param>
  
    <init-param>
      <param-name>accessLogLevel</param-name>
      <param-value>runtimeexception</param-value>
    </init-param>

    <init-param>
      <param-name>activeReverseAjaxEnabled</param-name>
      <param-value>true</param-value>
    </init-param>

    <init-param>
      <param-name>initApplicationScopeCreatorsAtStartup</param-name>
      <param-value>true</param-value>
    </init-param>

    <init-param>
      <param-name>jsonRpcEnabled</param-name>
      <param-value>true</param-value>
    </init-param>

    <init-param>
      <param-name>jsonpEnabled</param-name>
      <param-value>true</param-value>
    </init-param>

    <init-param>
      <param-name>preferDataUrlSchema</param-name>
      <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
  
      <servlet>
        <servlet-name>MySevlet</servlet-name>
        <servlet-class>com.yihaomen.MySevlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MySevlet</servlet-name>
        <url-pattern>/my/api</url-pattern>
    </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>

4.在 WEB-INF 下创建dwr.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">

<dwr>

  <allow>
   <create creator="new" javascript="Demo"> 
      <param name="class" value="com.yihaomen.DwrDemo"/> 
   </create>
  </allow>

</dwr>

5.在src  下面创建DwrDemo.java  文件

package com.yihaomen;

import org.directwebremoting.Browser;
import org.directwebremoting.ScriptSessions;

public class DwrDemo {
    public static void sendMsg(final String msg) {
        Browser.withPage("/MyDWRSample/", new Runnable() {
            public void run() {
                ScriptSessions.addFunctionCall("show", msg);
            }
        });
    }
}

6.在src  下面创建MySevlet.java  文件

package com.yihaomen;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.directwebremoting.ServerContext;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.WebContextFactory.WebContextBuilder;
import org.directwebremoting.impl.DefaultWebContextBuilder;

public class MySevlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response) throws ServletException, IOException {
        DwrDemo.sendMsg("aaaaaa");
    }
}

7.页面:index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="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; charset=UTF-8">
<title>Insert title here</title>

 <script type='text/javascript' src='dwr/engine.js'> </script>
 <script type='text/javascript' src='dwr/util.js'> </script>
 <script type='text/javascript' src='dwr/interface/Demo.js'></script>

    <script>
    
    function onload(){    
            dwr.engine.setActiveReverseAjax(true);
    }
    function show(message){
//        alert(message);
        document.getElementById('messageid').value=message;
    }
    </script>

</head>
<body onload="onload();">
 从服务端得到的消息:<br /> <input type="text" id="messageid" value="" />
</body>
</html>

8.测试

运行项目后,打开两个浏览器:http://localhost:8080/MyDWRSample/

然后再打开一个浏览器进行请求服务器:http://localhost:8080/MyDWRSample/my/api    

 

posted @ 2017-06-20 14:52  全栈九九六  阅读(348)  评论(0编辑  收藏  举报