Dwr(Direct Web Remoting) 示例

2024-01-02 23:38
文章标签 web 示例 direct remoting dwr

本文主要是介绍Dwr(Direct Web Remoting) 示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Dwr是一个基于ajax的框架,动态的把java类生成javascript,让客户端可以通过Dwr访问java程序;

首先是一个官网的示例:

  1. 首先下载dwr演示应用程序
  2. 接下来你会得到一个dwrdemo.war的文件,然后导入到eclipse中。

  3. 然后,添加以下dwr.jar包,和commons-logging-1.0.4.jar包,不过示例demo中早已加上了,build path 配置一下jdk,服务器什么的,运行一下这里写图片描述

  4. 这样就成功了。

    然后是一个慕课网上的例子

5. 接着,用官方的例子来做.

6.创建一个xxxbest包,在此包下创建一个DwrPush类。

package xxbest;import java.util.Collection;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;public class DwrPush {//发送消息的send方法public void Send(String msg) {//获取所有的上下文访问器,WebContext webContext = WebContextFactory.get();//得到所有的SecriptSession。(ScriptSession:每次访问创建一个ScriptSession)即每个页面Collection sessions = webContext.getAllScriptSessions();//构建一个js脚本ScriptBuffer sb = new ScriptBuffer();//调用callback1(msg)函数sb.appendScript("callback1(");sb.appendData(msg);sb.appendScript(")");//Util是一个服务器端代理,允许Java程序员从Java调用客户端Javascript。//每个Util对象都与一个ScriptSession列表相关联,代理代码的创建将被动态转发//到所有这些浏览器。目前这个类只包含来自Util的只写DOM操作函数。//有可能我们可以添加读取方法,但是回调中的复杂性和你可能不需要它的意思//。具体来说, getValue,getValues和getText已经被抛弃了,//因为被读取功能和useLoadingMessage等已经被抛弃了,因为不是DOM相关。Util util = new Util(sessions);//向客户端推送消息util.a}
}

这里面使用sb.appendScript(msg)传送。数据只能传送数字,要想输入汉字,用sb.appendData(msg)这个方法。这两个方法说明
`The first is appendScript(String) which assumes that the parameter is to be inserted literally into the output.

The second is appendData(String) (and variants for Object and primitive types) which assumes that the parameter is a variable which should be properly converted, escaped and quoted.`
我也不懂,找个工具翻译一下吧

7. 创建一个DwrPush.jsp页面。在此页面中引入engine.js 和util.js,这两个js非常重要,必须包含进去,(engine.js它是用来转换乃至动态生成接口的javascript函数调用的),示例中是这样调用的这里写图片描述

而官网是这样写的这里写图片描述
还是copy吧省事,但这两种方式都可以 /doge
然后加入DwrPush.js
<script type='text/javascript' src='dwr/interface/DwrPush.js'></script>

engine.js和util.js都在dwr.jar的包里。engine.js和util.js都在dwr.jar的包里。让我们来看一下。解压dwrdemo.war,用winrar解压的时候好像还不支持war文件格式,可以改一下 在winrar ->选项->设置 里面添加war 关联这里写图片描述
winrar 也不支持jar 添加关联就好了
解压dwr.jar是这样的
这里写图片描述这里写图片描述
engine.js和util.js都可以找到

7 配置web.xml

添加核心类org.directwebremoting.servlet.DwrServlet,打开调试模式,允许反向ajax,配置servlet-mapping,不过在这个官方demo里都给配置好了 /doge

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><servlet><display-name>DWR Servlet</display-name><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><init-param><param-name>crossDomainSessionSecurity</param-name><param-value>false</param-value></init-param><init-param><param-name>allowScriptTagRemoting</param-name><param-value>true</param-value></init-param><!-- Remove this unless you want to use active reverse ajax --><init-param><param-name>activeReverseAjaxEnabled</param-name><param-value>true</param-value></init-param><!-- By default DWR creates application scope objects when they are first used. This creates them when the app-server is started --><init-param><param-name>initApplicationScopeCreatorsAtStartup</param-name><param-value>true</param-value></init-param></servlet><servlet-mapping><servlet-name>dwr</servlet-name><url-pattern>/dwr/*</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list>
</web-app>

所以,接下来配置一下dwr.xml就可以了

8.配置dwr.xml

做的是java类和javascript联系起来
在dwr.xml里面添加

<create creator="new" javascript="DwrPush" scope="application"><param name="class" value="xxbest.DwrPush" />
</create>

9.最后一步就是完善jsp页面了

这里需要jquery,引入jquery
完整的js方法

 <script type="text/javascript">//页面加载时执行$(document).ready(function() {//反转ajaxdwr.engine.setActiveReverseAjax(true);$("#sign").click(function() {//执行DwrPush类中的Send方法DwrPush.Send($("#msg").val());});});//执行函数function callback1(msg) {/*  $("#uul").html($("#uul").html()+"<br/>"+msg); *///在id为uul的标签前面添加$("#uul").prepend("<div class='lli'>" + msg + "</div>");}</script>

html页面

<body><h2>使用Dwr实现JAVA服务器端向客户端推送消息</h2><div class="main"><textarea type="text" maxlength="333" name="msg" id="msg"></textarea><br /> <input type="button"id="sign"value="发布信息" /> <br /><div id="uul"></div></div>
</body>

大功告成
差不多就是这样子的
这里写图片描述
运行一下
这里写图片描述
success
示例可以在这里下载

然后,示例再加入mysql的存储示例在这里

加入mysql存储的示例源码也有哟~~~这里

写的不好的还希望前辈们多多指教!!!!

这篇关于Dwr(Direct Web Remoting) 示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/563975

相关文章

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

mysql查询使用_rowid虚拟列的示例

《mysql查询使用_rowid虚拟列的示例》MySQL中,_rowid是InnoDB虚拟列,用于无主键表的行ID查询,若存在主键或唯一列,则指向其,否则使用隐藏ID(不稳定),推荐使用ROW_NUM... 目录1. 基本查询(适用于没有主键的表)2. 检查表是否支持 _rowid3. 注意事项4. 最佳实

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.