dwr學習

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.engine
if (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);
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章