- 导入包:dwr.jar,github下载链接:https://github.com/zhangliqingyun/jarlist/blob/master/dwr/dwr.jar
- 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>
3.在web-inf目录下创建的dwr.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://www.getaead.org/dwr/dwr20.dtd">
<dwr>
<!--allow标签中包含可以暴露给javascript访问的东西-->
<allow>
<!--create标签中指定javascript可以访问的java类名-->
<!--javascript属性指定javascript访问代码对象时使用的名称-->
<!--creator属性意味关DWR调用类的默认构造函数来获得实例-->
<create javascript="Test" creator="new">
<!--指定全限定类-->
<param name="class" value="cn.jbit.dwr.test.Test"/>
<!--指定要公开的javascript方法。不指定的话就公开所有方法-->
<include method="testMethod1"/>
<include method="testMethod2"/>
<include method="testMethod3"/>
<include method="testMethod4"/>
<include method="testMethod5"/>
<include method="testMethod6"/>
<include method="testMethod7"/>
<include method="testMethod8"/>
<include method="testMethod9"/>
</create>
<!--convert元素的作用是告诉DWR在服务器端Java对象表示和序列化的JavaScript之间如何转换类型-->
<!--这些类型包括Java原生类型和它们各自的封装类表示 ,还有String、Date、数组和集合类型-->
<!--match属性指定要转换的javabean名称-->
<!--converter属性指定转换的方式采用JavaBean规范-->
<!--注意:如果List、Set或者Map中的元素均为简单类型(包括其封装类)或者String、Date、数组和集合类型,则不需要convert标签-->
<convert match="cn.jbit.dwr.entity.User" converter="bean"></convert>
</allow>
<!--signatures用来声明java方法中List、Set或者Map参数所包含的确切类,以便java代码作出判断-->
<!--对于java返回值为List的情况,DWR将其转化 为Object数组,传递给javascript;对于java返回值为Map的情况,DWR将其转化为一个Object,其中Object的属性为原Map的key值,Object的属性值为原Map相应的value值-->
<signatures>
<![CDATA[
import java.util.List;
import cn.jbit.dwr.entity.User;
import cn.jbit.dwr.test.Test;
Test.testMethod7(List<User>);
Test.testMethod9(Map<String,User>);
]]>
</signatures>
</dwr>
4.在JSP页面中引入dwr文件,engine.js、uitl.js为dwr.jar包中自带,自定义的dwr引入格式为:/类名/dwr/interface/实体类名.js
<script type="text/javascript" src="/DWRSample/dwr/interface/Test.js"></script>
<script type="text/javascript" src="/DWRSample/dwr/engine.js"></script>
<script type="text/javascript" src="/DWRSample/dwr/util.js"></script>
5.在javascript中使用dwr定义的方法:
Test.getAge({callback:function aa(callback){
alert(callback+"callback");
}