中文 => English   |   English => 中文
posts - 12, comments - 2, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

简单使用DWR

Posted on 2008-09-20 11:06 牛X书记 阅读(523) 评论(0)  编辑  收藏 所属分类: AJAX
1、载入dwr的jar文件
              下载地址:http://www.cnweblog.com/Files/jimmy/dwr.rar    (将后缀名改为jar)

2、在web.xml中配制
  <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> 
  
</servlet> 
  
   
<servlet-mapping> 
     
<servlet-name>dwr-invoker</servlet-name> 
     
<url-pattern>/dwr/*</url-pattern> 
  
</servlet-mapping> 


3、在WEB-INF下建立dwr.xml和dwr20.dtd两个文件

复制以下内容到dwr20.dtd文件中,保存:

<? xml version="1.0" encoding="UTF-8" ?>
<!--  This is the DTD for DWR v2.x  -->

<!--
Top level conviguration element.
-->
<! ELEMENT dwr (
    (init?), (allow?), (signatures?)
)
>

<!--
A list of all the classes to configure as part of dwr at startup time.
-->
<! ELEMENT init (
    (creator | converter)*
)
>

<!--
Define a new method of creating objects for use by Javascript.
We don't just allow access to any object and some may need special code to
get a reference to them.
-->
<! ELEMENT creator EMPTY >
<!--
@attr id The unique name by which create elements refer to us.
@attr class The fully qualified name of a class that implements Creator.
-->
<! ATTLIST creator
    id ID #REQUIRED
    class CDATA #REQUIRED
>

<!--
Define a new way of converting between javascript objects and java objects.
Many classes can have default conversion mechanisms but some require more
custom conversion
-->
<! ELEMENT converter EMPTY >
<!--
@attr id The unique name by which convert elements refer to us.
@attr class The fully qualified name of a class that implements Converter.
-->
<! ATTLIST converter
    id ID #REQUIRED
    class CDATA #REQUIRED
>

<!--
Security: we must define which classes we are allowed to access because a
free-for-all will be very dangerous.
-->
<! ELEMENT allow (
    (create | convert | filter)*
)
>

<!--
Allow the creation of a class, and give it a name in javascript land.
A reference to a creator is required as are some parameters specific to each
creator that define the objects it allows creation of.
It would be nice to make the creator and IDREF rather than a CDATA, since it
refers to an element defined elsewhere, however we allow multiple dwr.xml
files and we might refer to one in another file.
-->
<! ELEMENT create (
    (param | include | exclude | auth | filter)*
)
>
<!--
@attr creator The id of the creator to use
@attr javascript The name of the object to export to the browser
@attr scope The scope of the created variable. The default is page.
-->
<! ATTLIST create
    creator CDATA #REQUIRED
    javascript CDATA #REQUIRED
    scope (application | session | script | request | page) #IMPLIED
>

<!--
A filter is a way to insert procesing tasks at various points during the
processing of an Ajax call. See org.directwebremoting.AjaxFilter
-->
<! ELEMENT filter (
    (param)*
)
>
<!--
@attr class The class name to use to filter requests
-->
<! ATTLIST filter
    class CDATA #REQUIRED
>

<!--
Some elements (currently only create although there is no hard reason why
convert elements should not be the same) need customization in ways that we
can't predict now, and this seems like the only way to do it.
-->
<! ELEMENT param (#PCDATA) >
<!--
@attr name The name of the parameter to this creator
@attr value The value to set to the names parameter
-->
<! ATTLIST param
    name CDATA #REQUIRED
    value CDATA #IMPLIED
>

<!--
A creator can allow and disallow access to the methods of the class that it
contains. A Creator should specify EITHER a list of include elements (which
implies that the default policy is denial) OR a list of exclude elements
(which implies that the default policy is to allow access)
-->
<! ELEMENT include EMPTY >
<!--
@attr method The method to include
-->
<! ATTLIST include
    method CDATA #IMPLIED
>

<!--
See the include element
-->
<! ELEMENT exclude EMPTY >
<!--
@attr method The method to exclude
-->
<! ATTLIST exclude
    method CDATA #IMPLIED
>

<!--
The auth element allows you to specify that the user of a given method must be
authenticated using J2EE security and authorized under a certain role.
-->
<! ELEMENT auth EMPTY >
<!--
@attr method The method to add role requirements to
@attr role The role required to execute the given method
-->
<! ATTLIST auth
    method CDATA #REQUIRED
    role CDATA #REQUIRED
>

<!--
Allow conversion of a class between Java and Javascript.
A convert element uses a previously defined converter and gives a class match
pattern (which can end with *) to define the classes it allows conversion of
It would be nice to make the converter and IDREF rather than a CDATA, since it
refers to an element defined elsewhere, however we allow multiple dwr.xml
files and we might refer to one in another file.
-->
<! ELEMENT convert (
    (param)*
)
>
<!--
@attr converter The id of the converter to use
@attr match A class name to match for conversion
@attr javascript The optional classname for the parameter
-->
<! ATTLIST convert
    converter CDATA #REQUIRED
    match CDATA #REQUIRED
    javascript CDATA #IMPLIED
>

<!--
If we are marshalling to collections, we need to be able to specify extra
type information to converters that are unable to tell from reflection what to
do. This element contains some Java method definitions
-->
<! ELEMENT signatures (#PCDATA) >

以下是dwr.xml的文件内容详解:
<!DOCTYPE dwr PUBLIC 
     "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" 
     "dwr20.dtd"
>
<dwr>
  
<!-- without allow, DWR isn't allowed to do anything -->
  
<allow>   
    
<create creator="new" javascript="js的名字">
      
<param name="class" value="类的地址"></param>
    
</create>  

    
<!--举例-->
    
<create creator="new" javascript="NewsTypeAjax">
      
<param name="class" value="com.jetsum.pbcbank.news.ajax.NewsTypeAjax"></param>
    
</create>  
    
  
</allow>

  
<signatures>
    
<![CDATA[
    import java.util.List;
    
]]>
  
</signatures>


</dwr>

4、Ajax类的写法很简单,就和一般的类写法一样:
package com.jetsum.pbcbank.news.ajax;

import com.jetsum.pbcbank.news.dao.TypeDao;

public class NewsTypeAjax {

    
public NewsTypeAjax() {
    }

    
    
public boolean checkNewsTypeExist(String typename)
    
{
        
boolean result = false;
        TypeDao dao 
= new TypeDao();
        
if(dao.newsTypeExist(typename))
            result 
= true;
        
return result;
    }

}


5、页面上调用写好的dwr:
<!--在导入自定义的dwr之间必须先导入/dwr/engine.js和dwr/util.js否则会报错-->
<script language="javascript" src="<%=request.getContextPath()%>/dwr/engine.js"></script>
<script type='text/javascript' src="<%=request.getContextPath()%>/dwr/util.js"></script>

<!--导入自定义的dwr文件,即dwr.xml中所配制的js名,前面加上/dwr/interface/路径-->
<script type='text/javascript' src="<%=request.getContextPath()%>/dwr/interface/NewsTypeAjax.js"></script>

<script type="text/javascript">
<!--举例-->
function typeExist(){
<!-- 1、获取页面数据-->
    
var typename=document.getElementById('newtypename').value;
    typename
=typename.replace(/(^\s*)| (\s*$)/g, "");
    
if(typename.length==0){
        alert('请输入新闻类型名称');
            document.getElementById('newtypename').focus();
            return false;
    }

<!-- 2、设置为异步的,一般情况下为异步-->
    DWREngine.setAsync(
false);

<!-- 3、调用写好的ajax类中的方法,有两个参数,第一个是传入方法的数据,第二个是回调函数,flag为调用的方法所返回的值。-->
    NewsTypeAjax.checkNewsTypeExist(typename,
function (flag){
        
if(flag==true)
        
{
            alert(
"该新闻类别已经存在!");
            
return false;
        }

        
else
        
{
            add();
        }

    }
);
</script>

搞定!~~~

只有注册用户登录后才能发表评论。


网站导航: