首先参考了wangcheng的一个博客:http://wangcheng.iteye.com/blog/409548
因为我的Spring已经是使用annotation注解,所以现在加入DWR框架一样使用annotation注解,Spring、Hibernate文件配置这里不做解释。
1.系统的业务类:
package com.gxuwz.shiplock.mainservice.service;
import java.util.List;
import javacommon.base.BaseManager;
import javacommon.base.EntityDao;
import org.directwebremoting.annotations.RemoteMethod;
import org.directwebremoting.annotations.RemoteProxy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.gxuwz.shiplock.mainservice.dao.ServiceRegisterDao;
import com.gxuwz.shiplock.mainservice.model.ServiceRegister;
import com.gxuwz.shiplock.mainservice.vo.service.SchedulingParameters;
/**
* @author 梧州学院 软件开发中心 庞光垚 116861519@qq.com
* @version 1.0
* <br>Copyright (C), 2012, 梧州学院 软件开发中心
* <br>This program is protected by copyright laws.
* <br>Program Name: 船闸调度管理信息系统
* @since 1.0
*/
@Service
@Transactional
@RemoteProxy
public class ShipLockSchedulManager extends BaseManager<ServiceRegister,Long>{
//通过autowire自动设置对象属性
@Autowired
private ServiceRegisterDao serviceRegisterDao;
public EntityDao getEntityDao() {
return this.serviceRegisterDao;
}
/**
* 根据条件查询调度列表,用于船闸调度页面“已登记”列表
* @param schedulStatus 状态
* @param schedulDirection 方向
* @param sroom 闸室,-1为忽略当前 条件
* @param SchedulingParameters 调度条件列表
* @return 调度信息列表
*/
@Transactional(readOnly=true)
@RemoteMethod
public List<ServiceRegister> findRegisteredForDoScheduling(long schedulStatus,long schedulDirection,long sroom,SchedulingParameters schedulingParameters){
return serviceRegisterDao.findRegisteredForDoScheduling(schedulStatus, schedulDirection,sroom, schedulingParameters);
}
@RemoteMethod
public String sayHello(String name){
return "您好!"+name;
}
}
@RemoteProxy注解告诉DWR,这个Class是我们想暴露出来的。@RemoteMethod注解告诉DWR去暴露这个指定的方法,只有加了RemoteMethod注解的方法会被暴露,其它的不会。
这里也可以使用@RemoteProxy(name="userRemote")的方式指定DWR接口的名字。
以上红色部分是DWR注解,后面加的,其他是之前我们系统的Spring注解。
2.接下来上web.xml
<!-- dwr 配置 -->
<servlet>
<servlet-name>dwr</servlet-name>
<servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
web.xml关于Spring等的其他配置文件这里不解释,直接把上段放到web.xml的最后面即可。为了区分原来的URL,我们使用dwr开头的url。
3.最重要的是Spring的配置文件
<?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:dwr = "http://www.directwebremoting.org/schema/spring-dwr"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:aop = "http://www.springframework.org/schema/aop"
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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" default-autowire="byName" default-lazy-init="false">
<!-- 隐式注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor -->
<!-- <context:component-scan base-package = "com.gxuwz.shiplock.**.service" /> -->
<!-- 扫描 spring 注解的类 , 使其成为客户端调用接口 -->
<dwr:annotation-config id="dwrid"/>
<!-- 扫描需要转换的 java 对象
<dwr:annotation-scan scanRemoteProxy = "false" base-package = "com.gxuwz.shiplock.**.model" /> -->
<!-- dwr 初始化配置
<dwr:configuration >
</dwr:configuration > -->
<!-- 注意这里新增加的dwr tag, 为使其生效,文件头中要声明namespace -->
<dwr:configuration />
<dwr:url-mapping />
<!-- 部署项目时, 请把debug设为false -->
<dwr:controller id="dwrController" debug="false" />
<!-- 多个包名用逗号隔开, 但不能有空格 -->
<context:component-scan base-package="com.gxuwz.shiplock.**.service" />
<!-- 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>
为了跟之前的系统代码相分离,我新建立了一个xml文件,叫“applicationContext-dwr.xml”,内容就是上面的xml文件。
简单解释一下这些配置
•<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容器之外的类,就需要它了。
总结:
至此,配置完成。
访问:http://127.0.0.1:8080/SHIPLOCK/dwr/test/ShipLockSchedulManager,如果看到以下内容,说明已经成功了。http://127.0.0.1:8080/SHIPLOCK/dwr/test/这一段是固定的,后面那个是java类的名称。
Methods For: ShipLockSchedulManager。。。。。
最后我们写一下测试页面:
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib tagdir="/WEB-INF/tags/simpletable" prefix="simpletable"%>
<%@ include file="/commons/taglibs.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type='text/javascript' src='${ctx}/dwr/engine.js'></script>
<script type='text/javascript' src='${ctx}/dwr/interface/ShipLockSchedulManager.js'></script>
<script type='text/javascript' src='${ctx}/dwr/util.js'></script>
<script type="text/javascript">
<!--
function getService(){
ShipLockSchedulManager.sayHello('肥猪',function (result){
alert(result);
});
}
//-->
</script>
</head>
<body>
<input type="button" value=" 获取 Service 对象 " onclick="getService()">
</body>
</html>
运行一下:
- 大小: 19.7 KB
分享到:
相关推荐
在Demo_Spring_Dwr_Annotation这个文件名中,我们可以推断出这可能是一个包含演示Spring和DWR集成的项目,而且使用了全注解的方式来配置。以下是一些可能包含的知识点: 1. **Spring框架**: Spring是Java企业级应用...
- **使用 ANNOTATION 代替 DWR.XML 配置**:介绍如何使用注解来替代 XML 配置文件,以简化配置过程。 #### 四、DWR+SPRING+HIBERNATE 整合实战 **1. DWR+SPRING+HIBERNATE 结构说明** - **DWR**:处理前端 AJAX ...
- 使用DWR与Spring、Hibernate整合,实现数据持久化操作。 3. **测试DWR**: - 编写单元测试用例验证DWR的功能。 - 确保前后端数据交换正确无误。 4. **编写前台DWR调用代码**: - 在前端页面中引入DWR ...
在本项目实战中,我们将深入探讨如何利用"Spring 2.5 + Struts 2 + Hibernate (S2SH)"框架,结合Direct Web Remoting (DWR) 和ExtJS技术,来构建一个基于注解(Annotation)的高效Web应用程序。这个实战涵盖了三个...
- **使用 ANNOTATION 代替 DWR.XML 配置**:介绍了如何利用注解来简化配置过程,提高开发效率。 - **ENGINE.JS 和 UTIL.JS**:这两个文件是 DWR 的核心组成部分,分别负责处理客户端与服务器之间的通信以及提供一些...
SSH整合是指将Struts2、Spring和Hibernate这三个开源框架集成在一起,用于构建高效、灵活的Java Web应用程序。本文将详细讲解使用注解方式进行SSH整合的步骤。 首先,我们需要准备一个开发环境,这里选择了...
该项目使用了JBPM4,并对JBPM4进行预研,掌握JBPM4的使用,主要是JPDL和JBPM4常用API,并完成Extjs3+Struts2+Spring+Hibernate+JBPM4+Annotaion框架的搭建和规划,并对故障单部分进行设计和编码,应用工作流JBPM4...
3. **MVC配置**:使用`<mvc:annotation-driven>`元素启用注解驱动,让Spring自动扫描@Controller注解的类。 4. **视图解析器**:配置ViewResolver,例如`InternalResourceViewResolver`,指定前缀和后缀。 5. **...
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <filter-name>lazy *.do <filter-name>lazy *.jsp <filter-name>lazy <url-pattern>/dwr/* ``` - `<filter>`...
* Android 高级:网络编程与 Web Service、OpenGL_ES 3D 开发、整合 Google 服务、使用 NDK 开发、java 和 c 相互调试 九、轻量级 Java EE * Struts2:MVC 与 struts 体系、Action 和 Result、国际化和标签库、...