1. web.xml中需要增加的配置
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>pollAndCometEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
pollAndCometEnabled表示开启“推”模式,crossDomainSessionSecurity表示允许跨域
2. 与web.xml同一目录增加dwr.xml的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 0.4//EN" "http://www.getahead.ltd.uk/dwr/dwr.dtd">
<dwr>
<allow>
<create creator="new" javascript="AlarmRegister" scope="session">
<param name="class" value="com.zg.alarm.AlarmRegister" />
<include method="register" />
</create>
</allow>
</dwr>
com.zg.alarm.AlarmRegister是页面中调用向服务器注册接收“alarmchange”事件的类;
<include method="register" />是该类公布出来提供给前台页面调用的方法。
3. 前台页面:
Bottom.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script type='text/javascript' src='/common/js/util.js'></script>
<script type="text/javascript" src="/dwr/engine.js"></script>
<script type='text/javascript' src='/dwr/interface/AlarmRegister.js'> </script>
<SCRIPT>
<!--
function showAlarm(alarmType){
var alarm = $("alm");
alarm.innerHTML="<MARQUEE DIRECTION=left BEHAVIOR=SCROLL SCROLLAMOUNT=10 SCROLLDELAY=200 LOOP=1><font size=3pt>告警发生变化</font></MARQUEE>";
//getMsg();
}
//-->
</SCRIPT>
</head>
<body onload="DWREngine.setActiveReverseAjax(true);AlarmRegister.register();">
<div id="alm">
</div>
</body>
</html>
<script type='text/javascript' src='/common/js/util.js'></script>
<script type="text/javascript" src="/dwr/engine.js"></script>是需要导入的javascript文件
AlarmRegister是在dwr.xml中<create creator="new" javascript="AlarmRegister" scope="session">公布出来的,它会由dwr框架为我们自动生成。
页面中showAlarm方法负责显示告警发生变化,当后台接收到事件时会调用这一方法。
在本页面初始化时调用DWREngine.setActiveReverseAjax(true),表示开启ajax反转功能。AlarmRegister.register()会调用到后台的com.zg.alarm.AlarmRegister类的register方法。
4. 事件注册类:
AlarmRegister.java
public class AlarmRegister {
public AlarmRegister() {
}
public void register(){
WebContext wctx = WebContextFactory.get();
final ScriptSession scriptSession = wctx.getScriptSession();
OmlServerManager.getInstance().registerEventProcess(new AlarmEventProcessor(scriptSession),"alarmchange");
}
}
向OmlServerManager注册alarmchange事件,注意的是必须把scriptSession传给事件相应类AlarmEventProcessor。
5. 事件相应类:
AlarmEventProcessor.java
public class AlarmEventProcessor implements EventProcessorInterface{
private ScriptSession scriptSession;
public AlarmEventProcessor(ScriptSession scriptSession) {
this.scriptSession=scriptSession;
}
public void processEventMsg(String string) {
System.out.println(string);
}
public void processEventMsg(OmlPDU omlPDU) {
ScriptBuffer scriptBuffer = new ScriptBuffer();
scriptBuffer.appendScript("showAlarm(")
.appendData("123")
.appendScript(");");
scriptSession.addScript(scriptBuffer);
}
}
scriptBuffer.appendScript("showAlarm(")
.appendData("123")
.appendScript(");");
这一代码将产生对前台页面中javascript showAlarm方法的调用
分享到:
相关推荐
标题中的“dwr反转AJAX聊天源码”是指使用DWR库构建的一个聊天应用程序,其核心功能是实现实时的消息传递。这个源码示例可能包括了服务器端的Java代码,用于处理聊天消息的接收和发送,以及客户端的HTML、JavaScript...
这种“反转Ajax”概念的核心在于,它不再需要传统的Ajax请求模式,即通过XMLHttpRequest对象手动构造和发送请求,而是由DWR自动处理这些细节,开发者可以专注于业务逻辑。 首先,我们需要在服务器端设置DWR配置。这...
DWR的核心特性是反转Ajax,即允许Java方法直接在客户端调用,仿佛它们是本地JavaScript函数一样,这大大简化了Web应用的开发。 **1. DWR的反转Ajax** 反转Ajax是DWR的关键特性,它将传统的请求-响应模型转变为一种...
没事的时候自己写的一个聊天室,用了SSH框架整合DWR推反转AJAX技术,可能有一些不合理的地方,但实现了聊天室的基本功能,希望给大家一些帮助。需要大家根据spring配置文件,配置下Mysql数据库,建一张用户表就可以...
**DWR反转Ajax**是DWR的一个核心特性,它使得开发者可以在服务器端编写业务逻辑,然后直接调用这些逻辑,而无需关心前端如何触发请求。这种模式下,服务器可以主动向客户端推送数据,而不仅是响应客户端的请求,提高...
下面将详细介绍如何在Spring MVC项目中利用DWR反转实现即时聊天。 首先,我们需要引入必要的依赖库。如描述中提到,我们需要添加以下三个JAR包到项目的类路径中: 1. `commons-logging-1.1.3.jar`:Apache Commons...
这个项目"spring+ibatis+struts2+dwr反转"整合了四个关键的Java Web开发组件,它们分别是Spring、iBatis、Struts2和Direct Web Remoting (DWR)。下面将详细介绍这些技术及其在项目中的作用。 1. **Spring框架**:...
这是,以上两个版本的升级版,在原有的基础上,增加了 清空聊天记录,上线通知,用户id,及登录的所在地(ip),聊天信息可选择颜色, ps: 测试的时候记得将 info.txt(聊天信息保存文件) 绝对路径覆盖源码中,以前的路径,
【标题】"spring+ibatis+struts2+dwr反转部分架包"涉及的是一个经典的Java Web开发技术栈,这个组合被广泛应用于构建基于服务端的动态Web应用程序。以下是这四个关键技术的详细介绍: 1. **Spring框架**:Spring是...
在“dwr推技术反转聊天事例”中,我们将探讨DWR如何用于构建一个实时的聊天应用程序,并分析其中的关键知识点。 首先,我们需要理解DWR的核心概念。DWR允许JavaScript在浏览器端直接调用服务器端的Java方法,而无需...
1. **反转Ajax**:DWR的核心特性之一就是反转Ajax,它将传统的请求-响应模式反转过来,使得服务器可以直接调用客户端的JavaScript方法,而无需用户触发。这极大地简化了Ajax的使用,并增强了用户体验,因为服务器...
DWR的核心理念是反转AJAX调用,也就是说,不仅前端可以调用后端,后端也可以主动调用前端的JavaScript函数。 标题中的“dwr小项目及资料”暗示我们这是一套关于DWR的实践项目和学习资源,可能包含了一些示例代码和...
DWR的独特之处在于它的“反转Ajax”(Reverse Ajax)概念,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。这在股票实时显示等需要即时更新信息的应用场景中非常有用。 在"股票实时显示"的应用...
使用服务器推技术(反转AJAX) <param-name>activeReverseAjaxEnabled <param-value>true ... 五、ChatManager.java 类 ChatManager.java 类是实现聊天室的核心类,主要负责处理聊天相关逻辑。该类包括以下...
2. **反转Ajax**:DWR的核心概念是“反转Ajax”,即不再由服务器决定何时与客户端通信,而是由客户端决定何时调用服务器的方法。这使得用户体验更加流畅,因为交互是根据用户的操作即时触发的。 3. **Java类转换为...
通过这种方式,SSH框架提供了业务逻辑和数据访问,而Ajax(DWR)则增强了用户界面的交互性,使得Web应用具有更好的响应性和用户体验。 总结来说,SSH框架+Ajax(DWR)的组合提供了一种强大的开发模式,能够构建复杂...
现在DWR的反转AJAX功能.允许我们从服务器端来控制客服端.而不需要客户端来请求.服务器可以自动把消息发给指定的客户端! 我不能把公司的代码贴出来,所以我自己写了一个DEMO,已经实现了对指定用户发送消息的功能,...
Spring 和 Direct Web Remoting (DWR) 的整合是将 Spring 框架的依赖注入和控制反转特性与 DWR 的动态 Web 接口相结合,从而实现客户端 JavaScript 和服务器端 Java 代码之间的无缝交互。这种整合使得开发人员可以...
DWR 是一个 Java 工具,它允许 JavaScript 在浏览器中直接调用服务器上的 Java 方法,从而实现异步更新页面,提供类似 AJAX 的用户体验。DWR 提供了简单的 API 和自动转换机制,使得与 Java 对象的交互变得简单。 1...