DWR 3.0 入门示例教程
DWR(Direct Web Remoting)
DWR is a Java library that enables Java on the server and JavaScript in a browser to interact and call each other as simply as possible.
Dwr能让在服务器端的java代码和浏览器客户端的javascript代码尽可能简单的相互调用。
DWR is Easy Ajax for Java!
官网:http://directwebremoting.org/dwr/index.html
一、 环境搭建
1. 新建web工程。
2. 从官网下载dwr3.0 rc2,也是当前最新版本,并引入类路径。
3. dwr依赖于logging.jar,也需要引入类路径下面。
4. 配置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>
</servlet> <servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
5. 新建一个java类,代码如下:
package com.yokoboy.dwr.service; public class DwrDemo {
public String getHello(String name) {
return name + " 你好!";
}
}
6. 在web.xml 同目录下面新建dwr.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<dwr>
<allow>
<!--配置的一个演示类,javascript="Demo" 表示可以在页面中用Demo这个名称指向DwrDemo这个java类,类中的方法可以在前台调用 -->
<!-- creater="new"表示每调用一次时,都需要new一个 -->
<create creator="new" javascript="Demo">
<param name="class" value="com.yokoboy.dwr.service.DwrDemo" />
</create> <!-- java类库类 -->
<create creator="new" javascript="MyDate">
<param name="class" value="java.util.Date" />
</create> <!-- 测试阶段使用,运营阶段不要使用 -->
<!-- convert元素用于数据类型转换,即java类和javascript之间相互转换 -->
<convert converter="exception" match="java.lang.Exception" />
<convert converter="bean" match="java.lang.StackTraceElement" />
</allow>
</dwr>
6. 新建MyDwr.jsp文件,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title>Dwr Demo</title>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/Demo.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/js/jquery1.8.js'></script>
<script type="text/javascript">
//此函数中可以调用java类的方法,除了java方法本身的参数外,还要将回调函数名作为参数传给java方法
function sayHello(name) {
Demo.getHello(name, dwrHandler);
} //这是dwr的一个回调函数,data参数即java方法getHello(String name)的返回值
function dwrHandler(data) {
alert(data);
}
</script>
</head> <body>
<input>
<button onclick="sayHello($('input').val());">提交</button>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title>Dwr Demo</title>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/Demo.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/js/jquery1.8.js'></script>
<script type="text/javascript">
//此函数中可以调用java类的方法,除了java方法本身的参数外,还要将回调函数名作为参数传给java方法
function sayHello(name) {
Demo.getHello(name, dwrHandler);
} //这是dwr的一个回调函数,data参数即java方法getHello(String name)的返回值
function dwrHandler(data) {
alert(data);
}
</script>
</head> <body>
<input>
<button onclick="sayHello($('input').val());">提交</button>
</body>
</html>
其中用到了jquery,需要自行导入。
发布网站,访问MyDwr.jsp即可查看效果!
二、说明
1. 查看jsp源代码,最上面引入了几个js文件,实际上是不存在的,不用考虑它们在哪儿。
2. 其中engine.js和util.js是固定的。另外的一个js的名称就是dwr.xml中配置的类名。
这些js的路径基本是:app_root/dwr/....模式的,一定要写对。
3. 访问 “app_root/dwr” ,这是dwr本身提供了一个测试环境,可以直接执行服务器端函数中的方法。
其中MyDate里面的函数是java.util.Date类里面的方法。
4. 打开web.xml 文件。里面配置了一个servlet,“url-pattern”配置的是“/dwr/*”,所以拦截所有已dwr开头的请求。
url-pattern”如果改成了/ddd/*,页面中都需吧dwr该成ddd
5. 再看dwr.xml文件(这个文件名不能改,必须是dwr),里面“create了两个javascript”,再看源代码中,确实使用Demo作为实例来引用 com.yokoboy.dwr.service.DwrDemo里面的方法。
参考:
http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html
DWR 3.0 入门示例教程的更多相关文章
- Omnet++ 4.0 入门实例教程
http://blog.sina.com.cn/s/blog_8a2bb17d01018npf.html 在网上找到的一个讲解omnet++的实例, 是4.0下面实现的. 我在4.2上试了试,可以用. ...
- [转] Struts2入门示例教程
原文地址:http://blog.csdn.net/wwwgeyang777/article/details/19078545/ 回顾Struts2的使用过程,网上搜的教程多多少少都会有点问题,重新记 ...
- surging+CentOS7+docker+rancher2.0 入门部署教程
准备工作 开发环境 Visual Studio 2017 15.5 运行环境 虚拟机CentOS 7+Docker+Rancher 2.0+Consul+RabbmitMQ 项目下载地址 htt ...
- TensorFlow入门示例教程
本部分的代码目前都是基于GitHub大佬非常详细的TensorFlow的教程上,首先给出链接: https://github.com/aymericdamien/TensorFlow-Examples ...
- haproxy2.0入门部署教程
测试后发现,haproxy2.0和之前的版本部署有些许差异,配置文件的写法也是不同的 测试环境:Centos7.3 IP:172.16.1.227 172.16.1.228 部署httpd,页面内容为 ...
- jsf2入门视频 教程
jsf2.0 入门视频 教程 需要的看下.初次录视频.还有很多需要完善. JSF交流QQ群84376982 JSF入门视频下载地址 http://pan.baidu.com/s/1jG3y4T4 ...
- Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1
摘要: Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1 安装遇到问题请文末留言. 悦动智能公众号:aibbtcom AI这个概念好像突然就 ...
- Solr7.3.0入门教程,部署Solr到Tomcat,配置Solr中文分词器
solr 基本介绍 Apache Solr (读音: SOLer) 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache ...
- 《VC++ 6简明教程》即VC++ 6.0入门精讲 学习进度及笔记
VC++6.0入门→精讲 2013.06.09,目前,每一章的“自测题”和“小结”三个板块还没有看(备注:第一章的“实验”已经看完). 2013.06.16 第三章的“实验”.“自测题”.“小结”和“ ...
随机推荐
- 关于FPGA电源精度要求
FPGA对DC-DC精度的要求不断提升 FPGA厂商不断采用更先进的工艺来降低器件功耗,提高性能,同时FPGA对供电电源的精度要求也越加苛刻,电压必须维持在非常严格的容限内,如果供电电压范围超出了规范 ...
- EF中创建、使用Oracle数据库的Sequence(序列)功能
** 背景 ** 项目中订单号原来的生成规则由日期加随机数组成,后期需求决定将订单号生成规则更改为生成日期加当天当前订单数. 每天的订单数都是从0开始的,每生成一个订单,订单数就应该加1.订单数应该是 ...
- Spring不支持静态注入
在springframework里,我们不能@Autowired一个静态变量,使之成为一个spring bean,例如下面这样: @Autowired private static YourClass ...
- 第四章 Kubernetes 架构
4.1 Master节点:Master是大脑,运行如下Daemon服务: API Server(kube-apiserver) API server提供了HTTP/HTTPS RESTful ...
- video2gift环境安装(Theano等)
pip install Theano http://deeplearning.net/software/theano/install_centos6.html pip install moviepy ...
- java实现二叉树demo
二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的.分别称作这个根的左子树和右子树的二叉树组成. 这个定义是递归的.由于左.右子 ...
- StringsUtil字符串工具类---灵活截取
package com.js.ai.modules.pointwall.interfac; import javax.print.attribute.standard.MediaName; publi ...
- python学习笔记(十):操作excel
一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...
- 【转】详解Data Binding 通过几个简单示例深入了解WinForm数据绑定特性
原文地址:http://www.cnblogs.com/lichence/archive/2012/02/17/2356001.html
- 1001.害死人不偿命的(3n+1)猜想
题目截图: 思路: 简单模拟.具体见另一篇博客. 代码: /* 1001.害死人不偿命的(3n+1)猜想 */ #include <stdio.h> #include <string ...