现在的位置: 首页 > 综合 > 正文

dwr使用手册

2013年06月21日 ⁄ 综合 ⁄ 共 5199字 ⁄ 字号 评论关闭
DWR使用手册

1、下载 dwr.jar 包,把它放到你的 webapp 的 WEB-INF/lib 目录下。

2、编辑配置文件,需要把下面的代码加到 WEB-INF/web.xml 文件中。<servlet> 那部分需要和其他的 <servlet> 在一起,<servlet-mapping> 部分也一样。

    <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>config-newbeeg</param-name>
          <param-value>/WEB-INF/dwr-newbee.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
   
    注意:debug参数在正式发布时要设为false;configXXXX参数指定了dwr的主配置文件。

3、开发DWR服务组件和数据组件

    3.1、使用jre已有类作为服务组件。比如:java.util.Date
   
    3.2、开发单实例公用服务组件。
   
    public class ServicFactory {
       
        // 以下为类域
       
        private static final ServicFactory instance = new ServicFactory();
       
        @SuppressWarnings("unused")
        private static ServicFactory getInstance() {
            return instance;
        }
       
        /**
         * 用户登录验证
         *
         * @param userName 用户名
         * @param password 用户密码
         * @return boolean 返回true表示可以登录,false表示不能登录
         * @Author guo
         * @EditTime 2008-9-26 下午09:17:16
         */
        public static boolean canLogin(String userName, String password){
           
            return true;
        }
       
        // 以下为对象域
       
        private ServicFactory() {
        }
       
   
    }
   
    3.3、开发对象隔离服务组件
       
    public class ServiceSum {
       
        public ServiceSum() {
        }
       
        public int sum(int[] array){
            int result = 0;
            for (int i = 0; i < array.length; i++) {
                result+=array[i];
            }
            return result;
        }
       
        public void setNCount(int count) {
            System.out.println(count);
        }
   
    }
   
    3.4、数据Bean
   
    public class User {
   
        private String id;
        private String name;
       
        public User() {
        }
       
        public User(String id,String name) {
            this.id = id;
            this.name = name;
        }
   
        public String getId() {
            return id;
        }
   
        public void setId(String id) {
            this.id = id;
        }
   
        public String getName() {
            return name;
        }
   
        public void setName(String name) {
            this.name = name;
        }
   
    }
       
   
4、在WEB-INF目录下的web.xml旁边创建一个dwr.xml文件。可以从最简单的配置开始:

    <!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
    <dwr>
      <allow>
          <create creator="new" javascript="JDate">
          <param name="class" value="java.util.Date"/>
        </create>
       
        <create creator="new" javascript="ServiceSum">
          <param name="class" value="com.newbee.service.ServiceSum"/>
          <include method="sum"/>
          <include method="setNCount"/>
        </create>
       
          <create creator="none" javascript="ServicFactory">
          <param name="class" value="com.newbee.service.ServicFactory"/>
          <include method="canLogin"/>
          <include method="getUser" />
        </create>
       
        <convert match="com.newbee.bean.*" converter="bean"/>
      </allow>
    </dwr>
   
    注意:
        3.1、creator="new",表示生成一个对象;creator="none",表示调用类方法和属性(static)
        3.2、javascript 指出在页面调用此方法活属性的js对象名称
        3.3、include和exclude属性来更精确的控制远程可以被调用的方法
        3.4、<convert match="com.newbee.bean.*" converter="bean"/>,把指定包中的Bean与页面中的js对象进行转换(bean必需包含无参数构造函数)
        3.5、原生类型,String,像BigDecimal这样的简单对象及其数组和集合的转换器已经有了,不需要再指定。
       
5、获取DWR服务组件列表和使用某一组件需要引入的js文件

    5.1、访问以下地址获取服务组件列表
   
        http://localhost:8080/[YOUR-WEBAPP]/dwr/
       
    5.2、获取使用某一组件要引入的js文件,点击上面列表中相应组件的链接可以看到如下的引入文件
   
        <script type='text/javascript' src='/[应用名称]/dwr/interface/[组件名称].js'></script>
          <script type='text/javascript' src='/[应用名称]/dwr/engine.js'></script>
        <script type='text/javascript' src='/[应用名称]/dwr/util.js'></script>
       
        注意: /[应用名称] 路径可以用 request.getContextPath() 替代。
       
6、在页面中使用定义的js对象
   
    <script type='text/javascript' src='/newbee/dwr/interface/ServicFactory.js'></script>
    <script type='text/javascript' src='/newbee/dwr/interface/ServiceSum.js'></script>
    <script type='text/javascript' src='/newbee/dwr/interface/JDate.js'></script>
    <script type='text/javascript' src='/newbee/dwr/engine.js'></script>
    <script type='text/javascript' src='/newbee/dwr/util.js'></script>
   
    <script language="javascript">
   
        ServicFactory.canLogin('sean','123',
            {
                callback: function(msg) { alert(msg); },
                timeout: 3000,
                errorHandler: function(msg) { alert(msg); }
            }
        );
       
        ServicFactory.getUser('12',
            {
                callback: function(user) { debugger;alert(user.id+'#'+user.name); },
                timeout: 3000,
                errorHandler: function(msg) { alert(msg); }
            }
        );
       
        var arr=[12,23,5,3,25,98,76,54,56,76,3000];
        ServiceSum.sum(arr,
            {
                callback: function(msg) { alert(msg); },
                timeout: 3000,
                errorHandler: function(msg) { alert(msg); }
            }
        );
       
        ServiceSum.setNCount(100);
       
        JDate.toString({
                callback: function(msg) { alert(msg); },
                timeout: 3000,
                errorHandler: function(msg) { alert(msg); }
            });
       
    </script>
   
7、使用DWR开发流程

    7.1、开发新服务组件类或添加服务组件中的方法
    7.2、修改dwr配置文件
    7.3、如果是开发的新服务器组件就需要在页面文件中引入对应的js文件

       
   

抱歉!评论已关闭.