- 浏览: 1011090 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
要读懂我这篇文章估计需要一些前期知识:
你要知道Spring是什么,并且要知道Spring已经出了2.0的版本了。
你要知道DWR是什么,并且要知道DWR也要出2.0的版本了。
呵呵,开个玩笑……。这年头在BlogJava上混的,估计没几个不知道上面这两个项了。
好了,现在言归正传。DWR本身就提供对Spring的支持,可以直接把Spring中的Bean暴露给客户端浏览器的Javascript调用。在dwr.xml中的写法是这样的:
< allow >
< create creator ="spring" javascript ="AjaxPortalService" >
< param name ="beanName" value ="AjaxPortalService" />
< include method ="changeWondowState" />
< include method ="changeWorkbenchState" />
< include method ="changeWindowOrder" />
</ create >
</ allow >
</ dwr >
这
样写到也没什么,只是把项目分模块以后,虽有的配置都写到一个dwr.xml文件里面维护起来比较麻烦,尤其再遇到版本管理中的代码合并。所以曾经我扩展
了DWR,让它可以从多个文件读取配置信息。然后每个模块自己一个配置文件,跟着source一起走。这样做也有问题,就是现在Java应用程序的配置文
件太多啦!Spring的配置,WebWork的配置,Hibernate的配置,DWR的配置,再加上一些杂七杂八的xml和properties。看
着这些配置文件简直要疯掉了。
正在此时,spring2横空出世,现在你可以把一些配置文件合并到一起了。正好趁此机会体验一下Spring2的自定义schema特性。
目标:
把DWR的配置写成这样:
< beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx ="http://www.springframework.org/schema/tx"
xmlns:aop ="http://www.springframework.org/schema/aop"
xmlns:dwr ="http://www.devside.org/schema/spring/dwr"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.devside.org/schema/spring/dwr http://www.devside.org/schema/spring/dwr.xsd"
default-autowire ="byName" >
< bean id ="departmentDao" class ="cn.com.legendapl.hellostruts2.dao.DepartmentDao" />
< bean id ="employeeDao" class ="cn.com.legendapl.hellostruts2.dao.EmployeeDao" />
< bean id ="companyService" class ="cn.com.legendapl.hellostruts2.service.CompanyService" />
< aop:config >
< aop:pointcut id ="companyServiceOperation" expression ="execution(* cn.com.legendapl.hellostruts2.service.ICompanyService.*(..))" />
< aop:advisor advice-ref ="txAdvice" pointcut-ref ="companyServiceOperation" />
</ aop:config >
< bean id ="ajaxCompanyProxy" class ="cn.com.legendapl.hellostruts2.ajax.AjaxCompanyProxy" />
< dwr:allow id ="ajaxCompanyProxyAllow" >
< dwr:create beanName ="ajaxCompanyProxy" javascript ="CompanyProxy" >
< dwr:include method ="findEmployeeById" />
</ dwr:create >
< dwr:convert converter ="bean" match ="cn.com.legendapl.hellostruts2.entity.*" />
</ dwr:allow >
</ beans >
重点在这里:
<
dwr:allow
id
="ajaxCompanyProxyAllow"
>
<
dwr:create
beanName
="ajaxCompanyProxy"
javascript
="CompanyProxy"
>
<
dwr:include
method
="findEmployeeById"
/>
</
dwr:create
>
<
dwr:convert
converter
="bean"
match
="cn.com.legendapl.hellostruts2.entity.*"
/>
</
dwr:allow
>
好了现在动手开始做。
原理其实很简单,现在看张图。画的不好,敬请原谅!
从这样图中我们可以看出我们要做如下工作:
1、做一个dwr.xsd,定义spring配置文件中的dwr这部分配置的schema。
要做这个需要有一定xml和xsd的知识,我也是现学现用啦!
< xsd:schema xmlns ="http://www.devside.org/schema/spring/dwr"
xmlns:xsd ="http://www.w3.org/2001/XMLSchema"
xmlns:beans ="http://www.springframework.org/schema/beans"
targetNamespace ="http://www.devside.org/schema/spring/dwr"
elementFormDefault ="qualified"
attributeFormDefault ="unqualified" >
< xsd:import namespace ="http://www.springframework.org/schema/beans" schemaLocation ="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" />
< xsd:element name ="allow" >
< xsd:complexType >
< xsd:complexContent >
< xsd:extension base ="beans:identifiedType" >
< xsd:sequence >
< xsd:element name ="create" type ="createType" minOccurs ="0" maxOccurs ="unbounded" />
< xsd:element name ="convert" type ="convertType" minOccurs ="0" maxOccurs ="unbounded" />
</ xsd:sequence >
</ xsd:extension >
</ xsd:complexContent >
</ xsd:complexType >
</ xsd:element >
< xsd:complexType name ="createType" >
< xsd:sequence >
< xsd:element name ="auth" type ="authType" minOccurs ="0" maxOccurs ="unbounded" />
< xsd:element name ="include" type ="includeType" minOccurs ="0" maxOccurs ="unbounded" />
< xsd:element name ="exclude" type ="excludeType" minOccurs ="0" maxOccurs ="unbounded" />
</ xsd:sequence >
< xsd:attribute name ="beanName" type ="xsd:string" use ="required" />
< xsd:attribute name ="javascript" type ="xsd:string" use ="required" />
</ xsd:complexType >
< xsd:complexType name ="convertType" >
< xsd:attribute name ="converter" type ="xsd:string" use ="required" />
< xsd:attribute name ="match" type ="xsd:string" use ="required" />
</ xsd:complexType >
< xsd:complexType name ="authType" >
< xsd:attribute name ="method" type ="xsd:string" use ="required" />
< xsd:attribute name ="role" type ="xsd:string" use ="required" />
</ xsd:complexType >
< xsd:complexType name ="includeType" >
< xsd:attribute name ="method" type ="xsd:string" use ="required" />
</ xsd:complexType >
< xsd:complexType name ="excludeType" >
< xsd:attribute name ="method" type ="xsd:string" use ="required" />
</ xsd:complexType >
</ xsd:schema >
2、
我们要做一个DWRNamespaceHandler来处理DWR的配置信息,其实里面就做一件事把AllowBeanDefinitionParser
注册给allow节点。因为我们dwr的配置部分根节点就一个标签allow,所以我们就做一个用于解析allow标签的
AllowBeanDefinitionParser解析器就行。如果我们的根节点还有其他的标签,同样也要做相应的解析器。
public void init() {
// 把AllowBeanDefinitionParser注册到allow节点
registerBeanDefinitionParser( " allow " , new AllowBeanDefinitionParser());
}
}
其实难点是做AllowBeanDefinitionParser,这里你需要一些DOM模型的知识,来操作配置节点的内容。然后根据内容进行处理。在这里我们,需要做三件事:
[1] 把配置节点的内容转换成对象模型,即AllowBean(其实就是一些POJO罢了)。
[2] 把这个AllowBean注册给Spring的Context,这一步是可选的。因为我们主要是把这个Bean给DWR,当然顺道给Spring一份也没什么问题。
[3] 把这个AllowBean注册到AllowBeanHolder。
3、AllowBeanHolder。
其实这就是个简单的singleton类,整个运行期只有一个实例。它就像一个容器,AllowBeanDefinitionParser往里放,DWR的Configuration再从这里取。
4、扩展DWR的DefaultConfiguration,我们做一个SpringConfiguration。DWR的DefaultConfiguration是负责读取配置信息的。我们在其中加入从AllowBeanHolder读取配置信息的功能即可。
5、扩展DWR的DWRServlet,我们做一个SpringDWRServlet,原来的DWRServlet加载的是DefaultConfiguration,我们的Serlvet加载我们自己的SpringConfiguration即可。
6、万事俱备,只欠东风啦。就是让Spring知道我们干了这些!
在META-INF目录下(如果没有在src目录下创建一个)加入spring.handlers和spring.schemas两个文件。
spring.handlers中的内容:
http\:
//
www.devside.org/schema/spring/dwr=org.devside.core.support.dwr.DWRNamespaceHandler
spring.schemas中的内容:
http\://www.devside.org/schema/spring/dwr.xsd=org/devside/core/support/dwr/dwr.xsd
注意不要写错字哦,我一开始就写错一个字母,结果怎么调试都不能成功,还以为Spring2有问题呢。
ok了,下面我们就可以写一个spring的配置文件来试试喽。
下面提供两个源码包,一个是spring-dwr的源码,一个是hellosturts2,一个struts2+spring2+hibernate3.2的例子,其中有用到spring-dwr的例子。
为了减小容量,我把jar都去掉了,lib目录下提供了一个列表,你可以自己去找相关的jar包。
http://www.blogjava.net/Files/mstar/HelloStruts2.zip
http://www.blogjava.net/Files/mstar/spring-dwr.zip
发表评论
-
调试jdk中的源码,查看jdk局部变量
2013-06-15 23:30 1048调试jdk中的源码,查看jdk局部变量 2012-04 ... -
Eclipse快捷键 10个最有用的快捷键<转>
2013-04-11 23:28 1070Eclipse中10个最有用的快捷键组合 一个Eclip ... -
Lucene 3.6 中文分词、分页查询、高亮显示等
2012-12-09 23:35 18101、准备工作 下载lucene 3.6.1 : htt ... -
Maven实战(九)——打包的技巧(转)
2012-10-12 00:41 932“打包“这个词听起 ... -
基于Maven的web工程如何配置嵌入式Jetty Server开发调试环境(转)
2012-10-12 00:28 9161、首先在web工程的POM文件里添加依赖jar包如下: ... -
轻轻松松学Solr(1)--概述及安装[转]
2012-09-18 14:59 990概述 这段时间对企 ... -
分析Netty工作流程[转]
2012-09-04 19:02 883下面以Netty中Echo的例 ... -
让eclipse在ubuntu下面好看一点
2012-03-27 10:17 914<p> </p> <h1 cla ... -
zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)[转]
2012-01-12 17:59 1647安装和配置详解 本文 ... -
Jakarta-Common-BeanUtils使用笔记[转]
2012-01-10 14:13 1153Jakarta-Common-BeanUtils ... -
一个关于Java Thread wait(),notify()的实用例【转】
2012-01-07 16:05 1019///// // ProducerConsume ... -
Java基础:Java中的 assert 关键字解析【转】
2012-01-06 19:50 1056J2SE 1.4在语言上提供了 ... -
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发[转]
2012-01-06 15:02 1259六种异常处理的陋习 ... -
如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
2011-12-26 10:48 1574HP QC(Quantity Center) 是一款不错的测 ... -
JAVA读写文件,中文乱码 【转】
2011-12-19 23:43 2115最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。 ... -
Java 6 JVM参数选项大全(中文版)【转】
2011-12-19 19:51 965Java 6 JVM参数选项大全(中文版) 作者 ... -
使用assembly plugin实现自定义打包【转】
2011-12-13 01:58 965在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了 ... -
使用maven ant task实现非标准打包[转]
2011-12-13 01:56 1045maven很强大,但是总有些事情干起来不是得心应手,没有使用a ... -
Java日期转换SimpleDateFormat格式大全【转】
2011-12-08 20:22 130924小时制时间 显示: public clas ... -
使用Spring的表单标签库
2011-11-22 20:08 106713.9. 使用Spring的 ...
相关推荐
2. **配置DWR**:在Spring MVC中,DWR的配置通常是基于XML的。你需要在`src/main/resources/META-INF/spring`目录下创建一个名为`dwr-servlet.xml`的文件,定义DWR的Servlet配置。例如: ```xml ...
4. **设置DWR访问路径**:在Spring的配置文件中设置DWR的访问路径,这样客户端才能通过特定URL访问到DWR提供的服务。例如: ```xml <bean id="dwrConfig" class="org.directwebremoting.spring....
### 在Struts2与Spring2.5结合DWR2配置使用方法 #### 一、概述 本文档将详细介绍如何在Struts2与Spring2.5框架的基础上集成DWR(Direct Web Remoting)来简化Ajax应用的开发过程。通过这种方式,可以有效降低前端...
在Spring的XML配置文件中,我们需要引入DWR的命名空间,并配置相关的DWR bean。首先,添加DWR的命名空间声明: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/...
### Spring使用Annotation整合DWR知识点解析 #### 一、概览 在现代Web开发中,Direct Web Remoting(简称DWR)是一种简化Ajax应用开发的技术,它允许JavaScript直接调用服务器端的Java方法,而无需编写复杂的XML...
1. **整合Spring与DWR配置**:在原有的Spring配置文件中添加DWR相关的命名空间,并指定DWR配置的Schema位置,这使得Spring和DWR的配置可以无缝结合。 2. **DWR配置简化**:使用XML Schema配置方式,可以简化配置,...
### Struts、Spring、Hibernate整合开发与DWR集成知识点详解 #### 一、概述 本文档旨在介绍如何在Struts、Spring、Hibernate(通常简称SSH)框架基础上集成DWR(Direct Web Remoting),以实现前后端更为流畅的...
4. **熟悉DWR的基本概念**:了解DWR是如何简化JavaScript调用Java方法的过程,以及DWR的配置文件结构。 #### 三、整合步骤 下面我们将按照以下步骤来完成SpringMVC与DWR3.0的整合: ##### 1. 配置项目web.xml文件 ...
从给定的部分内容中可以看出,配置主要涉及到 Spring MVC 的 DispatcherServlet 的设置,以及对 DWR 的 URL 映射。 ```xml <servlet-mapping> <servlet-name>springhibernate</servlet-name> <url-pattern>*.do...
本文档旨在提供一套详细的配置指南,用于整合Struts1.x、Spring2.x、Hibernate3.x以及DWR2.x等技术栈。通过本指南,开发者可以更好地理解如何将这些框架有效结合,以构建稳定、高效的Java Web应用。 #### 文档约定 ...
- `<context-param>`定义了Spring配置文件的位置,这里使用通配符`*`来匹配多个配置文件。 **2. 字符编码过滤器** 为了确保Web应用中数据的一致性和正确性,还需要配置字符编码过滤器。 ```xml <!--Spring字符...
6.5 将Spring与DWR集成 232 6.5.1 问题 232 6.5.2 解决方案 232 6.5.3 工作原理 233 6.6 小结 236 第7章 Spring Web Flow 238 7.1 用Spring Web Flow管理简单的UI流程 238 7.1.1 问题 238 7.1.2 ...
6.5 将Spring与DWR集成 232 6.5.1 问题 232 6.5.2 解决方案 232 6.5.3 工作原理 233 6.6 小结 236 第7章 Spring Web Flow 238 7.1 用Spring Web Flow管理简单的UI流程 238 7.1.1 问题 238 7.1.2 ...
在“ExtSSHD2”这个压缩包中,可能包含了项目的所有源代码、配置文件、数据库脚本等,供学习者参考和实践。通过对这个项目的研究,开发者可以学习到如何在实际项目中集成并有效利用这些技术,提升自己的Web开发能力...
activation-1.1.jar antlr-2.7.2.jar aopalliance-1.0.jar ...xmlschema-core-2.0.3.jar xpp3_min-1.1.4c.jar xstream-1.3.jar xstream-1.4.2.jar xwork-core-2.3.15.3.jar xwork-core-2.3.31.jar ZXing-core.jar
包含314个文件,涵盖187个Java源文件、45个XML配置文件、28个JSP文件、22个JavaScript文件、7个属性文件、6个JAR包文件、4个SQL脚本文件、4个CSS样式文件、2个Markdown文件和2个XML Schema文件。该系统融合了Struts1...
- **DWR for Struts2**:dwr4struts2.jar - **Freemarker模板引擎**:freemarker-2.3.8.jar - **JSON处理**:jsonplugin-0.31.jar - **ibatis核心库**:ibatis-2.3.0.677.jar - **Spring框架**:spring.jar - **...