最简单实用的Ajax框架么,DWR

DWR,全称是Direct Web Remoting,直接web远程?我的理解是可以用JavaScript直接调用java方法吧,当然JavaScript是没有权限直接调java方法的,中间还经过了若干过程,dwr做的,就是帮我们处理了这个繁琐的中间过程。


public String getDate(){
//举个例子,js处理日期比较麻烦,java则比较顺手
return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
}



<script type="text/javascript">
//如果我们在javascipt里面能调用我们的java方法,那该多好,dwr帮你完成这一切
Ajax.getDate(function(time){
//这里我们就能得到一个14位的时间了,感觉是不是和java里面调用static方法一模一样呢?神似Calendar.getInstance() ?
alert(time);
});
</script>


-------------------------------------------------------------------

用的人很多了这个,jquery的ajax也不错,但是一直倾向于用dwr,感觉就像直接调用java方法一样,简单方便,也不需要自己处理太多东西,特别是中文处理方面,比jquery强好多。

本文实际上是DWR官方[url=http://directwebremoting.org/dwr/introduction/getting-started.html]OverView[/url]的简版:

[color=red][size=xx-large]1[/size][/color]. 下载 dwr.jar 和 commons-logging
[color=red][size=xx-large]2[/size][/color]. 在web.xml中配置dwr

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>org.directwebremoting.servlet.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>




[color=red][size=xx-large]3[/size][/color]. 在WEB-INF目录下新建dwr.xml文件

<!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>
<!--
修改“your.java.Bean”为你的类路径
Demo这个名字也是随便命的,这个名字以后用来调用你your.java.Bean这个类,如下面这个,以后用Demo.getName()之类的,就表示调用Bean类里面的getName方法
-->
<create creator="new" javascript="Demo">
<param name="class" value="your.java.Bean"/>
</create>
</allow>
</dwr>



[color=red][size=xx-large]4[/size][/color]. 已经配完了,简单吧,下面做个demo

这里是我的dwr.xml

<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">

<dwr>
<allow>
<create creator="new" javascript="Demo">
<param name="class" value="com.djwl.core.dwr.TestDWR"/>
</create>
</allow>
</dwr>


com.djwl.core.dwr.TestDWR

package com.djwl.core.dwr;


public class TestDWR {

public String getName(String name){
return "my name is: " + name;
}
}



javascript代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index.htm</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=gbk">

<script type="text/javascript" src="/dwr/interface/Demo.js"></script>
<script type="text/javascript" src="/dwr/engine.js"></script>

<script type="text/javascript">
<!--
window.onload = function(){
/**
* 方法一
* @param {Object} data
*/
Demo.getName("huxiao", {
callback:function(data){alert(data)}
});
/**
* 方法二,这两种都是可以的,选用自己喜欢的
* @param {Object} data
*/
Demo.getName("胡晓", function(data){
alert(data);
});
}
//-->
</script>

</head>

<body>
</body>
</html>




[color=red][size=xx-large]5[/size][/color]. dwr传的参数不止是string or int……还支持object
你可以在JavaScript端定义一个person对象,然后传给java端,在java端用一个Person person接收,回传的时候也支持json。下面是JavaScript代码,java的就不用写了吧

var person = function(){
this.name = "huxiao";
this.age = 18;
}


[color=red][size=xx-large]6[/size][/color]. 怎么获取HttpServletRequest 或者 HttpServletResponse 呢?

在dwr里面非常简单,需要他是吧,什么都不用做,直接就拿来用


/**
* <p>功能描述:在这里,我添加了两个参数,那么dwr就会自动给我们传过来request和response,前台代码不变</p>
*
* @param name
* @param request
* @param response
* @return
* @author 胡晓 <BR> kskr@qq.com <BR>
* 时间:2010-3-15 下午09:29:51 <BR>
*/
public String getName(String name, HttpServletRequest request, HttpServletResponse response) {
System.out.println(request.getRemoteAddr());
return "my name is: " + name;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值