DWR貌似很强大,今天闲着没事就上官网下了一个Jar包,参照官方文档,和中文文档(英语还不是够强啊),终于搞定第一个dwr程序了。
下面我就贴一下代码,说说部署步骤,跟大家一块学习一下啊。。。
1. Install the DWR JAR file
Download the dwr.jar file. Place it in the WEB-INF/lib directory of your webapp. You'll probably have a set of jar files in there already. From version 2.0, DWR also requires commons-logging.
首先下载dwr.jsr放到WEB-INF/lib目录下面。如果你用的是2.0版的话还要下载commons-loggin.否则运行时会报错。
2.Edit the config files
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-lass>
org.directwebremoting.servlet.DwrServlet
</servletclass>
<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.写一个java类
package com.mj.controller;
public class Hello {
public String sayHello(String name){
System.out.println("hello"+name);
return name;
}
}
4.配置dwr.xml跟web.xml统计
代码如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="JDate">
<param name="class" value="java.util.Date"/>
</create>
<create javascript="test" creator="new">
<param name="class" value="com.mj.controller.Hello"></param>
</create>
</allow>
</dwr>
其中javascript代表的应该是动态生成的js文件的名字,value的值是你写得javaBean的全路径,或者是JDK里面的类,比如java.util.Date
5.你可以在浏览器中输入http://localhost:port(web容器端口号)/你的Web应用访问名/dwr
就可以在页面当中显示可以调用的类,点击就可以进入了。
6.下一个JSP进行测试。
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path=request.getContextPath();
%>
<html>
<head>
<title>这是我的第一个DWR程序</title>
<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/test.js"></script>
<script type="text/javascript">
function firstDwr(){
test.sayHello("国庆快乐",callBackHello);
}
function callBackHello(data){
alert(data);
}
</script>
</head>
<body>
<input type="button" value="测试" onclick="firstDwr()">
</body>
</html>
这里的callBackHeloo是一个回调函数,data是函数返回值。。。
这里需要注意的一点是,官方推荐把util.js和engin.js放在你自己建立的一个文件夹下面,然后进行引用,这样会报错
A request has been denied as a potential CSRF attack.
解决方法有两种:
1.修改Web.xml在<servlet>中加上
<init-param>
<param-name>crossDomainSessionSecurityparam-name>
<param-value>falseparam-value>
<init-param>
2.就像我写的一样,不用单独建立一个文件夹存放那两个js文件,可以用dwr直接进行访问,不会出问题。好了,就写到这里了,我要继续研究了。。。