注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

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

2009-12-22 10:20:57|  分类: spring |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这里使用 DWR3.rc1, Spring2.5 and Spring MVC

 

在Spring2.5中,使用了许多annotation, 新版本的DWR也支持annotation了, 下面看一下配置过程

 

1. 先写一个Controller

 

Java代码 复制代码
  1. package com.myapp.web.controller;   
  2.   
  3. import javax.servlet.http.HttpServletRequest;   
  4. import org.directwebremoting.annotations.RemoteMethod;   
  5. import org.directwebremoting.annotations.RemoteProxy;   
  6. import org.springframework.stereotype.Controller;   
  7. import org.springframework.web.bind.annotation.RequestMapping;   
  8.   
  9. @Controller  
  10. @RemoteProxy  
  11. public class UserController {   
  12.   
  13.     @RemoteMethod  
  14.     public String getUserName(int id) {   
  15.         System.out.println("user id is " + id);   
  16.         return "UserName: " + id;   
  17.     }   
  18.        
  19.     @RequestMapping("/user/add.do")   
  20.     public String addUser(HttpServletRequest request) {   
  21.         System.out.println("this is action method");   
  22.         return "/user/list.jsp";   
  23.     }   
  24. }  
package com.myapp.web.controller;    import javax.servlet.http.HttpServletRequest;  import org.directwebremoting.annotations.RemoteMethod;  import org.directwebremoting.annotations.RemoteProxy;  import org.springframework.stereotype.Controller;  import org.springframework.web.bind.annotation.RequestMapping;    @Controller  @RemoteProxy  public class UserController {     @RemoteMethod   public String getUserName(int id) {    System.out.println("user id is " + id);    return "UserName: " + id;   }      @RequestMapping("/user/add.do")   public String addUser(HttpServletRequest request) {    System.out.println("this is action method");    return "/user/list.jsp";   }  }

 

@RemoteProxy注解告诉DWR,这个Class是我们想暴露出来的。@RemoteMethod注解告诉DWR去暴露这个指定的方法,只有加了RemoteMethod注解的方法会被暴露,其它的不会。

这里也可以使用@RemoteProxy(name="userRemote")的方式指定DWR接口的名字

 

2. 接下来看web.xml的配置

 

Xml代码 复制代码
  1. <servlet>  
  2.     <servlet-name>action</servlet-name>  
  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  4.     <load-on-startup>1</load-on-startup>  
  5.    </servlet>  
  6.   
  7. <context-param>  
  8.     <param-name>contextConfigLocation</param-name>  
  9.     <param-value>/WEB-INF/springconfig/*.xml</param-value>  
  10. </context-param>  
  11.   
  12.    <servlet-mapping>  
  13.     <servlet-name>action</servlet-name>  
  14.     <url-pattern>*.do</url-pattern>  
  15.    </servlet-mapping>  
  16.       
  17. <servlet-mapping>  
  18.     <servlet-name>action</servlet-name>  
  19.     <url-pattern>/dwr/*</url-pattern>  
  20. </servlet-mapping>  
  21.   
  22. <listener>  
  23.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  24. </listener>  
 <servlet>    <servlet-name>action</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <load-on-startup>1</load-on-startup>      </servlet>     <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>/WEB-INF/springconfig/*.xml</param-value>   </context-param>        <servlet-mapping>    <servlet-name>action</servlet-name>    <url-pattern>*.do</url-pattern>      </servlet-mapping>         <servlet-mapping>    <servlet-name>action</servlet-name>    <url-pattern>/dwr/*</url-pattern>   </servlet-mapping>      <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>   </listener>

 

注意,这里没有使用org.directwebremoting.spring.DwrSpringServlet或org.directwebremoting.servlet.DwrServlet,并且请注意这里使用spring的dispatcher servlet来映射/dwr/*请求。

 

3. 最后看针对DispatcherServlet的配置文件action-servlet.xml

 

Xml代码 复制代码
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  6.         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  7.         http://www.springframework.org/schema/context   
  8.         http://www.springframework.org/schema/context/spring-context-2.5.xsd    
  9.         http://www.directwebremoting.org/schema/spring-dwr     
  10.         http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"   
  11.         default-autowire="byName">  
  12.   
  13.     <context:annotation-config />  
  14.        
  15.     <!-- 注意这里新增加的dwr tag, 为使其生效,文件头中要声明namespace -->  
  16.     <dwr:configuration />  
  17.     <dwr:annotation-config />  
  18.     <dwr:url-mapping />  
  19.        
  20.     <!-- 部署项目时, 请把debug设为false -->  
  21.     <dwr:controller id="dwrController" debug="true" />  
  22.        
  23.     <!-- 多个包名用逗号隔开, 但不能有空格 -->  
  24.     <context:component-scan base-package="com.myapp.web.controller" />  
  25.        
  26.     <!-- order值越小, 优先级越高 -->  
  27.     <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">  
  28.         <property name="order" value="1" />  
  29.     </bean>  
  30.     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">  
  31.         <property name="order" value="2" />  
  32.     </bean>  
  33.        
  34.  </beans>  
<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"      xmlns:context="http://www.springframework.org/schema/context"      xsi:schemaLocation="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.directwebremoting.org/schema/spring-dwr            http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"          default-autowire="byName">     <context:annotation-config />      <!-- 注意这里新增加的dwr tag, 为使其生效,文件头中要声明namespace -->   <dwr:configuration />   <dwr:annotation-config />   <dwr:url-mapping />      <!-- 部署项目时, 请把debug设为false -->   <dwr:controller id="dwrController" debug="true" />      <!-- 多个包名用逗号隔开, 但不能有空格 -->   <context:component-scan base-package="com.myapp.web.controller" />      <!-- order值越小, 优先级越高 -->   <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>         </beans>

 

简单解释一下这些配置

  • <dwr:annotation-config /> 要求DWR在Spring容器中检查拥有@RemoteProxy 和 @RemoteMethod注解的类。注意它不会去检查Spring容器之外的类。
  • <dwr:url-mapping /> 要求DWR将util.js和engine.js映射到dwrController
  • <dwr:controller id="dwrController" debug="true" /> 定义dwrController
  • <dwr:configuration /> 此标签在这个例子中不是必须的,如果你想配置Spring容器之外的类,就需要它了。

最后一件事,DWR的测试页面 http://localhost:8080/myapp/dwr 在这里不好用。

请使用 http://localhost:8080/myapp/dwr/test/YOUR-BEAN-NAME 的方式来测试你的DWR接口,

例如这里使用 http://localhost:8080/myapp/dwr/test/UserController

 

OK 运行测试一下吧

 在spring配置文件最后加上

Java代码 复制代码
  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>   
<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>   



就可以通过http://localhost:8080/myApp/dwr来访问test page了

原文 http://www.codercorp.com/blog/spring/configuring-dwr-30-with-spring-using-annotations.html

  评论这张
 
阅读(1288)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017