当前位置: 代码迷 >> Web前端 >> dwr 容易实例
  详细解决方案

dwr 容易实例

热度:34   发布时间:2012-10-11 10:16:10.0
dwr 简单实例
今天学习了一下dwr,做一个简单的总结:

将写一个的简单的实例:
首先在网上下载一个dwr.jar,commons-logging.jar这个两个jar包,放到工程的lib目录中:
然后开始写代码了:
这个是我的服务层的代码:
public class HelloWorld {
	public String sayHello(String name) {
        return "Hi, " + name;
    }


在web.xml 文件中配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	<!-- 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>
		<!--解决 dwr 报session error 问题  -->
		<init-param>
            <param-name>crossDomainSessionSecurity</param-name>   
            <param-value>false</param-value>   
        </init-param>
		
	<init-param>
        <!--主要是为了指定dwr.xml文件所在的位置  -->
	<param-name>config</param-name>
		<param-value>
		   /WEB-INF/dwr/dwr.xml
		</param-value>
	</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>dwr-invoker</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>
    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

对这个xml文件做一个简单的解释:
添加debug参数,DWR默认这个参数值为false,如果选择true,我们可以通过http://${ip}:${port}/${app}/dwr看到你部署的每个DWR Class.并且可以测试java代码的每个方法是否运行正常。为了安全考虑,在正式环境下你一定把这个参数设为false。

在dwr.xml 文件的配置:
<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"    
"http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
	<allow>
		<create creator="new" javascript="sayHelloTo">
			<param name="class" value="com.me.dwr.HelloWorld" />
			<include method="sayHello" />
		</create>
	</allow>
</dwr>   


对上面这个xml文件做一个简单的解释:
<allow> 标签中包括可以暴露给 javascript 访问的东西。
<create> 标签中指定 javascript 中可以访问的 java 类,并定义 DWR远程调用类的实例。 creator="new" 属性指定 java 类实例的生成方式, new 意味着 DWR 应当调用类的默认构造函数来获得实例,其他的还有 spring 方式,通过与 IOC 容器 Spring 进行集成来获得实例等等。 javascript=" sayHelloTo" 属性指定 javascript代码访问对象时使用的名称。
<param> 标签指定要公开给 javascript 的 java 类名。
<include> 标签指定要公开给 javascript 的方法。不指定的话就公开所有方法。
<exclude> 标签指定要防止被访问的方法

好了 到这里已经成功一半了,接下了开始写jsp啦。
jsp所对应的代码如下:
<%@ page language="java" pageEncoding="gbk"%>
<html>
	<head>
		<title>Dwr 调用测试</title>
		<!--这里sayHelloTo.js 是通过dwr.xml中配置的create标签中javascript配置的值是一致的  -->
		<script src='dwr/interface/sayHelloTo.js'></script>
		<script src='dwr/engine.js'></script>
		<script src='dwr/util.js'></script>
<script type="text/javascript">    
      function btn_onClick(){    
			var username = document.myform.name.value;    
          //调用dwr.xml中配置的类方法,回调函数callback带有返回的结果集      
          sayHelloTo.sayHello(username,callback);    
      }    
      function callback(data){    
            document.getElementById("info").innerText=data;    
      }    
</script>
	</head>
	<body>
		<form name="myform" method="post">
			<input type="text" id="name" name="name" />
			<input type="button" value="sayHello" onclick="btn_onClick()" />
			<div id="info"></div>
		</form>
	</body>
</html>


发布,启动服务就可以开始访问了:
  相关解决方案