`
yaowei06252009
  • 浏览: 85078 次
  • 性别: Icon_minigender_1
  • 来自: 蚌埠
社区版块
存档分类
最新评论

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

阅读更多

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

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

1. 先写一个Controller

Java代码 复制代码
  1. packagecom.myapp.web.controller;
  2. importjavax.servlet.http.HttpServletRequest;
  3. importorg.directwebremoting.annotations.RemoteMethod;
  4. importorg.directwebremoting.annotations.RemoteProxy;
  5. importorg.springframework.stereotype.Controller;
  6. importorg.springframework.web.bind.annotation.RequestMapping;
  7. @Controller
  8. @RemoteProxy
  9. publicclassUserController{
  10. @RemoteMethod
  11. publicStringgetUserName(intid){
  12. System.out.println("useridis"+id);
  13. return"UserName:"+id;
  14. }
  15. @RequestMapping("/user/add.do")
  16. publicStringaddUser(HttpServletRequestrequest){
  17. System.out.println("thisisactionmethod");
  18. return"/user/list.jsp";
  19. }
  20. }
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. <context-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>/WEB-INF/springconfig/*.xml</param-value>
  9. </context-param>
  10. <servlet-mapping>
  11. <servlet-name>action</servlet-name>
  12. <url-pattern>*.do</url-pattern>
  13. </servlet-mapping>
  14. <servlet-mapping>
  15. <servlet-name>action</servlet-name>
  16. <url-pattern>/dwr/*</url-pattern>
  17. </servlet-mapping>
  18. <listener>
  19. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  20. </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. <beansxmlns="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. <context:annotation-config/>
  13. <!--注意这里新增加的dwrtag,为使其生效,文件头中要声明namespace-->
  14. <dwr:configuration/>
  15. <dwr:annotation-config/>
  16. <dwr:url-mapping/>
  17. <!--部署项目时,请把debug设为false-->
  18. <dwr:controllerid="dwrController"debug="true"/>
  19. <!--多个包名用逗号隔开,但不能有空格-->
  20. <context:component-scanbase-package="com.myapp.web.controller"/>
  21. <!--order值越小,优先级越高-->
  22. <beanclass="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
  23. <propertyname="order"value="1"/>
  24. </bean>
  25. <beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
  26. <propertyname="order"value="2"/>
  27. </bean>
  28. </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 运行测试一下吧

<!-- -->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics