1.配置web.xml
<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>
</servlet-mapping>
2.配置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>
<!-- 我的配置(由于我的jave文件在com.filter包下的DwrPush.java,所以我可以这么配置。) -->
<create creator="new" javascript="DwrPush" >
<param name="class" value="com.filter.DwrPush" />
<!-- <include method="Send"/> -->
</create>
</allow>
</dwr>
3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首次环境搭建</title>
<script type='text/javascript' src='/js/dwr/util.js'></script>
<script type='text/javascript' src='/js/dwr/engine.js'></script>
<script type='text/javascript' src='/js/dwr/interface/DwrPush.js'></script>
<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function(){
// 页面加载的时候进行反转的激活
/* dwr.engine.setActiveReverseAjax(true); */
dwr.engine.setActiveReverseAjax(true) ;
// 点击页面按钮的时候触发的方法
$("#button").click(function(){
// 此类即为根据java文件生成的js文件
var data = document.getElementById("data").value;
DwrPush.Send(data);
});
});
//用于后台调取的函数
function callback(msg){
alert(msg);
$("#ul").html($("#ul").html()+"<br />"+msg);
}
</script>
</head>
<body>
<ul id="ul">
</ul>
<br/>
<hr>
<input type="text" id="data" name='data' />
<input type='button' id="button" value="publish">
</body>
</html>
引入这两架包,在DWR.jar里面去寻找
4.DwrPush 后台代码
package com.filter;
import java.util.Collection;
import org.directwebremoting.proxy.dwr.Util;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
public class DwrPush {
@SuppressWarnings("deprecation")
public static void Send(String msg){
WebContext webContext = WebContextFactory.get();
Collection<ScriptSession> sessions = webContext.getAllScriptSessions();
// 构建发送所需的JS脚本
ScriptBuffer scriptBuffer = new ScriptBuffer();
// 调用客户端的js脚本函数
scriptBuffer.appendScript("callback(");
// 这个msg可以被过滤处理一下,或者做其他的处理操作。这视需求而定。
scriptBuffer.appendData(msg);
scriptBuffer.appendScript(")");
// 为所有的用户服务
Util util = new Util(sessions);
util.addScript(scriptBuffer);
}
}