这次因为项目的原因,又要开始研究DWR了。
什么是DWR?
DWR是一个Open Source的 java项目。DWR可以让JavaScript调用运行在Web服务器里面的JAVA程序。简单一点或者专业一点就是Easy AJAX for JAVA.
官方网站:http://directwebremoting.org/
刚刚在网上找了一个例子,因为下的是最新DWR版本,怎么和网上的例子有点不同,稍微改了一下就可以用了。
1. 增加web.xml的设置
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
这里其实只是增加了一个Servlet而已,这个Servlet拦截了所有/dwr/*的请求。
2. 增加dwr.xml文件
我们在WEB-INF文件夹里面增加一下dwr.xml用来设置js里面调用的类文件,文件的代码如下:
<?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="MyTest" scope="application">
<param name="class" value="com.tntxia.dwr.DWRTest"/>
</create>
</allow>
</dwr>
3. 写真正业务逻辑的代码
接下来,我们可以定义Java类来实现业务逻辑了。
package com.tntxia.dwr;
public class DWRTest {
public DWRTest(){
}
public String getMyName(){
return "Hello Ajax";
}
}
4. 最后,我们写一个JSP来展现结果
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>DWR - Test Home</title>
<script type='text/javascript' src='dwr/interface/MyTest.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script language="javascript">
var mycall=function callBack(data){
dwr.util.setValue("demo1",data);
}
function showMyName(){
MyTest.getMyName(mycall);
}
function clearName(){
demo1.value="";
}
</script>
</head>
<body>
<h1>Ajax Test Page</h1>
<input type="button" value="显示姓名" οnclick="javascript:showMyName()">
<input type="button" value="清空" οnclick="javascript:clearName()"><br>
<input type="text" id="demo1"><br>
</body>
</html>
大功告成,dwr就这么简单