ajax 框架 ----dwr

 

今天想自己学习一下一个框架(Dwr),原来从来没有接触过。所以不知道从什么地方下手。于是就上百度上去搜索一下,但是按照上面说的配置好了,但是试了试还是不行。不过最终成功!

现在记下一下自己使用的注意事项,因为网页上的其他例子程序 虽然很多,但是忽视了其中的一些小问题。

由于dwr是js和java 之间的交互。所以首先要建立一个java类,用于处理业务上的代码:如下:

[code=java]

package com.cfd.drp.dwr;

import java.io.IOException;

public class DwrPage {


public String getMessage() {

return "hello,cfd";
}

}

[/code]

这个类是随便写的,主要是能完成你的业务需要就可以了,既然说是js和 服务器的交互,那方法一般都需要返回类型的,这样才能交互嘛!

接下是要导包。我用的dwr的版本是2.0的。所以只需要一个dwr.jar就行。放到web-inf下面的lib目录下,这点和其他框架是一样的。接下来 就是配置了。配置的话 一共要配置两个xml文件。一是web.xml,还有就是dwr.xml。下面分别说明这个两个文件的配置:

首先web.xml :

[code]

<?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">

<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>/sysmgr/dwr/*</url-pattern>
</servlet-mapping>
</web-app>

[/code]

注意,这其中的东西都不需要改。<url-pattern>/sysmgr/dwr/*</url-pattern> 只是这个配置要改,如果你因为我的html页面放在了webroot下面的sysmgr下。所以就需要这样配置,如果你的是直接放在webroot 下的话,那你配成<url-pattern>/dwr/*</url-pattern> 就行了。这个是要主要的地方,其他地方都不需要改的。像uk.ltd.getahead.dwr.DWRServlet这些东西,复制下来就是了,这是dw自己实现了的东西,而不是自己写的。


接下来看看配置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 javascript="dwrPage" creator="new">
<param name="class" value="com.cfd.drp.dwr.DwrPage"></param>
</create>
</allow>
</dwr>


 

配置这儿的时候也要注意了。其中的create标签中的javascript 的值是随意配置了,但是这个配置了以后 页面在调用这个类的方法的时候就要用到这个属性值。而creator 这个是方式,一般让它为new 就行了,这个地方一般也不需要更改的。<param name="class" value="com.cfd.drp.dwr.DwrPage"></param>而这其中需要改的就是value的值,这个值就是你创建的java类,用于处理业务的(要加上包名称)。其他东西不用改  。


最后就是页面了。html页面:

<!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>Insert title here</title>
<script type='text/javascript' src='dwr/interface/dwrPage.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type="text/javascript">

function init() {
dwrPage.getMessage(getResult);
}

function getResult(value) {
alert(value);
}

</script>
</head>
<body>
 <button  οnclick="init()"></button>
</body>
</html>

 

其中需要注意的是下面三段代码:

[code]

//这三个js文件是不要求自己写的,把下面的代码复制过去就行了,其中第一个是自动生成的,后面两个是已经存在的,就在dwr.jar这个包中。但是第一个需要注意的名字要修改成你自己的名字,我这是dwrPage.js ,这个是和上面的dwr.xml中的javascript属性的名称要一致。

<script type='text/javascript' src='dwr/interface/dwrPage.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>

[/code]

还有要注意到是,dwrPage.getMessage(getResult);这个就是调用java类里面的方法了。其中的dwrPage就是上面提到的javascript配置的属性,而geMessage()就是java类中的方法了。其中更需要主要的一点就是。dwr不 支持得到结果后 ,然后把结果进行直接赋值,var str = dwrPage.getMessage();这样是不允许的。解决办法就是通过给getMessage传入参数,(可以看出原来这个方法本身是没有参数的),而这个传入的参数一般是一个方法,并且这个方法也接受一个参数,而getMessage的结果就被赋值给里面的那个参数,这样就得到想要的结果了。本个程序中也就是java方法getMessage()的返回结果就赋值给getResult(value)这个方法的参数value了。大概流程就这样

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值