DWR的简单应用

一、DWR是什么

DWR 可以把服务器端 Java 对象的方法公开给 JavaScript 代码,可用于服务器向客户端推送消息


二、DWR的简单应用


1.引入dwr.jar

<!-- DWR -->
<dependency>
    <groupId>org.directwebremoting</groupId>
    <artifactId>dwr</artifactId>
    <version>3.0.2-RELEASE</version>
</dependency>

2.web.xml新增配置

<!-- DWR -->
<servlet>
    <servlet-name>dwr</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
    <!-- 使用服务器反转AJAX -->
    <init-param>
        <param-name>activeReverseAjaxEnabled</param-name>
        <param-value>true</param-value>
    </init-param>
    <!-- 是能够从其他域请求true:开启; false:关闭 -->
    <init-param>
        <param-name>crossDomainSessionSecurity</param-name>
        <param-value>false</param-value>
    </init-param>
    <!-- 允许远程调用js -->
    <init-param>
        <param-name>allowScriptTagRemoting</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>dwr</servlet-name>
    <url-pattern>/js/dwr/*</url-pattern>
    <!-- 该路径和JSP页面中引入js路径相对应 -->
</servlet-mapping>

3.创建dwr.xml(与web.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="SendMessage" >
            <param  name="class"  value="com.demo.js.SendMessage" />
        </create>
    </allow>
</dwr>   

其中,javascript属性值是:通过java类生成的js文件的名称,对应的value属性值是java类全路径


4.jsp中引入js

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

其中SendMessage.js与dwr文件中相对应


5.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<body>
    <h2 id="hello">Hello World!</h2>
    <button id="button" >点击</button>
    <script src="js/jquery.min.js"></script>
    <script type='text/javascript' src='js/dwr/engine.js'></script>
    <script type='text/javascript' src='js/dwr/util.js'></script>
    <script type='text/javascript' src='js/dwr/interface/SendMessage.js'></script>
    <script type="text/javascript">
        $(document).ready(function() {
            //翻转激活
            dwr.engine.setActiveReverseAjax(true);
            $("#button").click(function() {
                var hello = "Hello DWR";
                //调用java类生成的js
                SendMessage.send(hello);
            });
        });

        //供java类生成的js调用的函数
        function callBack(msg) {
            $("#hello").html(msg);
        }
    </script>
</body>
</html>

6.java类

package com.demo.js;

import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;

public class SendMessage {

    public void send(String msg) {
        ScriptBuffer scriptBuffer = new ScriptBuffer(); 
        WebContext webContext=WebContextFactory.get();
        ScriptSession myScSession = webContext.getScriptSession();
        scriptBuffer.appendScript("callBack("); //调用JS中的函数
        scriptBuffer.appendData(msg);
        scriptBuffer.appendScript(")");

        Util util = new Util(myScSession);
        util.addScript(scriptBuffer); 
    }
}

7.运行效果
当打开多个客户端页面显示Hello World时,点击任一个按钮,虽有的客户端页面都讲变成Hello DWR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值