• 1. DWR WEB 开发交流 安徽晖吉软件有限公司 http://www.huijisoft.com
  • 2. 1、DWR 定义 与 入门 2、DWR web.xml 配置 3、DWR dwr.xml 配置 4、DWR中的JavaScript简介 DWR WEB开发交流
  • 3. 1、 DWR (Direct Web Remoting )定义 DWR是一种AJAX(Asynchronous JavaScript and XML)的JAVA实现,它提供了一种能在web浏览器端采用JavaScript语言直接调用后台业务商业组件的解决方案。 DWR WEB开发交流
  • 4. 1.1、 DWR入门 以一个 HelloWorld 示例带领大家入门将DWR放入你的工程 1) 从官方网站下载dwr.jar包。然后将它放在你webapp的WEB-INF/lib目录下。 2) 将下载的dwr-版本号-src.zip \java\org\directwebremoting内的engine.js和util.js放入WEB应用中,比如js文件夹下。 DWR WEB开发交流
  • 5. web.xml 以下几行代码必须被添加到WEN-INF/web.xml文件中。 注意,要把和其他放在一起, 要和其他放在一起 DWR WEB开发交流编辑配置文件
  • 6. 编辑配置文件web.xml dwr-invoker org.directwebremoting.servlet.DwrServlet debug true dwr-invoker /dwr/* DWR WEB开发交流编辑配置文件
  • 7. 3、DWR DEMO介绍dwr.xml 在web.xml的同一目录下,创建dwr.xml,并且将要被调用的java类写入其中。 DWR WEB开发交流编辑配置文件
  • 8. 编写service 就像没有dwr一样,写一个简单类并加一个方法 package helloWorld; public class Service { public String sayHello(String yourName) { //可以是访问数据库的复杂代码 return "Hello World " + yourName; } } DWR WEB开发交流
  • 9. 测试DWR DWR WEB开发交流将代码放入应用服务器(比如Tomcat),启动。 然后在地址栏输入http://localhost:8080/你的工程/dwr
  • 10. 效果1、DWR前台引擎(Engine.js)的主要职责 DWR WEB开发交流
  • 11. 效果 DWR WEB开发交流然后点击service,会看到刚才写的sayHello()的方法, 输入自己的名字然后点击“Execute”,如果发现确实是正确的返回结果, 说明测试通过了,可以进入下一步了
  • 12. 编写一个jsp 接下来最后一步就是创建一个jsp文件 1) 要引用几个dwr的js,其中engine.js必须要, 如果需要用到dwr提供的一些方便的工具要引用util.js 2) 然后还要引用dwr自动生成的js,dwr/interface/service.js, 注意js名字要和dwr.xml配置的一样 3) js里的service.sayHello和java类的那个有一点区别, 多了个参数,用来callback返回的数据 DWR WEB开发交流
  • 13. <%@ page language="java" pageEncoding="UTF-8"%> My JSP 'first_dwr.jsp' starting page DWR WEB开发交流
  • 14. 2. web.xml配置 要加入到你的web.xml最少的代码就是简单地去申明DWR servlet, 没有它DWR就不起作用 dwr-invoker org.directwebremoting.servlet.DwrServlet dwr-invoker /dwr/* DWR WEB开发交流
  • 15. 2.web.xml配置在DWR2.x里,DwrServlets是类 org.directwebremoting.servlet.DwrServlet , 尽管uk.ltd.getahead.dwr.DWRServlet仍然可以用。 在DWR 1.x你不得不使用后者。 有些额外的servlet参数,在有些地方很重要。 尤其debug参数 这个扩展DWR的标准结构是使用。 放在内,就像如下使用 DWR WEB开发交流
  • 16. 2.web.xml配置 dwr-invoker org.directwebremoting.servlet.DwrServlet debug true DWR WEB开发交流
  • 17. 3.dwr.xml配置dwr.xml是你用来配置DWR的文件,默认是将其放入WEB-INF文件夹 ... DWR WEB开发交流
  • 18. 3.dwr.xml配置3、dwr.xml的业务组件发布和调用规则配置部分AllowAllow部分是配置业务组件的发布和访问控制规则的一些参数选项,这部分是DWR配置的重点部分。其主要有以下两个子节点组成: 一、create元素 这个元素是配置后台业务组件的创建规则和组件方法的 访问规则。 二、convert元素 这个元素是配置Java对象和数据类型对应的转换器。DWR内置了所有java基本数据类型的转换器。基本数据类型的对象形式也采用同一的转换器转换。 DWR WEB开发交流
  • 19. 3.dwr.xml配置3、dwr.xml的业务组件发布和调用规则配置部分AllowAllow部分是配置业务组件的发布和访问控制规则的一些参数选项,这部分是DWR配置的重点部分。其主要有以下两个子节点组成: 一、create元素 这个元素是配置后台业务组件的创建规则和组件方法的 访问规则。 二、convert元素 这个元素是配置Java对象和数据类型对应的转换器。DWR内置了所有java基本数据类型的转换器。基本数据类型的对象形式也采用同一的转换器转换。 DWR WEB开发交流
  • 20. 3、DWR配置说明3、dwr.xml的业务组件发布和调用规则配置部分AllowCreate配置元素详细说明: 属性: Creator 配置业务组件的创建类型。主要有四种:Spring、New、 none 、Scripts。 JavaScript 前台页面javascript引用此组件的名称。名称需要唯一。 scope 组件的作用范围或则叫做生命周期。这个和Servlet的生命周期的作用是 一样的。共Session、request、application、page四个选项。 DWR WEB开发交流
  • 21. 3、DWR配置说明3、dwr.xml的业务组件发布和调用规则配置部分AllowCreate配置元素详细说明: 子节点: Param 配置业务组件的创建参数。Name属性设置名称,value属性设置业务组件的具体路径(类全名称)。 Include 授权方式保护业务组件方法的可见性。属性method可以访问的方法名称。如果没有配置则默认为所有方法都可以访问。 exclude 排除方式保护业务组件方法的可见性。属性method设置不可以访问的方法名称。除此之外的都可以访问。如果有需要控制业务组件方法的访问权限时建议采用这种方式。 DWR WEB开发交流
  • 22. 3、DWR配置说明4、dwr.xml的业务组件方法签名配置部分SignaturesSignatures是用来配置Java Bean数据类型转换时遇到不能确定转换类型的情况。如: Bean.setList(List a)方法,DWR设置集合a的时候就无法确定a这个集合里需要填充哪种数据类型。所以针对有输入集合对象的情况就需额外设置Signatures配置节点来设置。这个节点的配置如下: accounts); DemoBusinessObject.getListSet(List inList); ]]> DWR WEB开发交流
  • 23. 3、DWR配置说明4、dwr.xml的业务组件方法签名配置部分Signatures熟悉C++模板编程或java范型编程的开发人员对这些东西并不陌生。这里主要是采用范型机制来设置bean转换时的集合元素类型。注意DWR有套解析机制所以这里并不需要JDK1.5的支持。 Signatures主要有两个部分: Import部分 和java文件的作用一样 另一部分对方法的签名进行范型的设定。返回结果的集合元素类型不需要设置,因为可以在运行时确定。 DWR WEB开发交流
  • 24. 4. DWR中的JavaScript简介 DWR根据dwr.xml生成和Java代码类似的Javascript代码。 DWR WEB开发交流
  • 25. 4.1 简单的回调函数 DWR根据dwr.xml生成和Java代码类似的Javascript代码。 DWR WEB开发交流假设你有一个这样的Java方法: public class Remote { public String getData(int index) { ... } }
  • 26. 4.1 简单的回调函数我们可以在Javascript中这样使用: DWR WEB开发交流 ……
  • 27. 4.1 简单的回调函数42是Java方法getData()的一个参数。 此外你也可以使用这种减缩格式: Remote.getData(42, function(str) { alert(str); }); DWR WEB开发交流
  • 28. 4.2 调用元数据对象 另外一种语法时使用"调用元数据对象"来指定回调函数和其他的选项。上面的例子可以写成这样: DWR WEB开发交流 Remote.getData(42, { callback:function(str) { alert(str); } });
  • 29. 4.2 调用元数据对象 另外一种语法时使用"调用元数据对象"来指定回调函数和其他的选项。上面的例子可以写成这样: DWR WEB开发交流 Remote.getData(42, { callback:function(str) { alert(str); } });
  • 30. 4.2 调用元数据对象 在回调函数的元数据中你可以指定超时和错误的处理方式。例如: Remote.getData(42, { callback:function(str) { alert(str); }, timeout:5000, errorHandler:function(message) { alert("Oops: " + message); } }); DWR WEB开发交流
  • 31. 4.3 查找回调函数 如果第一个或最后一个是一个函数,那么它就是回调函数,没有元数据对象,并且其他参数都是Java的方法参数。 DWR WEB开发交流
  • 32. 4.4创造一个与Java对象匹配的Javascript对象 假设你有这样的Java方法: public class Remote { public void setPerson(Person p) { this.person = p; } } DWR WEB开发交流
  • 33. 4.4创造一个与Java对象匹配的Javascript对象 Person对象的结构是这样的: public Person { private String name; private int age; private Date[] appointments; // getters and setters ... } DWR WEB开发交流
  • 34. 4.4创造一个与Java对象匹配的Javascript对象 那么你可以在Javascript中这样写: var p = { name:"Fred Bloggs", age:42, appointments:[ new Date(), new Date("1 Jan 2008") ] }; Remote.setPerson(p); 在Javascript没有出现的字段,在Java中就不会被设置。 DWR WEB开发交流
  • 35. 4.4创造一个与Java对象匹配的Javascript对象 因为setter都是返回‘void’, 我们就不需要使用callback函数了。 如果你想要一个返回void的服务端方法的完整版, 你也可以加上callback函数。 很明显DWR不会向它传递任何参数。 DWR WEB开发交流