当前位置: 代码迷 >> Web前端 >> spring调整dwr
  详细解决方案

spring调整dwr

热度:383   发布时间:2012-10-28 09:54:44.0
spring整合dwr
引用
为什么非要利用Spring来整合DWR呢?
个人见解:
????? 在一个项目中,尤其是利用SSH(Struts+Hibernate+Spring)整合开发的时候通常是利用Spring来进行管理的,因此即使在使用AJAX技术的项目中仍希望由Spring来进行整体的管理整合工作,这样的统一管理思想很喜欢。
???? dwr的设计构思很是巧妙。
??? 第一、把java类转化为javascript类由dwr自动完成,只需简单的配置。
??? 第二、应用起来极其简单。开发者不要该服务器代码就可以集成。
??? 第三、容易测试。和webwork一样,隐藏的http协议。
??? 第四、及强扩展性。例如与spring集成,只需修改一点代码。
??? 第五、性能。就我与jason,等简单比较,dwr性能可能是最好的。
??? 第六、自动把java对象转化为javascript对象,并且及易扩展。
下面介绍Spring整合DWR的步骤:?
????? 步骤一:?
???????? 下载Spring2.x(http://www.springframework.org)以及DWR2.0(http://getahead.org/dwr),然后将jar包导入到现有的工程下(/WEB-INF/lib/)。(因为DWR2.0中包含DwrSpringServlet类)?
?????????步骤二:?
???????? 修改web.xml文件:?
?<!-- DWR servlet 配置 -->?
?<servlet>??
??? <servlet-name>dwr-invoker</servlet-name>??
??? <servlet-class>??
??????? org.directwebremoting.spring.DwrSpringServlet???
??? </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>?

<!-- 设置Spring监听器 -->?
<listener>??
??? <listener-class>??
?????? org.springframework.web.context.ContextLoaderListener???
??? </listener-class>?
</listener>?

这样配置可能会存在问题(主要取决与你IDE环境设置),因为侦听器会在/WEB-INF/下寻找applicationContext.xml文件,所以需要一点点小小的改动:

假设我的applicationContext.xml文件放在/src/com/下面,我们需要在web.xml文件中添加下面的语句进行说明。

<context-param>
??????? <param-name>contextConfigLocation</param-name>
??????? <param-value>classpath:/com/applicationContext.xml</param-value>
</context-param>

说明:
org.directwebremoting.spring.DwrSpringServlet这个类是dwr专门为整合spring提供的一个servlet,加入这个之后,dwr的配置就可以写入到spring的配置文件applicationContext.xml中,省掉了dwr.xml

这样就ok了。我们继续。

步骤三:

编写java类(用于通过AJAX实现的功能)。例如:验证码的实现(我的Blog验证码java实现的日志中有相关代码,请参考)。

步骤四:

配置applicationContext.xml文件

因为我门要在Spring配置文件中使用DWR的标签,所以要引入DWR标签的定义。

<beans?

??? xmlns="http://www.springframework.org/schema/beans"?

??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?

??? xmlns:dwr="http://www.directwebremoting.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.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd">

<!-- DWR 配置开始 -->??

??? <dwr:configuration></dwr:configuration><!-- 必须要configuration -->?

??? <dwr:controller id="dwrController" debug="true" />?

??? <!-- DWR 配置结束 -->?

????????

???? <!-- spring bean配置 -->?

???? <bean id="userService" class="test.bcndyl.service.impl.UserServiceImpl">?

???? </bean>?

???????

???? <bean id="myCode" class="dwr.MyCode">?

??????? <!-- 定义调用的js文件 -->?

??????? <dwr:remote javascript="myCode"></dwr:remote>?

??? </bean>?

??? <!-- end spring bean配置 -->?

</beans>

在这里本人遇到过这样的问题:

如果这样写:

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd??

???? http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd"

在<dwr:configuration></dwr:configuration>和<dwr:remote javascript="myCode"></dwr:remote> 处会有错误的提示。将

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd? 改为

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd,错误就消失了? 。

步骤五:

在需要AJAX的JSP页面中添加AJAX相关:

dwr/engine.js、dwr/util.js、dwr/interface/myCode.js

接下来的编码工作不用我说了!

DWR大大简化了AJAX的编码,很实用的东西啊!

?

  相关解决方案