一、DWR简介
DWR是一个可以允许你去创建AJAX WEB站点的JAVA开源库。它可以让你在浏览器中的JavaScript代码调用Web服务器上的Java代码,就像Java代码运行在浏览器中一样。
DWR包含2个主要部分:
1.一个运行在服务器端的Java Servlet,他处理请求并且向浏览器发回响应。
2.运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页
1.将DWR放入你的工程
从http://directwebremoting.org/dwr/download 下载dwr.jar包 放入你的工程/WEB-INF/lib下
2.编辑配置文件
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>
dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="Hello">
<param name="class" value="onlyfun.caterpillar.Hello" />
</create>
</allow>
</dwr>
package onlyfun.caterpillar;
public class Hello {
public String hello(String name) {
return name;
}
}
页面
要引用几个dwr的js文件,engine.js为必要文件,util.js需要用到其中功能时加入。
引用dwr自动生成的js文件,dwr/interface/Hello.js ,这个js的文件名需要和dwr.xml中配置的一致。
Hello.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>第一個DWR程式</title>
<script type='text/javascript' src='dwr/interface/Hello.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='hello.js'></script>
</head>
<body>
<input id="user" type="text" /><input type='button' value='哈囉' onclick='hello();' />
<div id="result"></div>
</body>
</html>
hello.js
<!--
function hello() {
//$为util.js中的功能相当于document.getElementById
var user = $('user').value;
Hello.hello(user, callback);
}
//回调函数(callback)
function callback(msg) {
DWRUtil.setValue('result', msg);
}
-->
dwr.xml
一般来说只需要一个dwr.xml文件,并且会被设为默认位置WEB-INF/dwr.xml
<init-param>
<param-name>config*****</param-name>
<param-value>WEB-INF/dwr.xml</param-value>
<description>What config file do we use?</description>
</init-param>
<servlet>
<servlet-name>dwr-user-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>config-user</param-name>
<param-value>WEB-INF/dwr-user.xml</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>dwr-admin-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>config-admin</param-name>
<param-value>WEB-INF/dwr-admin.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-admin-invoker</servlet-name>
<url-pattern>/dwradmin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dwr-user-invoker</servlet-name>
<url-pattern>/dwruser/*</url-pattern>
</servlet-mapping>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<!-- 仅当需要扩展DWR时才需要 -->
<init>
<creator id="..." class="..." />
<converter id="..." class="..." />
</init>
<allow>
<create creator="spring" javascript="test">
<param name="beanName" value="test"/>
<include method="list"/>
<include method="getAll"/>
</create>
<create creator="new" javascript="user">
<param name="class" value="bean.User" />
<include method="checkLogin" />
</create>
<convert converter="bean" match="bean.User">
<param name="include" value="username,password" />
</convert>
</allow>
<!-- 有必要告诉DWR方法签名 -->
<signatures>...</signatures>
</dwr>
<init>标签
如果你想去定义一个新的Creator 或者Converter,就要在此被申明。
这种方式很像Java中的import语句
<allow>标签
allow部分定义了DWR能够创建和转换的类。
Creator
creator属性
new:指用java的new操作符创建对象
spring:通过spring framework创建对象
struts:使用struts的FormBean
scope属性
选项可以是: application, session, request 和page
param 元素
定义访问的具体java类。
include 和 exclude 元素
<create creator="new" javascript="Fred">
<param name="class" value="com.example.Fred" />
<include method="setWibble" />
</create>
Converter
你可以为某一个单独的类打开转换器:
<convert converter="bean" match="your.full.package.BeanName"/>
如果要允许转换一个包或者子包下面的所有类,可以这样写:
<convert converter="bean" match="your.full.package.*"/>
<signatures>标签
<signatures>
<![CDATA[
import java.util.List;
import com.example.Check;
Check.setLotteryResults(List<Integer> nos);
]]>
</signatures>
DWR util.js工具包的使用
$()
DWRUtil.getText(id)
DWRUtil.getValue(id)
DWRUtil.setValue(id,value)
DWRUtil.getValues()
DWRUtil.setValues()
DWRUtil.addOptions and DWRUtil.removeAlloptions
DWRUtil.addRows and DWRUtil.removeAllRows
DWRUtil.onReturn
DWRUtil.toDescriptiveString
DWRUtil.useLoadingMessage
DWR使用
最新推荐文章于 2025-08-09 20:51:19 发布