`
jsczxy2
  • 浏览: 1273920 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

dwr3的一些介绍

    博客分类:
  • dwr
dwr 
阅读更多

DWR入门笔记

DWR : direct web remoting

它允许java server和 JavaScript尽可能简单的相互调用

从DWR2.0开始就需要使用commons-logging包

DWR2.0与DWR3.0差别很大

engine.execute(,,,,callback);

一对{}在JS中就表示一个对象,因此JSON——{username:"huangbiao",id:1}就表示一个对象

javabean:可重用的组件

关于map循环

for(var data in map){

 alert(data + "?" + map[data]);

}

 

初级入门

1、和lib文件夹在同一路径级别下添加dwr.xml和web.xml相关的配置信息

2、在JSP页面中尽量按照如下顺序引入,因为大家都是这么弄的,而且JS是顺序加载的,如果不按照这个顺序可能会引起其他问题(简单测试改换顺序是没有影响的),给编写代码中养成良好的习惯

<script type='text/javascript' src='dwr/interface/service.js'> </script>

<script type='text/javascript' src='dwr/engine.js'></script>

<script type='text/javascript' src='dwr/util.js'></script>

3、src='dwr/interface/service.js' 中的service就当作是服务器端需要处理的对象——前提是需要在dwr.xml文件中配置

4、dwr.xml配置信息如下

<allow>

 <create creator="new" javascript="service">

  <param name="class" value="hb.server.Test1"></param>

 </create>

</allow>

其中creator表示创建对象的方式是“new”一个新的对象,javascript="service"表示与页面对应的名称是service,因此在页面中需要与src='dwr/interface/service.js'对应,格式是固定的

里面的参数name="class"表示指明这个类的路径 value="hb.server.Test1"表示这个类的全路径

5、web.xml配置信息的描述

<servlet>

 <display-name>DWR Servlet</display-name>

 <servlet-name>dwr-invoker</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-invoker</servlet-name>

 <url-pattern>/dwr/*</url-pattern>

</servlet-mapping>

 上述描述方式实际上就是一个servlet,当路径为/dwr/*时就执行这个servlet,因为在JSP页面中在加载js页面的时候就会执行这个方法,例如:

<script type='text/javascript' src='dwr/util.js'></script>,文件中的src='dwr/util.js'与配置的servlet匹配,这样就会触发这个servlet效果

6、这样就能够准确的定位到具体是那个类的哪个方法处理这个请求,然后是否有返回值都能够一目了然

7、如果想深入的了解DWR的解析方式或者对对象、字符串、数组的解析方式可以查看engin.js的方法实现

 

DWR深入理解

一、JAVA对象与javascript的交互过程

1、服务器端返回一个对象

dwr.xml配置信息如下:

<allow>

 <create creator="new" javascript="returnHTMLData">

  <param name="class" value="hb.server.returnHTMLData"></param>

 </create>

 <convert converter="bean" match="hb.object.Person"></convert>

</allow>

 

告诉服务器hb.object.Person这个类作为javabean对象来处理

服务器端的server代码处理

public class returnHTMLData {

 public Person returnPerson(){

  Person person = new Person();

  person.setId(1);

  person.setPassword("huangbiao");

  person.setUsername("1234");

  return person;

 }

}

 

JSP页面的js代码

function invoke(){

 returnHTMLData.returnPerson(function(data){

  alert(data.id);

  alert(data.password);

  alert(data.username);

 });

}

 2、JS向服务器端发送一个对象

<allow>

 <create creator="new" javascript="getHTMLData">

  <param name="class" value="hb.server.GetHTMLData"></param>

 </create>

 <convert converter="bean" match="hb.object.Person"></convert>

</allow>

 

服务器端的server代码处理

public class GetHTMLData {

 public void printPerson(Person person){

  System.out.println(person.getId());

  System.out.println(person.getPassword());

  System.out.println(person.getUsername());

 }

}

 

JSP页面的js代码

 

function invoke(){

//把JSON组织的代码当作是一个对象传递给server

 var dataJson = {id:2,password:"123456",username:"huangbiao"};

 getHTMLData.printPerson(dataJson);

}

 

二、调用服务器端返回的容器——List、Set、Map

1、List和Set是一类处理方式,对应的都是数组

配置信息如下

<allow>

 <create creator="new" javascript="returnHTMLCollection">

  <param name="class" value="hb.server.returnListData"></param>

 </create>

 <convert converter="bean" match="hb.object.Person"></convert>

</allow>

服务器对应的JAVA代码

public class returnListData {

 public Collection getCollection(){

  Collection<Person> list = new ArrayList<Person>();                    

  for(int i = 0; i < 3; i++){                                      

   Person person = new Person();                            

   person.setId(i);                                         

   person.setPassword("password" + i);                      

   person.setUsername("username" + i);                      

   list.add(person);                                        

  }                                                                

  return list;                                                     

 }                                                                        

}

JSP页面的js代码

function invoke(){

 returnHTMLCollection.getCollection(function(data){

  for(var i = 0; i < 3; i++){

   alert(data[i].id);

  }

 });

}

 

数据内容

  data = [                     

       {                       

          username:"user1",    

          password:"password2" 

       },                      

       {                       

          username:"user2",    

          password:" password2"

       }                       

   ]; 

 

2、使用Map对应的处理方式

配置信息

<allow>

 <create creator="new" javascript="returnMapData">

  <param name="class" value="hb.server.returnMapData"></param>

 </create>

 <convert converter="bean" match="hb.object.Person"></convert>

</allow>

服务器对应的JAVA代码

public class returnMapData {

 public Map getMapdata(){

  Map map = new HashMap<Integer, Person>();

  for(int i = 0; i < 3; i++){

   Person person = new Person();

   person.setId(i);

   person.setPassword("password" + i);

   person.setUsername("username" + i);   

   map.put(i, person);                                     

  }                                                               

  return map;                                                     

 }                                                                       

}                                                                               

JSP页面的js代码                                                     

function invoke(){                                                  

 /*                                                          

 returnMapData.getMapdata(function(data){                    

  for(var i = 0; i < 3; i++){                         

   alert(data[i].id);                          

  }                                                   

 });                                                         

 */                                                          

 returnMapData.getMapdata(function(data){                    

    for(var property in data){                        

     var bean = data[property];                            

     alert(bean.username);                                 

     alert(bean.password);

    }

 });

}

 

data = {                     

    "key1":{                 

        username:"user1",    

       password:"password2"  

    },                       

    "key2":{                 

       username:"user2",     

       password:" password2" 

    }                        

};

分享到:
评论

相关推荐

    DWR3.rar

    压缩包内的"DWR中文文档2.pdf"很可能是DWR3的中文用户指南或开发者手册,对于学习和使用DWR3框架具有很高的参考价值,详细介绍了如何配置、使用DWR以及解决常见问题。"dwr.rar"可能包含了DWR的源码或者库文件,便于...

    dwr3api+DWR文档.pdf

    《dwr3api+DWR文档.pdf》提供了关于DWR 3.x版本的详细信息,包括API参考和初级入门指南。这份文档可能涵盖了以下关键知识点: 1. **安装与配置**:如何在你的Java应用服务器上集成DWR,配置DWR的XML配置文件(dwr....

    Dwr3+Spring3 全注解 annotation 方式

    本篇文章将详细介绍如何结合Dwr3和Spring3,利用全注解的方式进行集成与配置。 首先,我们需要理解Dwr3的基本概念。DWR3是DWR的第三个主要版本,它提供了一种简单的方法来实现在Web应用程序中调用服务器端的Java...

    DWR介绍

    ### DWR介绍 #### 一、DWR概述 DWR(Direct Web Remoting)是一种用于简化客户端JavaScript调用服务器端Java方法的技术。它通过Ajax技术实现了网页上的JavaScript直接调用服务器端的Java对象,极大地提高了Web应用...

    spring3+dwr3实现聊天功能

    本篇将详细介绍如何利用Spring3和DWR3创建聊天功能,以及DWR的Server Push技术在其中的作用。 首先,Spring3是一个全面的Java企业级应用开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等...

    DWR中文文档DWR

    - 该中文文档将详细介绍DWR的安装、配置、使用方法以及常见问题的解决,是学习DWR的重要参考资料。 通过深入学习这份DWR中文文档,开发者不仅可以掌握DWR的基本用法,还能了解到如何在实际项目中有效利用DWR提升...

    dwr的一些资料

    3. DWR的API使用:详细介绍DWR的JavaScript API,如RemoteObject、Util和Batch等,以及如何调用服务器端的方法。 4. DWR的安全性:讨论如何设置安全策略,防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。 5. DWR与...

    DWR中文文档 (DWR 2.0)

    **8.5 安全性**:DWR内置了一些安全措施来防止常见的攻击手段,但开发者还需要根据实际情况加强安全策略。 #### 四、范例精讲 **9.1 购物车示例**:通过构建一个完整的购物车功能来展示DWR的实际应用场景。 1. **...

    DWR配置介绍

    ##### 3. 配置`dwr.xml` 在`WEB-INF`目录下创建`dwr.xml`文件,用于指定哪些JavaBean将被DWR生成相应的JavaScript库。例如: ```xml &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD DirectWebRemoting 2.0//EN...

    DWR(Direct Web Remoting)介绍

    ### DWR (Direct Web Remoting) 介绍与应用 #### 一、概述 DWR(Direct Web Remoting)是一个开放源代码的项目,遵循Apache许可协议。它为开发者提供了一个强大的工具集,使得通过JavaScript调用Java方法变得简单...

    dwr框架详细介绍 讲解浅显易懂

    3. `@DataTransferObject`:用于标记数据传输对象,通常用于在DWR之间传输复杂的数据结构。 4. `@RemoteProperty`:标记类的属性,使其可以直接在客户端被读取或设置。 例如,没有使用`@RemoteMethod`的方法在...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    - **安装与配置**:介绍如何将DWR添加到现有项目中,包括引入jar文件、配置web.xml和dwr.xml文件。 - **基本使用**:讲解如何创建可从JavaScript调用的Java方法,以及如何在客户端使用DWR API进行调用。 - **安全...

    dwr小项目及资料

    3. **dwr.ppt** - 这可能是一个PPT演示文稿,可能包含了DWR的基础概念、工作原理、配置教程以及一些示例,有助于快速理解DWR的使用。 4. **dwr** - 这可能是DWR的源码或者示例项目的文件夹,用户可以通过查看这些...

    ajax的框架dwr整合jsf

    3. **DWR与JSF的整合**:整合DWR和JSF,可以让JSF应用利用DWR的Ajax能力。首先,需要在JSF项目中添加DWR的依赖,包括dwr-engine.jar、dwr-server.jar等。接着,配置DWR的`dwr.xml`文件,声明要暴露给JavaScript的...

    dwrtest测试DWR小测试

    以上就是关于DWR的基本介绍及其使用方式。DWR为Web开发者提供了一种简单而强大的工具,用于构建具有高度交互性和实时性的Web应用。通过熟练掌握DWR,你可以创建出更加动态、用户体验更好的网页。

    dwr配置文件详解 dwr.xml配置文件详解

    在本文中,我们将详细介绍dwr配置文件的结构和配置方法,并探讨它在实际应用中的作用。 dwr配置文件的结构 -------------------- dwr配置文件是一个XML文件,名称通常为dwr.xml。它的结构主要包括以下几个部分: ...

Global site tag (gtag.js) - Google Analytics