DWR工作原理
DWR(Direct Web Remoting)是一个用于改善web页面与java类交互的远程服务Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。用可以理解的语言来讲就是:DWR包含一个java库,以及一套javascript,使得我们可以用一种非常简单的方式,在页面上使用javascript直接调用后台的java对象。
DWR架构简易图
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> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"> <dwr> <allow> <create creator="new" javascript="test1"> <param name="class" value="com.bjsxt.dwr.Test1"/> </create> </allow> </dwr>
第三步:JavaBean源代码
package com.bjsxt.dwr; public class Test1 { public String sayHello(String name){ return "你好,"+name; } }
第四步:jsp代码
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <Meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <script type="text/javascript" src="dwr/engine.js"></script> <script type="text/javascript" src="dwr/util.js"></script> <script type="text/javascript" src="dwr/interface/test1.js"></script> <title>Insert title here</title> <script type="text/javascript"> function sayHello(){ test1.sayHello("李四ddd",function(data){ alert(data); } ); } </script> </head> <body> <a href="#" onclick="sayHello()">Test1</a> </body> </html>注:
<script type="text/javascript" src="dwr/engine.js"></script>//核心引擎库 <script type="text/javascript" src="dwr/util.js"></script>//辅助工具函数库 <script type="text/javascript" src="dwr/interface/test1.js"></script>//实际上这个文件并不存在,这是由dwr在运行的时候动态生成的!DWR参数传递:
DWR常用函数:
设置异步/同步模式
默认情况下,DWR以异步的方式跟服务器通信,即可以同时向服务器发送请求,如果想要改为同步的方式,可以调用:dwr.engine.setAsync(false);
获得对某个页面元素对象的引用
$(“元素的ID或名称”)