1、下载dwr包。
2、新建web工程,在web.xml文件中加入servlet配置。
<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>
<url-pattern>/dwr/*</url-pattern>
</servlet-
3、新建一个类。
package helloWorld;
public class Service {
public String sayHello(String yourName) {
System.out.print("throw");
return "Hello World " + yourName;
}
4、在web.xml同目录下新建dwr.xml配置文件,配置如下:(也可以直接在demo中拷贝)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="service">
<param name="class" value="helloWorld.Service"/>
</create>
</allow>
</dwr>
5、发布工程,启动服务器,在浏览器中输入http://localhost:8080/工程名/dwr,测试dwr是否配置成功。需要在web.xml中配置debug为true.
6、新建jsp页面,导入dwr配置文件,如下:
<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>//这个js是根据后台代码生成在内存当中的js,把java的代码暴露出来。
7、调用dwr的后台接口:
<script type="text/javascript">
function firstDwr() {
service.sayHello("LuLu",callBackHello);//service与dwr.xml配置的javascript属性名字一样。也是用来取名js的文件。
function callBackHello(data) {
alert(data);
</script>
8、配置多个dwr.xml配置。
在web.xml中,配置init参数,以config开头来配置dwr的名称。配置如下
<init-param>
<param-name>config-fuck</param-name>
<param-value>/WEB-INF/dwr/dwr-fuck.xml</param-value>
<param-name>config-shit</param-name>
<param-value>/WEB-INF/dwr/dwr-shit.xml</param-value>
9、配置dwr.xml文件。
init这个初始化部分申明被用来创建远程beans,在init部分定义只是告诉DWR这些扩展的存在,给出了如何使用的信息。就像import里面一样。
allow部分定义了dwr能够创建和转换的类。
create元素如何结构
<create creator="" javascript="" scope="">
<param name="" value=""/>
<exclude method=""/>
<include method=""/>
</create>
creator属性:new,spring,script等。
javascript属性:在浏览器里给你创建的对象名。不要使用javascript保留字。
param元素表示每个bean从哪里生成。
include和exclude表示要暴露和隐藏的方法。
bean和对象转换器
为某一个类单独打开转换器
<convert converter="bean" match="your.full.package.BeanName"/>
可以转换所有的javabean
<convert converter="bean" match="*"/>
dwr整合。
让dwr使用spring创造器创建和远程调用beans,配置如下:
<allow> ...
<create creator="spring" javascript="#Fred">
<param name="beanName" value="#Shiela" />
</allow>
//spring,beanName是固定写法。
dwr中的javascript
dwr根据dwr.xml生成和java代码类似的javascript代码。
不推荐回调函数放在第一个参数,可以把回调函数放在元数据对象里。
创造一个与java对象匹配的javascript对象。
var p = {name:"name1",age:20,birthdays:[new Date(),new Date("1 Jan 2008")]};
Remote.setPerson(p);
engine.js功能
用来转换来至动态生成的接口的javascript函数调用的,所以只要用到dwr就要用到,每个页面都要引入。
使用选项:通过DWREngine.setX();设置全局属性。
DWREngine.setTimeout(1000);
批量执行,减少反应时间:
DWREngine.beginBatch();
方法1;
方法2;
DWREngine.endBatch(
{timeout:3000}
);
一般使用异步方法访问服务端。
DWREngine.setErrorHandler(function);改变错误处理方式。
DWREngine.setWarningHandler(function);改变警告处理方式。
DWREngine.setPreHook(function);//调用dwr方法之前。
DWREngine.setPostHook(function);//调用dwr方法后
util.js功能
包含一些工具函数。
DWRUtil.getValue[s]()
DWRUtil.setValue[s]()
DWRUtil.addRows()
DWRUtil.removeAllRows()
DWRUtil.addOptions()
DWRUtil.removeAllOptions()
dwr错误和异常处理
function eh(msg) {
alert(msg);
DWREngine.setErrorHandler(eh);
Remote.getData(function(data){alert(data)});