DWR第一个示例

DWR是一种Ajax实现,他就是封装了Ajax基础代码的一个框架。

下面首先看一个DWR的小示例,看一下DWR的具体功能。

使用DWR框架第一步也是先导入相应的jar包。首先导入dwr.jar。然后导入他依赖的jar包,包括log4j.jar、common-logging.jar等

然后再web.xml中进行配置。

<servlet>
        <servlet-name>dwr_servlet</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_servlet</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>

然后再与web.xml的同级目录下新建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>
		<create javascript="service" creator="new">
			<param name="class" value="dwr.Service"/>
		</create>
	</allow>
</dwr>

关于该XML中的内容以及写法不进行详细解释,这里只是一个演示实例,进行一个简单的解释。

dwr标签是这个xml文件的顶级标签,相关的属性标签全都是这个标签的子标签。allow标签使DWR能够找到相应的java类。

在allow类中首先创建一个新的javascript,这个javascript的名字叫做service,create=“new”表示创建方式是new方式初始化,通过new初始化的类在param标签指定生成的类。然后在看相应的类,这个类在包dwr下,类名叫做Service。

package dwr;

public class Service {
	public String sayHello(String name){
		return "Hello "+name;
	}
}

在这个类中有个sayHello方法,这个方法返回一个字符串类型结果。

然后再看在JSP页面中如何调用,首先在JSP中有个按钮,当点击按钮后触发相应的javascript函数。

<body>
    <input type="button" value="DWR测试" onclick="firstDwr()"/>
  </body>

然后再看javascript代码:

	<script type="text/javascript" src="dwr/util.js"></script>
	<script type="text/javascript" src="dwr/engine.js"></script>
	<script type="text/javascript" src="dwr/interface/service.js"></script>
	<script type="text/javascript">
		function firstDwr(){
			service.sayHello("admin",callBackHello);
		}
		function callBackHello(data){
			alert(data);
		}
	</script>

注意在使用前必须导入util.js和engine.js,关于这两个js文件这里不做详细介绍。

然后将自己写的类映射成的javascript引入。这里的src的地址中"dwr/interface"是固定的,后面的service.js是你生成的javascript的名称,也就是在dwr.xml文件中使用create标签生成的名称。

这样一个简单的DWR应用程序搭建完成了。当点击JSP页面中的按钮时,会弹出一个对话框,对话框的内容是“Hello admin";

时间: 2025-01-07 12:12:01

DWR第一个示例的相关文章

创建ArcGIS API for JavaScript的第一个示例程序

原文:创建ArcGIS API for JavaScript的第一个示例程序 在上一篇博客中已经介绍了如何搭建ArcGIS API for JavaScript开发环境,如果您还没有搭建好开发环境的话,参考博客:http://blog.csdn.net/zdw_wym/article/details/48678913. 如果开发环境搭建好了的话,那么今天我们继续来搭建我们的第一个ArcGIS API for JavaScript应用程序. 下面首先将代码贴出来,复制到VS2012中新建的html

DWR第一篇之入门示例

1. 新建maven-web项目,目录结构如下: 2. 在pom.xml里添加dwr所需的依赖 1 <dependency> 2 <groupId>org.directwebremoting</groupId> 3 <artifactId>dwr</artifactId> 4 <version>3.0.1-RELEASE</version> 5 </dependency> 6 <dependency>

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

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

2018-06-26 解谜计算机科学第一章示例汉化尝试

知乎原链 示例程序来源: 解谜计算机科学(1) 比如我们想要表达一个"风扇控制器",有了它之后,风扇的转速总是当前气温的两倍.这个"当前气温"就是一个未知数. 原例程: t -> t*2 f = t -> t*2 f(t) = t*2 个人觉得相对抽象, 和数学表达比较近. 猜想选择t作变量名是因为temperature. 汉化尝试如下: 气温 -> 气温*2 风扇转速 = 气温 -> 气温*2 风扇转速(气温) = 气温*2 比如,如果我想

hibernate(二)annotation第一个示例

一.在数据库中创建teacher表(数据库hibernate) create table teache( id int auto_increment primary key, name varchar(20), title varchar(20) ); 二.创建model 在cn.orlion.hibernate.model下创建实体类Teacher(注意添加注解,一开始只添加了@Id,然后抛出异常,后来又加上了@GeneratedValue(strategy = GenerationType.

jeecg开发平台第一个示例遇到的错误

根据开发文档设计表,建表,生成代码成功后,登录到管理界面配置菜单: 新建一级菜单为订单管理,接着在下面创建了一个子菜单为:订单列表,对应的菜单地址为:orderController.do?order,如图: 之后重新登录系统却死活也看不到新建的菜单,仔细查看文档发现需要到角色管理中给管理员角色增加这个菜单的权限,如图: 接着现登录系统即看到刚才增加的菜单,如图: 接着点击"订单列表"想进入界面,却发现弹出错误提示,并且后台提示: [org.springframework.web.ser

Selenium用Python的第一个示例 (Windows系统)

Install Python (https://www.python.org/),download the latest Python version Configure environment variables. (Example), I installed Python under /installation folder with Python 3.5.2. The path set is as follows: D:\installation\Python3.5.2;D:\instal

手把手教你ranorex_android自动化测试第一个示例

要说android的自动化,那真是折腾死我了,从早期的monkeyrunner,到后来的robotium,再到最新的uiautomator,各有各的问题,总之性价比都不够高,不太适合我的使用场景.于是不愿意将研究结果投入实践,一直等待.今年的适配问题越发突出,再不自动化,回归就该搞死人了. 于是最后研究比对instrumetation和uiautomator,终于确定了uiautomator方案,其实也是勉为其难,不过总算也是可以实现的.先准备好脚本,批量修改了所有布局文件,增加了content

COM 互操作 - 第一部分”示例

// 版权所有(C) Microsoft Corporation.保留所有权利.// 此代码的发布遵从// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款.////版权所有(C) Microsoft Corporation.保留所有权利. // interop2.cs// 编译时使用 "csc interop2.cs"  using System;using System.Runtime.Intero