`
huang5787826
  • 浏览: 45941 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
文章分类
社区版块
存档分类
最新评论

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的编码,很实用的东西啊!

分享到:
评论

相关推荐

    智能制造的数字化工厂规划qytp.pptx

    智能制造的数字化工厂规划qytp.pptx

    罗兰贝格:德隆人力资源管理体系gltp.pptx

    罗兰贝格:德隆人力资源管理体系gltp.pptx

    JAVA3D的网络三维技术的设计与实现.zip

    JAVA3D的网络三维技术的设计与实现

    setuptools-11.3.1.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于J2EE的B2C电子商务系统开发.zip

    基于J2EE的B2C电子商务系统开发

    麦肯锡_xx保险员工培训咨询报告gltp.pptx

    麦肯锡_xx保险员工培训咨询报告gltp.pptx

    JAVA社区网络服务系统.zip

    JAVA社区网络服务系统

    备自投tp.pptx

    备自投tp.pptx

    setuptools-10.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于JSP的高校教务排课管理系统源码.zip

    JSP高校教务排课管理系统,管理员角色包含以下功能:课程申请管理,课程设置管理,课程情况查看,专业设置查看,排课管理,系办人员管理,教师管理,学生管理,教室管理,班级管理,管理员登录等功能。教师角色包含以下功能:教师角色登录,申请增加课程,学生管理,成绩录入管理,课程安排管理等功能。学生角色包含以下功能:学生角色登录,基本信息查看,选课功能安排,课程表查看,成绩查询等功能。 本项目实现的最终作用是基于JSP高校教务排课管理系统 分为3个角色 第1个角色为管理员角色,实现了如下功能: - 专业设置查看 - 学生管理 - 排课管理 - 教室管理 - 教师管理 - 班级管理 - 管理员登录 - 系办人员管理 - 课程情况查看 - 课程申请管理 - 课程设置管理 第2个角色为教师角色,实现了如下功能: - 学生管理 - 成绩录入管理 - 教师角色登录 - 申请增加课程 - 课程安排管理 第3个角色为学生角色,实现了如下功能: - 基本信息查看 - 学生角色登录 - 成绩查询 - 课程表查看 - 选课功能安排

    第21章spring-mvc之缓存

    第21章spring-mvc之缓存

    华为网盘高级版

    华为网盘高级版

    setuptools-18.0.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Java聊天室程序(java).zip

    Java聊天室程序(java)

    产品线经理转身赋能zzn.pptx

    产品线经理转身赋能zzn.pptx

    JAVA泡泡堂网络游戏的设计与实现.zip

    JAVA泡泡堂网络游戏的设计与实现

    setuptools-11.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip

    基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。

    0514基于Python省市区三级地址库.zip

    python: 【0514】基于Python省市区三级地址库.zip

    Citizens with Props 1.0

    该包包括6个完全装配和纹理的3D公民角色,以2种颜色变化的男性和女性角色为特色,45个带有卡通着色器的风格化道具。 完全装配+搅拌机形状 MIXAMO兼容 这些卡通风格的人形公民角色设计得非常吸引人和引人注目,非常适合用于游戏、动画和其他数字项目。 通过各种各样的姿势和表情,你可以很容易地与这些角色一起创造出观众一定会喜欢的动态场景。

Global site tag (gtag.js) - Google Analytics