`
kv0002
  • 浏览: 8748 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

让Dwr和Spring-MVC通过Annotation方式共同工作

阅读更多
引用
SPRING2.X后引入了@Controller的方式标注Controller,大大简化了原来的XML方式的MVC配置,不过传统的DWR配置方式,虽然可以通过SpringCreator的方式将BEAN暴露给AJAX使用,但是仍然逃不出繁杂的XML配置,通过SPRING的annotation方式,可以简化DWR和SPRING之间的配置.

web.xml
<!-- Spring -->
	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
				classpath:spring/webControllerContext.xml
			</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>*.htm</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>

将DispatcherServlet配置成管理htm和dwr

webControllerContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
	xmlns:dwra="http://www.directwebremoting.org/schema/spring-dwr-annotations"
	xsi:schemaLocation="
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
			http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
			http://www.directwebremoting.org/schema/spring-dwr
            http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd
            http://www.directwebremoting.org/schema/spring-dwr-annotations
            http://www.directwebremoting.org/schema/spring-dwr-annotations.xsd">
	
	<context:annotation-config/>
	
	<context:component-scan base-package="mvc" />

	<bean
		class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

	<!-- 
		<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
	-->

	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		p:prefix="" p:suffix=".jsp" />

	<!-- DWR -->
	<dwr:configuration>
		<dwr:convert class="mvc.User" type="bean" />
		<dwr:signatures>
			<![CDATA[
				import java.util.Map;
				]]>
		</dwr:signatures>
	</dwr:configuration>

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

	<!--  New DWR capabilities-->
	<dwra:url-mapping />
	<dwra:annotation-config />
</beans>

@Controller("helloController")
@RequestMapping("/helloController.htm")
@RemoteProxy(creator = SpringCreator.class, creatorParams = @Param(name = "beanName", value = "helloController"), name = "dwrHelloController")
public class Hello {
	/**
	 * User Dao
	 */
	private UserDao userDao;

	/**
	 * Employee dao
	 */
	private EmployeeDao employeeDao;

	@RemoteMethod
	@RequestMapping
	public String sayHello() {
		String str = "hello";
		System.out.println(str);
		return str;
	}

	@RemoteMethod
	public User getUser() {
		User user = this.getUserDao().getUser();
		user.setName(user.getName() + " _ "
				+ this.getEmployeeDao().getEmployeeName());
		return user;
	}

	@RequestMapping(params = "method=sayBye")
	public ModelAndView sayBye() {
		String str = "bye";
		System.out.println(str);
		return null;
	}

	//...忽略set和get
}


可以看到,首先通过:

@Controller("helloController")
@RequestMapping("/helloController.htm")


将POJO暴露成一个SpringMvc的Controller,然后在DI给DWR,成为一个AJAX服务:

@RemoteProxy(creator = SpringCreator.class, creatorParams = @Param(name = "beanName", value = "helloController"), name = "dwrHelloController")

在指定的方法上面标注:
@RemoteMethod
@RequestMapping(params = "method=sayHello")
public String sayHello() {...}

这样,这个方法既可以成为一个controller资源,也可以被DWR访问,如:
http://localhost/mvc/helloController.htm?method=sayHello
或者在页面中用JS访问:
dwrHelloController.sayHello(function callbackFun(data){
   			alert(data);});

一举多得,实现代码的最小量

需要注意的地方:
spring的XML配置中:
http://www.directwebremoting.org/schema/spring-dwr-annotations
http://www.directwebremoting.org/schema/spring-dwr-annotations.xsd

<!--  New DWR capabilities-->
<dwra:url-mapping />
<dwra:annotation-config />

不是标准的,需要引入第三方包:DwrSpringAnnotations.jar,作为DWR.JAR的补充,可以使DWR引用spring-annntation方式实例化的bean,该jar在
http://www.nabble.com/attachment/15108217/0/annotations.war
下载
分享到:
评论
5 楼 kv0002 2008-09-20  
<dwra:url-mapping />     
<dwra:annotation-config /> 

需要下载第三方的JAR,地址:
http://www.nabble.com/attachment/15108217/0/annotations.war
4 楼 dhxyu 2008-08-08  
还行吧,dwr跟spring是紧密结合了
3 楼 shuai45 2008-08-06  
貌似没怎么简化
2 楼 hball 2008-08-05  
<ol>
<li>楼在吗,好像官方的XSD没有<strong><span style='color: #006699;'><span class='tag'>
<pre name='code' class='java'>&lt;dwra:url-mapping /&gt; 
&lt;dwra:annotation-config /&gt;</pre>
 </span></span></strong>这两个的支持了.怎么办?</li>
</ol>
1 楼 vlinux 2008-06-28  
哦,DWR官方已经有Annotation了?那我的可以考虑不用了

相关推荐

    将dwr集成到spring mvc(dwr的配置是基于xml)

    通过这种方式,你可以利用DWR的便捷性,实现动态的、无刷新的页面更新,同时利用Spring MVC的强大功能处理复杂的业务逻辑。记住,这只是一个基础配置,实际应用中可能需要根据项目需求进行更精细的调整。

    配置整合DWR3.0和Spring2.5使用annotation注解

    在本文中,我们将探讨如何将Direct Web Remoting (DWR) 3.0与...通过这种方式,DWR 3.0与Spring 2.5的整合使用注解配置简化了开发流程,使得Java后端的方法可以直接在客户端JavaScript中调用,实现前后端的无缝交互。

    Dwr3+Spring3 全注解 annotation 方式

    本篇文章将详细介绍如何结合Dwr3和Spring3,利用全注解的方式进行集成与配置。 首先,我们需要理解Dwr3的基本概念。DWR3是DWR的第三个主要版本,它提供了一种简单的方法来实现在Web应用程序中调用服务器端的Java...

    dwr和spring和struts2整合

    这可以通过在dwr.xml中添加`&lt;dwr:annotation-config&gt;`标签,以及在web.xml中配置DWR的Spring监听器来实现。 5. **编写前端代码**:在HTML页面中,引入DWR的JavaScript库,并使用DWR提供的API来调用服务器端的方法。...

    Spring+Dwr整合的项目(源码)

    本项目是Spring与DWR的整合实例,涵盖了三种整合方式,其中最彻底的方式是通过注解(Annotation)来实现,无需手动配置DWRSERVLET和dwr.xml文件,这使得配置更为简洁,同时也更符合现代开发的实践。 1. **Spring与...

    ssh整合----annotation

    SSH整合是指将Struts2、Spring和Hibernate这三个开源框架集成在一起,用于构建高效、灵活的Java Web应用程序。本文将详细讲解使用注解方式进行SSH整合的步骤。 首先,我们需要准备一个开发环境,这里选择了...

    spring2.5 ibatis2.3 struts2.1 dwr3 annotation集成配置

    DWR 3与Spring的集成,可以让Spring管理DWR的bean,便于依赖注入和事务控制。 在这个集成配置中,各个组件通过注解和Spring的管理进行紧密协作。例如,Struts 2的Action类可以被Spring管理,其依赖通过注解自动注入...

    Spring MVC tutorial

    3. **MVC配置**:使用`&lt;mvc:annotation-driven&gt;`元素启用注解驱动,让Spring自动扫描@Controller注解的类。 4. **视图解析器**:配置ViewResolver,例如`InternalResourceViewResolver`,指定前缀和后缀。 5. **...

    springMVC整合DWR3.0 实例

    ### SpringMVC整合DWR3.0 实例详解 ...通过这种方式,我们可以利用DWR强大的功能来提高Web应用程序的响应速度和用户体验。希望本文能为您的项目带来帮助,也欢迎各位提出宝贵意见,共同学习进步。

    Spring+DWR 全注解版

    在Demo_Spring_Dwr_Annotation这个文件名中,我们可以推断出这可能是一个包含演示Spring和DWR集成的项目,而且使用了全注解的方式来配置。以下是一些可能包含的知识点: 1. **Spring框架**: Spring是Java企业级应用...

    Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00

    ### Struts1.x、Spring2.x、Hibernate3.x 和 DWR2.x 整合知识点解析 ...通过以上详细的配置和解释,可以有效地实现Struts1.x、Spring2.x、Hibernate3.x 和 DWR2.x 的整合,为开发者提供了一个稳定、高效的技术栈。

    ajax框架:dwr》实战(包括整合)

    - **Spring MVC**:利用 Spring MVC 控制器来桥接 DWR 和业务逻辑层。 **3. DWR 与 HIBERNATE 整合说明** - **数据访问**:通过 Hibernate 处理数据库查询和更新操作。 - **对象映射**:利用 Hibernate 的对象关系...

    javaSSH框架搭建配置

    通过上述步骤,开发者可以在Java Web项目中快速构建起一套基于Spring、Struts和Hibernate的技术栈。这种组合不仅能够提高开发效率,还能有效提升系统的可维护性和扩展性。希望本篇文章能为正在进行Java Web开发的...

    s2sh+dwr+extjs基于annoation三个项目实战

    在本项目实战中,我们将深入探讨如何利用"Spring 2.5 + Struts 2 + Hibernate (S2SH)"框架,结合Direct Web Remoting (DWR) 和ExtJS技术,来构建一个基于注解(Annotation)的高效Web应用程序。这个实战涵盖了三个...

    java知识点.pdf

    - WebService是一种让应用程序可以通过Web进行通信和服务交换的技术。 #### 十、Servlet/JSP **1. Tomcat基础** - Tomcat是一个免费开源的轻量级Web服务器和Servlet容器。 **2. Servlet基础** - Servlet是Java ...

    java知识点汇总学习路线与笔记

    - **Struts基本概念**:理解Struts框架的基本组成和工作原理。 - **MVC**:模型-视图-控制器设计模式。 - **Action与业务逻辑类的关系**:Action类负责接收请求并调用业务逻辑类。 - **在Servlet与JSP之间传递数据**...

    java学习线路

    * Java 高级知识:Annotation、IO 和 NIO、AIO、多线程、线程池、阻塞、非阻塞、异步网络通信、反射、动态代理 二、JDBC 编程 * SQL 基础:基础 SQL 语句、基本查询、多表查询、子查询、结果集的交、并、差运算 * ...

Global site tag (gtag.js) - Google Analytics