各种Dwr简介不需要多说,知道是实现局部刷新就差不多了,至于实现原理,慢慢参透吧,一下说明怎么使用DWR

首先建一个web工程,然后添加如下jar包:

 

清单1、开始编写调用的代码(请求的数据),Us类只是一个存储数据的对象

package com.dwr;

import java.util.ArrayList;
import java.util.List;

/**
 * 供界面js调用的方法,只写了几个
 * @author 
 *
 */
public class TestMethod {
    /**
     * 字符串类型
     * @return
     */
    public String sayHi() {
        return "hello DWR!";
    }
    /**
     * 字符串类型
     * @param yourName  接收的参数
     * @return
     */
    public String sayHello(String yourName) {
        return "hello DWR!" + yourName;
    }
    
    /**
     * object类型
     * @return
     */
    public Us showObj() {
        Us us = new Us();
        us.setUsName("hux");
        us.setUsPwd("123");
        return us;
    }
    /**
     * list 类型
     * @return
     */
    public List showList() {
        List list = new ArrayList();
        Us us = new Us();
        us.setUsName("hux");
        us.setUsPwd("123");
        Us pw = new Us();
        pw.setUsName("hux");
        pw.setUsPwd("123");
        list.add(us);
        list.add(pw);
        return list;
    }
}

清单2、配置web.xml文件,(org.directwebremoting.servlet.DwrServlet)jar包里的

    <servlet-name>dwr</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</servlet-name>
      <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>

清单3、配置dwr.xml 配置文件

<?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="dwrObj" scope="session"><!-- 注意: dwrObj是js中方法调用对象,命名不定-->
            <param name="class" value="com.dwr.TestMethod" /><!-- 配置的dwr方法 -->
        </create>
        <convert converter="bean" match="com.dwr.Us"/><!-- 配置数据存储对象 -->
    </allow>
</dwr>

配置好以上内容就可以测试dwr了,把项目运行起来,在项目url名称 后面加上web.xml配置的dwr地址访问(http://localhost:8080/Test/dwr)

点击dwrObj对象就会看到我们在TestMethod 编写的方法,可以在这里点击Execute测试是否正确,如下:

 

如果方法都没有问题,就可以在界面调用了

清单4、界面代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
    <script type='text/javascript' src='/Test/dwr/interface/dwrObj.js'></script>
    <script type='text/javascript' src='/Test/dwr/engine.js'></script>
    <script type='text/javascript' src='/Test/dwr/util.js'></script>
    <!-- 以上三个js文件为dwr测试界面的三个地址,直接拷贝过来即可 -->
  
  <script type="text/javascript">
      function showOne(){
          dwrObj.sayHi(callback);//dwr对象 dwrObj直接调用服务器的方法,其中回调函数callback用于接收数据
      }
      var  callback = function(data){
      alert("showOne="+data);//显示接收到的数据
      }      
      function showTwo(){
      var name = dwr.util.getValue("usName")
          dwrObj.sayHello(name,callbackp);//参数直接传递过去
      }
      var  callbackp = function(data){
      alert("showTwo="+data);
      }
      
      function showthreen(){
          dwrObj.showObj(call);
      }
      var  call = function(data){
      alert("showthreen :us:="+data.usName+"\n"+"pwd:="+data.usPwd);//对象直接点属性就可以了
        
      }
      
      function showfour(){
          dwrObj.showList(callss);
      }
      var  callss = function(data){//List直接循环取得对象,对象直接点属性就可以了,那么map什么的都同理了
      for (i=0;i<data.length;i++){
              alert("us:="+data.usName+"\n"+"pwd:="+data.usPwd);
              }
      }
  </script>
  <body>
    This is my JSP page. <br>
    <button onclick="showOne()">showOne()</button>
    
    <br/> <br/><br/>
    <input type="text" id="usName"/><button onclick="showTwo()">showTwo()</button>
    <br/><br/><br/>
     <button onclick="showthreen()">showthreen()</button>
     <br/><br/><br/>
    <button onclick="showfour()">showfour()</button><br/><br/><br/>
  </body>
</html>

 

搞定后再次运行项目 查看效果,如果你仔细的看完了 ,界面js直接调用到了服务器上的方法,是不是觉得dwr很简单呢

(转载请注明原文链接,谢谢)

posted on 2013-10-11 17:41  Hux、Diy  阅读(379)  评论(0编辑  收藏  举报