dwr 学习笔记


参考引用:
  • 11.1 DWR
  • 11.1.1 DWR简介
  • 11.1.2 DWR使用入门
  • 11.1.3 试用DWR
  • 11.1.4 DWR的适用范围
使用说明: lib添加dwr.jar
web.xml添加
<? xml version="1.0" encoding="ISO-8859-1" ?>
<! DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"
>
< web-app  id ="dwr" >
  
< display-name > DWR (Direct Web Remoting) </ display-name >
  
< description > A Simple Demo DWR </ description >

  
< servlet >
    
< servlet-name > dwr-invoker </ servlet-name >
    
< display-name > DWR Servlet </ display-name >
    
< description > Direct Web Remoter Servlet </ description >
    
< servlet-class > org.directwebremoting.servlet.DwrServlet </ servlet-class >

    
<!--  This should NEVER be present in live  -->
    
< init-param >
      
< param-name > debug </ param-name >
      
< param-value > true </ param-value >
    
</ init-param >

  
</ servlet >
  <!-- 服务起来后 在地址中直接输入 http://.../dwr 就可以查看对外提供的服务类 -->
  
< servlet-mapping >
    
< servlet-name > dwr-invoker </ servlet-name >
    
< url-pattern > /dwr/* </ url-pattern >
  
</ servlet-mapping >

</ web-app >


dwr.xml
<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd"
>
< dwr >
    
< allow >
        
<!--  远程调用类 定义 updateItem, getItem 和 findItems 方法可用   -->
        
< create  creator ="new"  javascript ="CatalogDAO" >
            
< param  name ="class"  value ="com.ajaxlab.ajax.CatalogDAO"   />
            
< include  method ="getItem"   />
            
< include  method ="findItems"   />
           
< include  method ="updateItem "   />
         </ create >
        
        
<!--  数据展现定义格式 (javascriot json 格式) 
            此定义 id name description 为可见 
                  price 隐藏 
            E.g -> 
                {
                  description:"中国制造.", 
                  id:"产品-", 
                  name:"新品-"
                }
        
-->
        
< convert  converter ="bean"  match ="com.ajaxlab.ajax.Item" >
            
< param  name ="include"
                value
="id,name,description,formatted- Price"   />
        
</ convert >
    
</ allow >
</ dwr >



类说明
bean Item:
  private String id = "";
  private String name = "";
  private String description = "";
  private int price = 0;
  get();set();


dao
     public  Item getItem(String id) {
        Item item 
=   new  Item( " 产品- " + id);
        item.setName(
" 新品- " + id);
        item.setPrice(
100 );
        item.setDescription(
" 中国制造. " );
        
return  item;
    }

    
public  List findItems(String expression) {
        List list 
=   new  ArrayList();
        Item item1 
=   new  Item( " 产品-001 " );
        item1.setName(
" 新品-001 " );
        item1.setDescription(expression);
        item1.setPrice(
10 );
        Item item2 
=   new  Item( " 产品-002 " );
        item2.setName(
" 新品-002 " );
        item2.setDescription(expression);
        item2.setPrice(
15 );
        Item item3 
=   new  Item( " 产品-003 " );
        item3.setName(
" 新品-003 " );
        item3.setDescription(expression);
        item3.setPrice(
35 );
        list.add(item1);
        list.add(item2);
        list.add(item3);
        
return  list;

    }

   /* html input text ->
        {
              description:"中国制造.",
              id:"1",
              name:"刘凯毅"
        }
        return true ;
       
     */
    public boolean updateItem(Item item ){
        if( item!=null && item.getName().equals("刘凯毅") )
            return true;
       
        return false ;
    }



js 方法:
在 input 输入->>
method( !! )

bean(id,name...)
{id:1,name:'liukaiyi'}

当多参数 为 map
{dd:'liu',aa:'gg'}

js多参数
class.method(
    objectEval($("p00").value),
    objectEval($("p01").value),
reply0);

展现页:
< html >
< head >
  
< title > DWR Test </ title >
  
<!--  These paths use .. so that they still work behind a path mapping proxy. The fully qualified version is more cut and paste friendly.  -->
  
< script  type ='text/javascript'  src ='/testDwr/dwr/interface/CatalogDAO.js' ></ script >
  
< script  type ='text/javascript'  src ='/testDwr/dwr/engine.js' ></ script >
  
< script  type ='text/javascript'  src ='/testDwr/dwr/util.js' ></ script >
  
  
< script  type ='text/javascript' >
  //输入到方法中 参数 格式转换
  
function  objectEval(text){
    text 
=  text.replace( / \n / g, ' ');
    text 
=  text.replace( / \r / g, ' ');
    
if  (text.match( /^ \s * \{. * \}\s * $ / ))
    {
      text 
=  '['  +  text  +  '][ 0 ]';
    }
    
return  eval(text);
  }
 
  //本例 alert 展现
  
var  reply  =   function (data){
      alert(dwr.util.toDescriptiveString(data, 
2 ));
  }

  
</ script >


</ head >
< body  >

< li >
  findItems(    
< input   type ='text'   value ='""'  id ='p00'  />   );
  
< input  class ='ibutton'  type ='button'  onclick ='CatalogDAO.findItems(objectEval($("p00").value),  reply);' value ='Execute'   />

</ li >
< li >
  getItem(    
< input  class ='itext'  type ='text'  size ='10'  value ='""'  id ='p10'  title ='Will  be converted to: java.lang.String' />   );
  
< input  class ='ibutton'  type ='button'  onclick ='CatalogDAO.getItem(objectEval($("p10").value),  reply);' value ='Execute'   title ='Calls  CatalogDAO.getItem(). View source for details.' />
</ li >


<li>
  updateItem(   
< input  class ='itext'  type ='text'  size ='10'  value ='{}'  id ='p20'/>   );
  <input class='ibutton' type='button' onclick='CatalogDAO.updateItem(objectEval($("p20").value), reply);' value='Execute' />
</li>

</ body ></ html >





你可能感兴趣的:(dwr 学习笔记)