`

dwr学习 之 一、dwr+spring的简单集成

 
阅读更多

dwr学习 之 一、dwr+spring的简单集成
转自:http://limingnihao.iteye.com/blog/1074187



1. 环境搭建
我采用的环境为SpringMVC + myBatis + mySql + maven;

关于使用Eclipse构建Maven的SpringMVC项目,请参考: http://limingnihao.iteye.com/blog/830409.

关于mybatis,请参考:http://limingnihao.iteye.com/blog/781671



1.1 web.xml
         在配置好SpringMVC的环境之下,需要在web.xml中给Spring的dispatcher在添加一个dwr的servlet-mapping。

Xml代码  
1.<!-- spring --> 
2.<servlet> 
3.    <servlet-name>springDispatcher</servlet-name> 
4.    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
5.    <init-param> 
6.        <param-name>contextConfigLocation</param-name> 
7.        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
8.    </init-param> 
9.    <load-on-startup>1</load-on-startup> 
10.</servlet> 
11.<servlet-mapping> 
12.    <servlet-name>springDispatcher</servlet-name> 
13.    <url-pattern>*.do</url-pattern> 
14.</servlet-mapping> 
15. 
16.<!-- dwr设置 --> 
17.<servlet-mapping> 
18.    <servlet-name>springDispatcher</servlet-name> 
19.    <url-pattern>/dwr/*</url-pattern> 
20.</servlet-mapping> 


1.2 Spring配置文件
         添加dwr的namespace、dwr的controller、注解扫描等标签。给出配置文件全部内容如下:

Xml代码  
1.<?xml version="1.0" encoding="UTF-8"?> 
2.<beans xmlns="http://www.springframework.org/schema/beans"  
3.    xmlns:aop="http://www.springframework.org/schema/aop"  
4.    xmlns:context="http://www.springframework.org/schema/context" 
5.    xmlns:mvc="http://www.springframework.org/schema/mvc"  
6.    xmlns:tx="http://www.springframework.org/schema/tx"  
7.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
8.    xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" 
9.    xsi:schemaLocation="http://www.springframework.org/schema/aop  
10.        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
11.        http://www.springframework.org/schema/beans  
12.        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
13.        http://www.springframework.org/schema/context  
14.        http://www.springframework.org/schema/context/spring-context-3.0.xsd  
15.        http://www.springframework.org/schema/mvc  
16.        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
17.        http://www.springframework.org/schema/tx  
18.        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
19.        http://www.directwebremoting.org/schema/spring-dwr     
20.        http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"> 
21. 
22. 
23.    <aop:aspectj-autoproxy /> 
24.    <mvc:annotation-driven /> 
25.    <context:component-scan base-package="liming.student.manager" /> 
26. 
27.    <!-- 导入属性配置文件 --> 
28.    <context:property-placeholder location="classpath:mysql.properties" /> 
29.     
30.    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
31.        <property name="prefix" value="/WEB-INF/views/" /> 
32.        <property name="suffix" value=".jsp" /> 
33.    </bean> 
34. 
35.    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
36.        <property name="driverClassName" value="${jdbc.driverClassName}" /> 
37.        <property name="url" value="${jdbc.url}" /> 
38.        <property name="username" value="${username}" /> 
39.        <property name="password" value="${password}" /> 
40.    </bean> 
41. 
42.    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
43.        <property name="dataSource" ref="dataSource" /> 
44.    </bean> 
45. 
46.    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
47.        <property name="configLocation" value="classpath:mybatis-config.xml" /> 
48.        <property name="dataSource" ref="dataSource" /> 
49.    </bean> 
50. 
51.    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
52.        <property name="annotationClass" value="org.springframework.stereotype.Repository" /> 
53.        <property name="basePackage" value="liming.student.manager" /> 
54.        <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
55.    </bean> 
56. 
57.    <!-- DWR配置 --> 
58.    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
59.        <property name="order" value="1" /> 
60.    </bean> 
61.    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> 
62.        <property name="order" value="2" /> 
63.    </bean> 
64.    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 
65.    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> 
66.    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
67.        <property name="order" value="3" /> 
68.        <property value="true" name="alwaysUseFullPath"></property> 
69.        <property name="mappings"> 
70.            <props> 
71.                <prop key="/dwr/**">dwrController</prop> 
72.            </props> 
73.        </property> 
74.    </bean> 
75. 
76.    <dwr:controller id="dwrController" debug="true"> 
77.        <dwr:config-param name="allowScriptTagRemoting" value="true" /> 
78.        <dwr:config-param name="crossDomainSessionSecurity" value="false" /> 
79.    </dwr:controller> 
80.    <dwr:configuration></dwr:configuration> 
81.    <dwr:annotation-config /> 
82.    <dwr:annotation-scan scanRemoteProxy="true" scanDataTransferObject="true" base-package="liming.student.manager" /> 
83. 
84.</beans> 






2. 配置文件解说
2.1 controller
添加dwr的dwr:controller标签,debug为true时,可以访问/dwr/index.html的测试页面。还可以可以设置一些参数的值:

Xml代码  
1.<dwr:controller id="dwrController" debug="true"> 
2.    <dwr:config-param name="allowScriptTagRemoting" value="true" /> 
3.    <dwr:config-param name="crossDomainSessionSecurity" value="false" /> 
4.</dwr:controller> 
  
    controller常用配置:

参数名称
默认值
说明

jsonpEnabled
false
Set to true to enable DWR's JSONP remoting.

allowGetForSafariButMakeForgeryEasier
false
Set to true to make DWR work in Safari 1.x (where a bug drops the bodies from POST requests). POST requests are slightly harder to forge, so enabling this reduces security slightly.

crossDomainSessionSecurity
true
Set to false to enable requests from other domains. Note that enabling this can be a significant security risk. See the Wikipedia notes on CSRF for more. Do not set this to false without understanding the consequences.

allowScriptTagRemoting
true
Set to true to enable Script Tag remoting. Note that enabling this can be a significant security risk. See the Wikipedia notes on CSRF for more. Do not set this to false without understanding the consequences. There are some cases where you will need to enable Script Tag remoting, but want to leave crossDomainSessionSecurity in place - particularly when you have an http based web page, and an https based DWR service.

debug
false
Set to true to enable the debug/test pages.

scriptSessionTimeout
1800000 (30 mins)
How quickly do scriptSessions timeout?

maxCallCount
20
What is the maximum number of calls that can be done in a single batch. (Helps prevent DoS attacks).






2.2 url-mapping

         在Springmvc中,每个url都需要一个controller的映射器(RequestMapping),需要使用<dwr:url-mapping />标签进行声明,这样才可以访问/engine.js, /interface.js, /call/**, /interface/**路径。但是带来的不管是测试页(/dwe/index.html)将不能访问。解决办法是,声明一个SimpleUrlHandlerMapping的bean指定dwr的请求路径:

Xml代码  
1.<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
2.    <property name="order" value="3" /> 
3.    <property value="true" name="alwaysUseFullPath"></property> 
4.    <property name="mappings"> 
5.        <props> 
6.            <prop key="/dwr/**">dwrController</prop> 
7.        </props> 
8.    </property> 
9.</bean> 
  
2.3 configuration
<dwr:configuration/> 标签用于模仿在 dwr.xml 中可用的配置的行为。主要是声明实体类转换。例如:

Xml代码  
1.<dwr:configuration> 
2.    <dwr:convert type="bean" class="liming.student.manager.data.model.PlaceEntity"></dwr:convert> 
3.</dwr:configuration> 
  
2.4 remote
dwr:remote用于声明可以进行js调用的java bean:

Xml代码  
1.<bean class="liming.student.manager.web.dwr.DWRDemo"> 
2.    <dwr:remote javascript="DWRDemo"> 
3.        <dwr:include method="getPlaceBaseAllList"/> 
4.    </dwr:remote> 
5.</bean> 
  
2.5 annotation-config、annatation-scan
         当使用注解声明bean和实体类转换时,需要声明dwr:annotation-config、annotation-scan。

         @ RemoteProxy:注解定义为远程调用的类,可指定name,js调用的名称。

         @ RemoteMethod:可远程调用的方法。

         @DataTransferObject:实体类转换器。



annotation-config:启用DWR 扫描,在类路径中检测 @ RemoteProxy 与@ RemoteMethod注解的类。

       annotation-scan:定义一些注解扫描的参数:

                   base-package:指定的扫描的包;

                   regex:将扫描仪类路径中使用正则表达式;

                   scanRemoteProxy:DWR 是否扫描远程代理类?默认值为 true。

     scanDataTransferObject:DWR 是否扫描转换器?默认值为 true。

     scanGlobalFilter-默认值为 true。



Xml代码  
1.<dwr:annotation-config /> 
2.<dwr:annotation-scan scanRemoteProxy="true" scanDataTransferObject="true" base-package="liming.student.manager" /> 
分享到:
评论

相关推荐

    DWR+extjs+spring+hibernate

    总结起来,"DWR+extjs+spring+hibernate"的组合是现代Web应用开发的一个强大工具集,它能够帮助开发者快速构建出交互性强、性能优异的企业级应用。通过深入理解和熟练掌握这四个技术,可以显著提升开发者的技能水平...

    dwr+spring集成配置

    将DWR与Spring集成,可以充分利用Spring的管理能力,简化DWR的配置和增强应用的可维护性。 ### 集成步骤 1. **引入依赖** 在项目的`pom.xml`文件中添加DWR和Spring的依赖。确保版本兼容,通常选择最新稳定版本。 ...

    dwr+spring+hibernate模板.zip

    《DWR+Spring+Hibernate整合应用详解》 在IT领域,DWR(Direct Web Remoting)、Spring和Hibernate是三个至关重要的技术组件,它们分别在Web应用程序的远程调用、依赖注入和对象关系映射方面发挥着核心作用。将这三...

    dwr+ext+strusts2+spring+hibernate整合

    "dwr+ext+struts2+spring+hibernate整合"就是一个典型的例子,它涵盖了前端展示、后端控制、业务逻辑处理、持久层操作等多个层面的技术。下面将分别详细介绍这些技术以及它们在整合中的作用。 1. DWR (Direct Web ...

    DWR+jquery2.x+easyUI1.3.x开发富客户端应用

    1. **整合目标**:本文档的目标是将 Struts2.x、Spring3.x、Hibernate4.x 与 DWR、jquery2.x 和 easyUI1.3.x 进行集成,以构建一个功能齐全且高效的 Web 开发环境。 2. **jQuery 版本选择**:为了兼容性和性能考虑...

    struts2+spring+hibernate+dwr

    Spring框架是Java企业级应用的核心,它提供了一站式解决方案,包括IOC(Inversion of Control,控制反转)容器、AOP、数据访问/集成、事务管理、MVC框架等。在本例中,Spring可能用于管理Struts2的Action类,实现...

    Ajax(DWR) + Spring + Hibernate + Struts整合登陆注册

    总之,这个示例是一个很好的学习资源,帮助开发者了解如何在Java Web环境中将Ajax、Spring、Hibernate和Struts结合使用,实现复杂的业务流程。通过这个案例,你可以深入理解这些框架的核心功能,以及它们在实际开发...

    struts2+hibernate+spring+dwr整合

    Spring 还包含了一个全面的事务管理、数据访问集成框架,支持JDBC、Hibernate等持久层技术。 Direct Web Remoting (DWR) 是一种允许JavaScript在浏览器中直接调用服务器端Java方法的库,实现了Ajax的无刷新通信。...

    dwr+spring

    DWR的主要目标是简化Web应用程序的开发,通过提供一种简单的方式来调用服务器端的Java方法,就像它们是本地JavaScript函数一样。与**Spring框架**的集成,使得DWR可以更好地融入到企业级的Java应用中,提供了更强大...

    dwr+spring实例

    综上所述,"DWRSpring实例"是一个很好的学习资源,可以帮助我们理解DWR如何与Spring框架集成,以及如何在实际项目中实现动态的、基于Ajax的Web应用。通过研究和实践这个例子,开发者可以提升自己在构建富互联网应用...

    EXT + DWR + Struts + Hibernate + Spring Demo

    EXT + DWR + Struts + Hibernate + Spring 是一个经典的Java Web开发框架组合,它们共同构建了一个强大、灵活且高效的Web应用程序。以下是对这些技术及其在Demo中的应用的详细解释: 1. **EXT**:EXT(现称为Sencha...

    dwr,dwr+spring学习指南

    总的来说,"Dwr,dwr+spring学习指南"是一个涵盖DWR基本使用和与Spring框架集成的教程,旨在帮助开发者理解如何利用DWR创建动态Web应用,并通过Spring增强其功能和稳定性。通过深入学习和实践这个指南,开发者能够...

    dwr+hibernate+spring 集成 实例

    通过以上步骤,你可以构建一个集成了DWR、Hibernate和Spring的Web应用,它既能利用DWR提供实时的用户交互,又能利用Hibernate简化数据库操作,再借助Spring进行依赖管理和事务处理,形成一个高效、健壮的应用架构。...

    DWR+SPRING 例子+DWR中文教材

    这些实例可以帮助我们深入理解DWR与Spring的集成方式,以及如何在实际项目中应用。 DWR中文教材可能涵盖了DWR的基本概念、安装与配置、安全性、调试技巧等内容,对于初学者来说是一份非常实用的学习资料。通过阅读...

    spring3+struts2+hibernate3+dwr3+spring security3+ajax完整实例

    Struts 2与Spring集成,使得Action类可以通过Spring容器进行管理,便于实现依赖注入。 **Hibernate 3** 是一个持久化框架,简化了数据库操作。它通过对象关系映射(ORM)技术,将数据库中的记录映射为Java对象,...

    DWR+EXT+SPRING+HIBERNATE较为完整的一个例子

    总之,这个"DWR+EXT+SPRING+HIBERNATE"的例子为学习和实践 Java Web 开发提供了一个宝贵的资源,无论是对于新手的启蒙,还是对于老手的复习,都有着很高的价值。通过深入研究和理解这个示例,开发者可以更好地掌握...

    dwr2.0整合Struts1.3+hibernate3.1+spring2.5的项目

    标题 "dwr2.0整合Struts1.3+hibernate3.1+spring2.5的项目" 涉及的是一个经典的Java Web开发技术集成,这其中包括Direct Web Remoting (DWR) 2.0、Struts 1.3、Hibernate 3.1和Spring 2.5。这个项目可能是为了展示...

    dwr+springJdbc例子

    文件"TestSringJdbc"可能是这个项目的测试代码,用于验证Spring和JDBC的集成是否正确,以及DWR能否顺利地将这些功能暴露给客户端。测试通常会包含创建和执行SQL查询,检查返回结果,以及验证DWR调用的正确性。 总结...

    hibernate+dwr+spring+jstl的demo

    【标题】"hibernate+dwr+spring+jstl的demo"揭示了这是一个结合了四个关键技术的示例项目,主要用于展示如何在Web开发中整合这些技术。这些技术分别是Hibernate(对象关系映射框架)、Direct Web Remoting (DWR)(一...

    Struts2 + Spring + Hibernate + DWR 项目布署笔记

    在`struts2-spring-plugin-2.0.11.2.jar`中,包含了Struts2与Spring集成所需的类和配置,帮助管理Struts2的Action实例。 其次,Spring框架是Java开发的核心工具,它不仅提供了DI和AOP,还支持事务管理、数据访问...

Global site tag (gtag.js) - Google Analytics