一:准备工作
建立Web工程,引入dwr jar包,web.xml文件中添加servlet写法,见下;
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.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="loadingUtil">
<param name="class" value="com.lvbinbin.pojo.DWRLoading"></param>
<include method="loading"/>
</create>
</allow>
</dwr>
<include>标签
include标签和exclude标签互相冲突,如果include以及exclude都不写,即该bean中方法都会被引入,但是如果其父类为Object类型,toString() wait()这些方法是不会被引入的,如果需要使用就需要手动include标签中添加。
至于哪些方法被引入了,哪些方法没有引入,dwr也提供了查看页面:
servlet里映射路径比如是/dwr/*
<servlet>
<servlet-name>dwr</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<!-- 添加调试模式,方便调试方法,正式发布的时候可以改为false 默认值为fasle -->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!-- 这个crossDomainSessionSecurity必须配置,应该是跨区域提交设置,默认是ture, 如果不设置为false就会报错:Session Error -->
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
那 机器地址:端口//项目名/dwr 即可访问到,点击进入可以查看具体以及测试功能;需要提及的一点,比如我操作该对象设置了其中某个属性,调用get方法,是无法得到刚才设置上的属性值;
页面上写法引入(其中DWRDemo为我的项目名):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- Dwr 引擎库 -->
<script type='text/javascript' src='/DWRDemo/dwr/engine.js'></script>
<!-- Dwr 工具库 -->
<script type='text/javascript' src='/DWRDemo/dwr/util.js'></script>
<script type='text/javascript' src='/DWRDemo/dwr/interface/loadingUtil.js'></script>
</head>
<body>
<div id="curTime">当前时间:</div>
<script type="text/javascript">
window.onload = function() {
DWRUtil.useLoadingMessage();
loadingUtil.loading(function(data){
alert(data);
});
}
</script>
</body>
</html>
DWRLoading.java文件如下(查看useLoadingMessage特意设置了延迟):
package com.lvbinbin.pojo;
public class DWRLoading {
public String loading() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "数据返回success!";
}
}
useLoadingMessage方法即页面等待时候的前置回调提示信息:默认为Loading,会在最右上角显示
当传入参数时,显示信息就会生效;
DWRUtil.useLoadingMessage("等待中");
DWRUtil与dwr.util为同一个对象,使用起来没有差异,使用useLoadingMessage方法需要引入dwr/util.js,因为实在util.js中定义的
此外DWRUtil还有很多实用的方法,下次一一补充,待续。。。。