DWR入门示例

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直接进行访问,不会出问题。好了,就写到这里了,我要继续研究了。。。

你可能感兴趣的:(JavaScript,java,Web,xml,DWR)