首页 > 代码库 > ssh整合dwr,推送数据

ssh整合dwr,推送数据

1.web.xml中添加如下代码:

<!-- 配置DWR前端控制器 -->
    <servlet>
        <servlet-name>dwrServlet</servlet-name>
        <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
        <!-- 指定配置文件 -->
        <init-param>
            <param-name>config</param-name>
            <!-- 如果有多个用","分开 -->
            <param-value>WEB-INF/classes/dwr.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</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>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>maxWaitAfterWrite</param-name>
			<param-value>500</param-value>
		</init-param>
		<init-param>
            <param-name>logLevel</param-name>
            <param-value>WARN</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>dwrServlet</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>

2.新建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配置 -->
<dwr>
    <allow>
        <!-- 从Spring中获取Java对象 -->
        <create javascript="talk" creator="spring">
            <param name="beanName" value="http://www.mamicode.com/talkService"></param>
        </create>
       <!--  <create javascript="talk" creator="new">
            <param name="beanName" value="http://www.mamicode.com/com.dailywork.service.impl.TalkServiceImpl"></param>
        </create> -->
        <!-- 指定针对于特定对象的转换器 -->
        <convert match="entity.*" converter="bean"></convert>
        <convert match="java.lang.Throwable" converter="bean">
            <param name="include" value="http://www.mamicode.com/message"></param>
        </convert>
    </allow>
</dwr>

3.applicationContext.xml中配置bean

<bean id="talkAction" class="com.dailywork.action.TalkAction"></bean>

4.需要推送数据的java中

//java推送到jsp
public void talk(){
    HttpSession session = WebContextFactory.get().getSession();
    WebContext contex = WebContextFactory.get();  
    Collection<ScriptSession> scriptSessions = contex.getScriptSessionsByPage(contex.getCurrentPage());
    ScriptSession scriptSession = WebContextFactory.get().getScriptSession();
    //像当前session推送
    Util util = new Util(scriptSession); 
    ScriptBuffer sb = new ScriptBuffer();  
    sb.appendScript("show(");  
    sb.appendData("欢迎" + session.getAttribute("username") + "进入对话");  
    sb.appendScript(")");  
    util.addScript(sb); 
    
    //像所有session推送
    Util utilAll = new Util(scriptSessions); 
    ScriptBuffer sbAll = new ScriptBuffer();  
    sbAll.appendScript("show(");  
    sbAll.appendData(session.getAttribute("username") + "进入了对话");
    sbAll.appendScript(")");  
    utilAll.addScript(sbAll);
}

//jsp请求java
public String 方法名(参数){
    return 返回值
}

5.被推送的jsp中:

<script type="text/javascript" src="http://www.mamicode.com/dwr/engine.js"></script>
<script type="text/javascript" src="http://www.mamicode.com/dwr/util.js"></script>
<script type="text/javascript" src="http://www.mamicode.com/dwr/interface/talk.js"></script>
<script>
    dwr.engine._execute("dwr", ‘talk‘, ‘这里填java中的方法‘, ‘参数‘, {callback:function(data){data}});
    function show(data){
        console.log(data);
    }
</script>


ssh整合dwr,推送数据