dwr原理及简单实例

1
DWR包含2个主要部分:
 一个运行在服务器端的Java Servlet,它处理请求并且向浏览器发回响应。
 运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页。

DWR工作原理是通过动态把Java类生成为Javascript。它的代码就像Ajax魔法一样,你感觉调用就像发生在浏览器端,
但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。

2
Java 从根本上讲是同步机制,然而 AJAX 却是异步的。所以你调用远程方法时,当数据已经从网络上返回
的时候,你要提供有反调 (callback) 功能的 DWR。

3
DWR动态在JavaScript里生成一个AjaxService类,去匹配服务气端的代码。由eventHandler去调用它,
然后DWR处理所有的远程细节,包括倒置 (converting) 所有的参数以及返回Javascript和Java之的值。

实例:
1,首先下载dwr.jar 放进lib目录中。
2,配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>


3,编写后台处理类
package com.dwr.action;
public class Person {
public String getPersonName()
{
return "chenchaoyang";
}
}

4,编写dwr.xml放进web-inf文件夹下
<?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="service">
<param name="class" value="service.PersonService" />
<include method="getPersonName">
</include>
</create>
</allow>
</dwr>


5,编写jsp页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<script type='text/javascript' src='dwr/interface/service.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 getMyname()
{
service.getPersonName("chenchaoyang",myCallBack);
}
function myCallBack(data)
{
alert(data);
}
</script>
</head>
<body>
<input type="text">
<input type="button" value="获取服务器上的名字" onclick="getMyname()">
</body>
</html>


6 访问之后点击按钮可以看到服务器饭回来的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值