dwr学习 之 一、dwr+spring的简单集成
dwr学习 之 一、dwr+spring的简单集成
dwr学习之 二、dwr功能演示
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。
<!-- spring -->
<servlet>
<servlet-name>springDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- dwr设置 -->
<servlet-mapping>
<servlet-name>springDispatcher</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
1.2 Spring配置文件
添加dwr的namespace、dwr的controller、注解扫描等标签。给出配置文件全部内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
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/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.directwebremoting.org/schema/spring-dwr
http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">
<aop:aspectj-autoproxy />
<mvc:annotation-driven />
<context:component-scan base-package="liming.student.manager" />
<!-- 导入属性配置文件 -->
<context:property-placeholder location="classpath:mysql.properties" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="annotationClass" value="org.springframework.stereotype.Repository" />
<property name="basePackage" value="liming.student.manager" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<!-- DWR配置 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="1" />
</bean>
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="order" value="2" />
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="order" value="3" />
<property value="true" name="alwaysUseFullPath"></property>
<property name="mappings">
<props>
<prop key="/dwr/**">dwrController</prop>
</props>
</property>
</bean>
<dwr:controller id="dwrController" debug="true">
<dwr:config-param name="allowScriptTagRemoting" value="true" />
<dwr:config-param name="crossDomainSessionSecurity" value="false" />
</dwr:controller>
<dwr:configuration></dwr:configuration>
<dwr:annotation-config />
<dwr:annotation-scan scanRemoteProxy="true" scanDataTransferObject="true" base-package="liming.student.manager" />
</beans>
2. 配置文件解说
2.1 controller
添加dwr的dwr:controller标签,debug为true时,可以访问/dwr/index.html的测试页面。还可以可以设置一些参数的值:
<dwr:controller id="dwrController" debug="true">
<dwr:config-param name="allowScriptTagRemoting" value="true" />
<dwr:config-param name="crossDomainSessionSecurity" value="false" />
</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的请求路径:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="order" value="3" />
<property value="true" name="alwaysUseFullPath"></property>
<property name="mappings">
<props>
<prop key="/dwr/**">dwrController</prop>
</props>
</property>
</bean>
2.3 configuration
<dwr:configuration/>
标签用于模仿在 dwr.xml 中可用的配置的行为。主要是声明实体类转换。例如:
<dwr:configuration>
<dwr:convert type="bean" class="liming.student.manager.data.model.PlaceEntity"></dwr:convert>
</dwr:configuration>
2.4 remote
dwr:remote用于声明可以进行js调用的java bean:
<bean class="liming.student.manager.web.dwr.DWRDemo">
<dwr:remote javascript="DWRDemo">
<dwr:include method="getPlaceBaseAllList"/>
</dwr:remote>
</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。
<dwr:annotation-config />
<dwr:annotation-scan scanRemoteProxy="true" scanDataTransferObject="true" base-package="liming.student.manager" />
dwr学习 之 一、dwr+spring的简单集成
dwr学习之 二、dwr功能演示
分享到:
相关推荐
总结起来,"DWR+extjs+spring+hibernate"的组合是现代Web应用开发的一个强大工具集,它能够帮助开发者快速构建出交互性强、性能优异的企业级应用。通过深入理解和熟练掌握这四个技术,可以显著提升开发者的技能水平...
将DWR与Spring集成,可以充分利用Spring的管理能力,简化DWR的配置和增强应用的可维护性。 ### 集成步骤 1. **引入依赖** 在项目的`pom.xml`文件中添加DWR和Spring的依赖。确保版本兼容,通常选择最新稳定版本。 ...
《DWR+Spring+Hibernate整合应用详解》 在IT领域,DWR(Direct Web Remoting)、Spring和Hibernate是三个至关重要的技术组件,它们分别在Web应用程序的远程调用、依赖注入和对象关系映射方面发挥着核心作用。将这三...
"dwr+ext+struts2+spring+hibernate整合"就是一个典型的例子,它涵盖了前端展示、后端控制、业务逻辑处理、持久层操作等多个层面的技术。下面将分别详细介绍这些技术以及它们在整合中的作用。 1. DWR (Direct Web ...
1. **整合目标**:本文档的目标是将 Struts2.x、Spring3.x、Hibernate4.x 与 DWR、jquery2.x 和 easyUI1.3.x 进行集成,以构建一个功能齐全且高效的 Web 开发环境。 2. **jQuery 版本选择**:为了兼容性和性能考虑...
Spring框架是Java企业级应用的核心,它提供了一站式解决方案,包括IOC(Inversion of Control,控制反转)容器、AOP、数据访问/集成、事务管理、MVC框架等。在本例中,Spring可能用于管理Struts2的Action类,实现...
总之,这个示例是一个很好的学习资源,帮助开发者了解如何在Java Web环境中将Ajax、Spring、Hibernate和Struts结合使用,实现复杂的业务流程。通过这个案例,你可以深入理解这些框架的核心功能,以及它们在实际开发...
Spring 还包含了一个全面的事务管理、数据访问集成框架,支持JDBC、Hibernate等持久层技术。 Direct Web Remoting (DWR) 是一种允许JavaScript在浏览器中直接调用服务器端Java方法的库,实现了Ajax的无刷新通信。...
DWR的主要目标是简化Web应用程序的开发,通过提供一种简单的方式来调用服务器端的Java方法,就像它们是本地JavaScript函数一样。与**Spring框架**的集成,使得DWR可以更好地融入到企业级的Java应用中,提供了更强大...
综上所述,"DWRSpring实例"是一个很好的学习资源,可以帮助我们理解DWR如何与Spring框架集成,以及如何在实际项目中实现动态的、基于Ajax的Web应用。通过研究和实践这个例子,开发者可以提升自己在构建富互联网应用...
EXT + DWR + Struts + Hibernate + Spring 是一个经典的Java Web开发框架组合,它们共同构建了一个强大、灵活且高效的Web应用程序。以下是对这些技术及其在Demo中的应用的详细解释: 1. **EXT**:EXT(现称为Sencha...
总的来说,"Dwr,dwr+spring学习指南"是一个涵盖DWR基本使用和与Spring框架集成的教程,旨在帮助开发者理解如何利用DWR创建动态Web应用,并通过Spring增强其功能和稳定性。通过深入学习和实践这个指南,开发者能够...
通过以上步骤,你可以构建一个集成了DWR、Hibernate和Spring的Web应用,它既能利用DWR提供实时的用户交互,又能利用Hibernate简化数据库操作,再借助Spring进行依赖管理和事务处理,形成一个高效、健壮的应用架构。...
这些实例可以帮助我们深入理解DWR与Spring的集成方式,以及如何在实际项目中应用。 DWR中文教材可能涵盖了DWR的基本概念、安装与配置、安全性、调试技巧等内容,对于初学者来说是一份非常实用的学习资料。通过阅读...
Struts 2与Spring集成,使得Action类可以通过Spring容器进行管理,便于实现依赖注入。 **Hibernate 3** 是一个持久化框架,简化了数据库操作。它通过对象关系映射(ORM)技术,将数据库中的记录映射为Java对象,...
总之,这个"DWR+EXT+SPRING+HIBERNATE"的例子为学习和实践 Java Web 开发提供了一个宝贵的资源,无论是对于新手的启蒙,还是对于老手的复习,都有着很高的价值。通过深入研究和理解这个示例,开发者可以更好地掌握...
标题 "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。这个项目可能是为了展示...
文件"TestSringJdbc"可能是这个项目的测试代码,用于验证Spring和JDBC的集成是否正确,以及DWR能否顺利地将这些功能暴露给客户端。测试通常会包含创建和执行SQL查询,检查返回结果,以及验证DWR调用的正确性。 总结...
【标题】"hibernate+dwr+spring+jstl的demo"揭示了这是一个结合了四个关键技术的示例项目,主要用于展示如何在Web开发中整合这些技术。这些技术分别是Hibernate(对象关系映射框架)、Direct Web Remoting (DWR)(一...
在`struts2-spring-plugin-2.0.11.2.jar`中,包含了Struts2与Spring集成所需的类和配置,帮助管理Struts2的Action实例。 其次,Spring框架是Java开发的核心工具,它不仅提供了DI和AOP,还支持事务管理、数据访问...