Spring 与 DWR 整合

smallbug

贡献于2013-02-19

字数:0 关键词: Spring JEE框架

1 吴 青 QQ:16910735 wuqing_bean@126.com 吴老师教学讲义 http://blog.sina.com/accpwulaoshi 忽然抚尺一下,群响毕绝。撤屏视之,一人、一桌、一椅、一扇、一抚 尺 而 已 吴老师教学讲义 2 http://shop34513748.taobao.com/ Copyright©2010 吴青版权所有 Spring 与 DWR 整合 本节学习 Spring 如何与 DWR 进行整合. 1. 为什么要将 DWR 与 Spring 整合? 通过前面的学习,我们知道 DWR 框架是一个 Ajax 框架,它将 web 服务器端的类“暴 露”到客户端,映射成客户端的 JavaScript 代码,在客户端直接使用 javaScript 来调用 服务端的业务对象。 DWR 框架需要调用业务逻辑组件来完成 Ajax 请求。而业务逻辑组件中使用了数据访 问层组件。我们可以将业务逻辑组件和数据访问组件都交给 Spring Ioc 容器来管理,由 Spring 容器向业务组件注入数据访问组件。当 Ajax 请求到达服务器的时候,服务器从 Spring 容器中取出业务逻辑组件然后调用业务组件完成任务。 2. 如何进行整合 有两种方式,第一种方式是在dwr.xml文件中指定javaBean对象创建方式为spring, 并指定在 Spring 容器中的标识,DWR 自动根据标识到 Spring 容器中获取对象,然后调 用。 第二种方式是:省 略 DWR 的配置文件 dwr.xml 文件,这个文件中所有的配置移植到 spirng IoC 容器中。 3. 启动 Spring 容器 DWRServlet 调用Spring容器中的业务类 业务组件 DAO 接口 DAO 组件 注入 DWR 框架 Spring IoC 容器 吴老师教学讲义 3 http://shop34513748.taobao.com/ Copyright©2010 吴青版权所有 不管使用哪种方式,Spring 容器都必须启动.可以在 web.xml 文件中配置监听器或者 servelt 来启动 Spring IoC 容器。 新建一个 web 工程,加入 Spring 支持,Spring 的配置文件 applicationContext.xml 文件放在 src 根目录中,编译之后放到了/WEB-INF/classes 目录中,在 web.xml 文件中 做如下配置来启动 Spring 容器,这里使用的是监听器的方式来启动. 4. 第一种方式: 第一种方式的特点是 DWR 使用自己的配置文件 dwr.xml。在 dwr.xml 文件中指定需 要用到的 spring 容器中的 bean 的标识,这样 dwr 在使用业务对象的时候,就会到 spring 容器中去“拿”了 4.1 配置 DWR 的 DWRServlet DWR 中的 DWRServlet 完成了加载 DWR 框架自己的配置文件 dwr.xml 的任务。所 以首先将 Dwr 的 jar 包放入构建路径中,配置文件 dwr.xml 与 web.xml 文件处于同一个 目录中。在 DWR 下载的示例应用中能找到 jar 文件和 DWRServlet 的配置信息。将 DWRServlet 在 web.xml 中进行配置 contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener dwr-invoker org.directwebremoting.servlet.DwrServlet debug true 1 dwr-invoker /dwr/* 吴老师教学讲义 4 http://shop34513748.taobao.com/ Copyright©2010 吴青版权所有 4.2 编写业务类 4.3 在 Spring 容器中配置这个类 4.4 在 DWR 框架的 dwr.xml 文件中暴露该业务类 ①告诉 DWR 框架到 Spring 容器中取对象,创建者指定为 spring ②,③指定 beanName 参数,其值就是 spring 容器中对象的标识名称。 运行程序,程序此时就可以正确执行,可以通过 DWR 的 debug 模式可以查看测试结果。 5. 第二种方式 这种方式是推荐使用的方式。因为这种方式不再需要 dwr 的配置文件 dwr.xml,所 有的配置都写在了 spring 的配置文件中,维护起来比较方便。 Spring 2.0 以后,可以通过 XML Schema 配置方式极大地简化配置,而且使得第三 方扩展变为可能。导入相关的命名空间之后,就可以像在 jsp 中使用 JSTL,struts 标签一 样在 spirng 配置文件中使用自定义的标签了。与 JSTL 或者 struts 标签一样,在这些标签 的背后,实际上是有解析程序进行解析的,所以 spirng 配置文件中的“自定义标签”也 public class HelloService { public String sayHello(String name){ return "你好,"+name; } } /d 吴老师教学讲义 5 http://shop34513748.taobao.com/ Copyright©2010 吴青版权所有 必须要提供解析程序。虽说是自定义标签,事实上已经有组织为我们定义好了,我们只需 要正确使用即可。 我们打开 dwr 的 jar 包,在 META-INF 文件夹中找到一个 spring.schmeas 文件,打 开之后,内容为: 这个文件的内容实际上是在说明 XML Sechema 文件(*.xsd)在 jar 包中的存放位置, “=”前面一个是网络上的 URL 地址,“=”后面的是在 jar 包中的位置,我们顺着指定的 路径在 dwr 的 jar 文件中顺利的找到了 spring-dwr-2.0.xsd 文件 展开它,会看到如下的内容: 通过这个 xsd 文件的内容,我们知道了它的命名空间就是: http://www.directwebremoting.org/schema/spring-dwr 其解析程序已经在 dwr.jar 文件中定义好了,所以剩下的工作就是在 spirng 的配置文件中 引入 XML Sechema 文件(*.xsd)以及它的命名空间,还有发布定义的业务类了: http\://www.directwebremoting.org/schema/spring-dwr-2.0.xsd= org/directwebremoting/spring/spring-dwr-2.0.xsd 吴老师教学讲义 6 http://shop34513748.taobao.com/ Copyright©2010 吴青版权所有 ①引入 DWR 命名空间,前面的”dwr”是前缀的名称 ②③ 命名空间所对应的 xsd 文件,如果应用能够连接上互联网,则到对应的位置下载 xsd 文件,如果不能联网,dwr.jar 文件中的 META-INF 中的 spring.schmeas 文件说明了这个 xsd 文件在 jar 包中的位置,这就不用到网络上去下载了。 5.1 修改 web.xml 文件中的 servlet 配置 在 spring 的配置文件中引入命名空间,只有 spring 知道,而 DWR 框架并不知道 spring 框架的存在,所以原来使用的 org.directwebremoting.servlet.DwrServlet 这个 Servlet 类已经不能适应我们的要求了,需要使用 DWR 提供的另外一个 Serlvet 类即: org.directwebremoting.spring.DwrSpringServlet,由这个类到 Spring 容器中取出 bean 对象,并发布出去. 所以现在 web.xml 文件的完整配置是: 吴老师教学讲义 7 http://shop34513748.taobao.com/ Copyright©2010 吴青版权所有 5.2 删除原来的 dwr.xml 文件,测试运行 特别注意:这种配置需要有 Spring AOP 的支持,所以在运行之前要确认项目中是否将 Spring 的 AOP 包加入进来了。 还有如果想把实体对象转换为 JavaScript 对象,需要配置转换器,格式如下: contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener dwr-invoker org.directwebremoting.spring.DwrSpringServlet debug true 1 dwr-invoker /dwr/* 启动 Spring 容器 Servlet 类 有所改变 < dwr:configuration > < dwr:convert class ="完整类名 " type ="bean" > < dwr:exclude method ="方法名称 " /> //需要暴露的方法

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档