DWR3+spring mvc实现

简介: DWR3+spring mvc实现


这里在前篇的基础上介绍下dwr3与spring mvc的结合使用

修改一下dwr.xml的配置,把creator="new" 换成creator="spring",name="class"换成name="beanName"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr30.dtd">
<dwr>
  <allow>
    <create creator="spring" javascript="MessagePush">
      <param name="beanName" value="MessagePush" />
    </create>
  </allow>
</dwr>


在applicationContext.xml配置里面把主类加载一次,添加下面的配置即可

<bean id="MessagePush" class="com.mysite.dwr.MessagePush">  
</bean>


MessagePush做少少的改动,只要是添加一些注解 @Controller、 @RemoteProxy、 @RemoteMethod

package com.mysite.dwr;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.directwebremoting.Browser;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.ScriptSessionFilter;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.annotations.RemoteMethod;
import org.directwebremoting.annotations.RemoteProxy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
@RemoteProxy
public class MessagePush {
  private String userName;
  public void onPageLoad(final String tag) {
    System.out.println("onPageLoad...");
    // 获取当前的ScriptSession
    ScriptSession scriptSession = WebContextFactory.get().getScriptSession();
    scriptSession.setAttribute("tag", tag);
    userName=tag;
    System.out.println("userName="+userName);
  }
  
  @RemoteMethod
  public void send(String content){ 
    System.out.println("content="+content);
    // 过滤器
    ScriptSessionFilter filter = new ScriptSessionFilter() {
      public boolean match(ScriptSession scriptSession) {
        String tag = (String) scriptSession.getAttribute("tag");
        System.out.println("tag="+tag);
        return userName.equals(tag);
      }
    };
    Runnable run = new Runnable() {
      private ScriptBuffer script = new ScriptBuffer();
      public void run() {
        System.out.println("run....");
        // 设置要调用的 js及参数
        script.appendCall("show", content);
        // 得到所有ScriptSession
        Collection<ScriptSession> sessions = DWRScriptSessionListener.getScriptSessions();
        // 遍历每一个ScriptSession
        for (ScriptSession scriptSession : sessions) {
          scriptSession.addScript(script);
        }
      }
    };
    // 执行推送
    Browser.withAllSessionsFiltered(filter, run); //注意这里调用了有filter功能的方法
  }
}


这样即可实现

相关文章
|
30天前
|
缓存 前端开发 Java
Spring MVC 面试题及答案整理,最新面试题
Spring MVC 面试题及答案整理,最新面试题
85 0
|
30天前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
10 0
|
30天前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
9 0
|
30天前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
11 0
|
30天前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——BaseDaoImpl.java
ssh(Spring+Spring mvc+hibernate)——BaseDaoImpl.java
12 0
|
29天前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
23 0
|
29天前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
35 1
|
7天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
21 3
|
7天前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
13 1
|
7天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
26 3