dwr学习

来源:互联网 发布:中铁四局网络采购平台 编辑:程序博客网 时间:2024/06/06 01:38

1.概念

DWR(Direct Web Remoting)是一个web远程调用框架,利用这个框架可以让ajax开发变得很简单,利用DWR可以在客户端利用JavaScript调用服务器端的java方法并返回值给JavaScript,就好像直接本地客户端调用一样,其实大家知道 JavaScript 是客户端的脚本语言,怎么可以调用服务器端的Java方法,因为DWR根据java类 来动态生成JavaScript代码,它们方法是一样的,感觉就是 直接调用的java方法了。

看看例子 怎么调用的吧。

2.一个简单的DWR示例

第一步:拷贝dwr.jar到项目的lib目录下。

第二步:在web.xml文件中注册DWR核心Servlet

<servlet>
      <servlet-name>dwr-invoker</servlet-name>
      <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>dwr-invoker</servlet-name>
      <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>

第三步:添加dwr.xml文件(DWR利用配置文件将java类 生成 JavaScript)

<?xml version="1.0" encoding="UTF-8"?>
<dwr>
    <allow>
        <create creator="new" javascript="JDate">
            <param name="class" value="java.util.Date"/>
        </create>
    </allow>
</dwr>

第四步:添加html页面(引入红色标记的js文件)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>TestDate</title>
<script type="text/javascript" src='dwr/engine.js'></script>
<script type="text/javascript" src='dwr/interface/JDate.js'></script>

<script type="text/javascript">
    function init(){
        JDate.getYear(call);//调用的是java.util.Date中的getYear方法
    }
    function call(data){
        alert(data);
    }
</script>
</head>
<body onload="init()">
    
</body>
</html>

第五步:部署项目,启动服务器,打开浏览器,在地址栏输入

http://127.0.0.1:8080/项目名/dwr/interface/JDate.js

然后就可以看到生成的js代码了。就是咱们dwr.xml配置文件中 Java中的java.util.Date类中的方法转化成JavaScript代码了。

// Provide a default path to dwr.engineif (dwr == null) var dwr = {};if (dwr.engine == null) dwr.engine = {};if (DWREngine == null) var DWREngine = dwr.engine;if (JDate == null) var JDate = {};JDate._path = '/beifengCRM/dwr';JDate.equals = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'equals', p0, callback);}JDate.toString = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'toString', callback);}JDate.hashCode = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'hashCode', callback);}JDate.clone = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'clone', callback);}JDate.compareTo = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'compareTo', p0, callback);}JDate.compareTo = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'compareTo', p0, callback);}JDate.parse = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'parse', p0, callback);}JDate.after = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'after', p0, callback);}JDate.before = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'before', p0, callback);}JDate.from = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'from', p0, callback);}JDate.getTime = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getTime', callback);}JDate.setTime = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'setTime', p0, callback);}JDate.getDate = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getDate', callback);}JDate.UTC = function(p0, p1, p2, p3, p4, p5, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'UTC', p0, p1, p2, p3, p4, p5, callback);}JDate.getDay = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getDay', callback);}JDate.getHours = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getHours', callback);}JDate.getMinutes = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getMinutes', callback);}JDate.getMonth = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getMonth', callback);}JDate.getSeconds = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getSeconds', callback);}JDate.getTimezoneOffset = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getTimezoneOffset', callback);}JDate.getYear = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'getYear', callback);}JDate.setDate = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'setDate', p0, callback);}JDate.setHours = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'setHours', p0, callback);}JDate.setMinutes = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'setMinutes', p0, callback);}JDate.setMonth = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'setMonth', p0, callback);}JDate.setSeconds = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'setSeconds', p0, callback);}JDate.setYear = function(p0, callback) {  dwr.engine._execute(JDate._path, 'JDate', 'setYear', p0, callback);}JDate.toGMTString = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'toGMTString', callback);}JDate.toInstant = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'toInstant', callback);}JDate.toLocaleString = function(callback) {  dwr.engine._execute(JDate._path, 'JDate', 'toLocaleString', callback);}