本人使用DWR的目的不单是为了使用它的AJAX功能,最主要还是因为它能够“直接”访问java类中的方法,实际上在使用的时候DWR框架把在验证文件里面写的JS转换为java代码去访问指定的方法,然后再把结果返回给javascript
本文DEMO下载地址:http://download.csdn.net/download/xpsharp/3727772
配置
第一步:下载dwr.jar包。commons-logging.jar包(这个包主要是打印DWR框架的debug信息)
第二步:在WebRoot/WEB-INF/下web.xml中配置过滤器
<!-- dwr -->
<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>
<!-- end dwr -->
第三步:DWR框架也有自己的一个“dwr.xml ”配置文件,用来配置javascript中使用的对象映射java中的哪个类
<?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="TestDwr">
<param name="class" value="dwr.TestDwr"/> <!-- dwr.TestDwr 为自己定义的一个类用来处理JS请求的方法 -->
</create>
</allow>
</dwr>
第四步:在jsp页面中使用DWR框架
<%@ 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>DWR's HelloWorld</title>
<!-- 这三个js为使用DWR框架中必须引用的三个JS文件,在现实文件中是不存在的,在使用DWR的时候才会动态为你创建 -->
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='dwr/interface/TestDwr.js'></script>
<!-- 这三个js为使用DWR框架中必须引用的三个JS文件,在现实文件中是不存在的,在使用DWR的时候才会动态为你创建 -->
<!-- 这个文件为真正使用DWR框架的文件 -->
<script type='text/javascript' src='hello.js'></script>
<!-- 这个文件为真正使用DWR框架的文件 -->
</head>
<body>
<input id="user" type="text" /><input type='button' value='哈罗' οnclick='hello();' /> <div id="result"></div>
</body>
</html>
hello.js
function hello(){
var user = document.getElementById('user').value;
TestDwr.sayHello(user,callback);
}
function callback(msg){
DWRUtil.setValue('result',msg);
}
dwr.TestDwr.java
package dwr;
public class TestDwr {
public static String sayHello(String name){
return "sharp"+name;
}
}