dwr简单应用实例

其实刚开始接触dwr时就感觉它与ajax实现的功能很像,后来才了解dwr本身就是对ajax的一个封装框架。如果一个项目中需要大量用到ajax功能,我建议可以使用此框架,原因是方便很方便。以下是我用dwr框架写的一个实例:


1.首先要导入dwr.jar包,同时,dwr依赖于commons-logging.jar这个包,所以此包也要引入,如果要与spring框架整合,还要导入spring.jar


2.配置web.xml

<servlet>
	<servlet-name>dwr-invoker</servlet-name>
	<servlet-class>uk.ltd.getahead.dwr.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>

如果要与spring整合,也要加入spring相关配置

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath*:*.xml</param-value>
</context-param>
<listener>
	<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

3.配置dwr.xml
<allow>	
<!-- 加include可以具体指定java类中关的方法,不加则默认类中全部为public的方法-->
<create creator="new" javascript="testDWR2">
	<!-- param name="beanName" value="testDWR2" />-->
	<param name="class" value="com.test.TestDWR2"></param>
			<include method="testFun"/>
 </create>

</allow>

<create>标签是dwr中重要的标签,用来描述 java(服务器端) 与 javascript (客户端)的交互方式。其中,creator和javascript是必须属性,其他可以忽略。creator包含有以下几个值:
new:Java用“new”关键字创造对象
none:它不创建对象 (v1.1+)
scripted:通过BSF使用脚本语言创建对象,例如BeanShell或Groovy
spring:通过Spring框架访问Bean
struts:使用Struts的FormBean (v1.1+)
jsf:使用JSF的Bean (v1.1+)
pageflow:访问Weblogic或Beehive的PageFlow (v1.1+)
ejb3:使用EJB3 session bean (v2.0+)
如果要与spring整合则dwr.xml 如此配置并且要在spring.xml文件中配置相关bean
<!--加include可以具体指定java类中关的方法,不加则默认类中全部为public的方法-->
<create creator="spring" javascript="testDWR2">
<param name="beanName" value="testDWR2" />
<include method="testFun"/>
</create>

spring.xml中配置:
   <bean id="testDWR2" class="com.test.TestDWR2"></bean>

4.在jsp中引入js


其中engine.js必须要,如果需要用到dwr提供的一些方便的工具要引用util.js ,然后是dwr自动生成的js文件,名字必须和dwr.xml中create标签的javascript属性值一样,且是dwr/interface开头的目录

5.接下来就可以分别写javascript和java代码了

<script type="text/javascript">
function testFun2() {
    var name ='aaaaa';
testDWR2.testFun(name,returnFun); //调用java方法,第二个参数是回调函数
}
function returnFun(data) {  //data对应着java方法的返回值
    alert(data);
}
</script>

package com.test;
public class TestDWR2 {
	public String testFun(String str) {
        str += "bbb";
        return str;
    }
}

到此经过以上几步就可以实现dwr的基本功能了,至于更深层次的应用,就要去看api或是网上查询了。

6.补充

1)dwr可以设置是否采用异步方式访问java代码,其代码为:
dwr.engine.setAsync(false); //false为同步,true(默认)为异步

2)以及dwr对于异常的处理,这里我只列出个简单的全局性异常捕获,具体到针对某个方法的异常捕获,大家可以自己上网找找。
dwr.engine.setErrorHandler(errh);
function errh(errorString,exception) {
errorFlag = true;
alert("操作失败!");
}

3)dwr同样支持参数为对象的方法,这需要在dwr.xml中配置下<convert>标签:
<convert converter="bean" match="com.example.Person"/>


源代码下载:http://download.csdn.net/detail/u012255097/9766150

相关文章

$.AJAX()方法中的PROCESSDATA参数 在使用jQuery的$.ajax()方...
form表单提交的几种方式 表单提交方式一:直接利用form表单提...
文章浏览阅读1.3k次。AJAX的无刷新机制使得在注册系统中对于...
文章浏览阅读1.2k次。 本文将解释如何使用AJAX和JSON分析器在...
文章浏览阅读2.2k次。/************************** 创建XML...
文章浏览阅读3.7k次。在ajax应用中,通常一个页面要同时发送...