spring+dwr

来源:互联网 发布:索罗斯期货软件 编辑:程序博客网 时间:2024/04/29 16:35

最近在研究dwr推技术,想要实现服务器端在某个条件触发时,自动向指定页面传送数据。

以spring+dwr为例,采用maven管理jar包

项目的结构图如下:


spring.xml配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsd"><bean id="dwrtest" class="com.bjsxt.dwrtest.Test0"></bean>       <bean id="dwrtest2" class="com.bjsxt.dwrtest.Test1"></bean>         <bean id="dwrtest3" class="com.bjsxt.dwrtest.SendMsg"></bean>     </beans>

dwr.xml配置

<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">  <dwr>    <allow>       <create javascript="T0" creator="spring" >              <param name="beanName" value="dwrtest"></param>                 </create>              <create javascript="T1" creator="spring" >              <param name="beanName" value="dwrtest2"></param>       </create>       <create javascript="SendMsg" creator="spring">                 <param name="beanName" value="dwrtest3"></param>       </create>            <convert converter="bean" match="com.bjsxt.bean.User"/>    <!--   <param name="include" value="id,name"></param>       </convert> -->  </allow>  </dwr>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com</groupId>  <artifactId>dwrTest</artifactId>  <packaging>war</packaging>  <version>0.0.1-SNAPSHOT</version>  <name>dwrTest Maven Webapp</name>  <url>http://maven.apache.org</url>     <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>4.1.4.RELEASE</spring.version><jackson.version>2.5.0</jackson.version>  </properties>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>         <!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency>        <!-- dwr -->  <dependency><groupId>org.directwebremoting</groupId><artifactId>dwr</artifactId><version>3.0.M1</version></dependency><!-- common logging --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><!-- json --><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20140107</version></dependency>  </dependencies>  <build>    <finalName>dwrTest</finalName>  </build></project>

User类

package com.bjsxt.bean;public class User {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + "]";}}

SendMsg类

package com.bjsxt.dwrtest;import java.util.Collection;import org.directwebremoting.ScriptBuffer;import org.directwebremoting.ScriptSession;import org.directwebremoting.WebContext;import org.directwebremoting.WebContextFactory;import org.directwebremoting.proxy.dwr.Util;public class SendMsg {          public void sendMsg(String msg){          //得到上下文          WebContext contex = WebContextFactory.get();                    //得到要推送到 的页面  dwr3为项目名称 , 一定要加上。          Collection<ScriptSession> sessions = contex.getScriptSessionsByPage("/dwrTest/showMsg.jsp");                    //不知道该怎么解释这个 ,           Util util = new Util(sessions);                    //下面是创建一个javascript脚本 , 相当于在页面脚本中添加了一句  show(msg);           ScriptBuffer sb = new ScriptBuffer();          sb.appendScript("show(");          sb.appendData(msg);          sb.appendScript(")");                    //推送          util.addScript(sb);      }  } 

Test0类

package com.bjsxt.dwrtest;import com.bjsxt.bean.User;public class Test0 {            public User method1(){      /*JSONObject jsonObj=new JSONObject();    jsonObj.put("id", 12);    jsonObj.put("name","longyu");*/    User user=new User();    user.setId(1);    user.setName("ly");        return user;      }         /* public static void main(String[] args) {    System.out.println(method1());}*/} 


Test1类

package com.bjsxt.dwrtest;public class Test1 {          public String   method1(){          return "调用方法111111";      }            public String   method2(){          return "调用方法222222";      }     }

jQuery.1.7.1.js下载地址:

项目下载地址:

1 0