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

相关文章

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati