`
xiangkun
  • 浏览: 102073 次
  • 性别: Icon_minigender_1
  • 来自: 马尔代夫
社区版块
存档分类
最新评论

DWR3反转引擎

阅读更多
DWR3反转引擎

DWR3 入门:

DWR3使用Ajax反转引擎(Reverse Ajax) 进行消息传递: 
--------------------------------
applicationContext.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:tx="http://www.springframework.org/schema/tx"
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/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-3.0.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-2.5.xsd"
default-autowire="byName" default-lazy-init="true">




<description>Spring公共配置</description>



<!-- 定义受环境影响易变的变量 -->
<bean
   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="systemPropertiesModeName"
    value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
   <property name="ignoreResourceNotFound" value="true" />
   <property name="locations">
    <list>
     <!-- 标准配置 -->
     <value>
      classpath*:/config/db/application.properties
     </value>

    </list>
   </property>
</bean>



<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
<bean id="dataSource"
   class="org.apache.commons.dbcp.BasicDataSource"
   destroy-method="close">
   <!-- Connection Info -->
   <property name="driverClassName" value="${jdbc.driver}" />
   <property name="url" value="${jdbc.url}" />
   <property name="username" value="${jdbc.username}" />
   <property name="password" value="${jdbc.password}" />

   <!-- Connection Pooling Info -->
   <property name="initialSize" value="5" />
   <property name="maxActive" value="100" />
   <property name="maxIdle" value="30" />
   <property name="maxWait" value="1000" />
   <property name="poolPreparedStatements" value="false" />
   <property name="defaultAutoCommit" value="false" />
</bean>


<!-- Hibernate配置 -->
<bean id="sessionFactory"
   class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
   <property name="dataSource" ref="dataSource" />
   <property name="namingStrategy">
    <bean class="org.hibernate.cfg.ImprovedNamingStrategy" />
   </property>
   <property name="hibernateProperties">
    <props>
     <prop key="hibernate.dialect">
      ${hibernate.dialect}
     </prop>
     <prop key="hibernate.show_sql">
      ${hibernate.show_sql}
     </prop>
     <prop key="hibernate.format_sql">
      ${hibernate.format_sql}
     </prop>
     <prop key="hibernate.cache.provider_class">
      org.hibernate.cache.EhCacheProvider
     </prop>
     <prop
      key="hibernate.cache.provider_configuration_file_resource_path">
      ${hibernate.ehcache_config_file}
     </prop>
    </props>
   </property>


   <property name="packagesToScan">
    <list>
     <value>com.wpms.entity.*</value>
    </list>
   </property>
</bean>

<!-- 事务管理器配置,单数据源事务 -->
<bean id="transactionManager"
   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- 使用annotation定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager"
   proxy-target-class="true" />


<!-- 启用 annotation 配置模式 -->
<context:annotation-config />

<!-- 使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入 -->
<context:component-scan base-package="com.wpms.user.*" />



<!-- DWR 配置 BEGIN -->

<!-- 启动 DWR 注解配置模式 -->
<dwr:configuration />
<dwr:annotation-config />
<dwr:url-mapping />
<!-- 开启dubug状态 -->
<dwr:controller debug="true" />
<!-- DWR 配置 END-->


</beans>
--------------------------------
web.xml
--------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


<!-- spring config url start-->
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>
    classpath*:config/dwr3/applicationContext.xml
   </param-value>
</context-param>
<!-- spring config url end-->

<!-- 著名的 Character Encoding filter -->
<filter>
   <filter-name>encodingFilter</filter-name>
   <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
   </filter-class>
   <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
   </init-param>
</filter>
<!--Hibernate Open Session in View Filter-->
<!-- 假设在你的应用中Hibernate是通过spring 来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter
   或者OpenSessionInViewInterceptor。session会在transaction结束后关闭,此时会抛出session is close 的异常-->
<filter>
   <filter-name>hibernateFilter</filter-name>
   <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
   </filter-class>
</filter>

<!-- struts2 start-->
<filter>
   <filter-name>struts2</filter-name>
   <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
   </filter-class>
</filter>

<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- struts2 end -->

<!-- 过滤器映射 -->

<filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
   <filter-name>hibernateFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>


<!-- dwr配置 -->
<servlet>
   <servlet-name>dwr</servlet-name>
   <servlet-class>
    org.directwebremoting.spring.DwrSpringServlet
   </servlet-class>

   <init-param>
    <param-name>activeReverseAjaxEnabled</param-name>
    <param-value>true</param-value>
   </init-param>


   <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>

<!--Spring ApplicationContext 载入    -->
<listener>
   <listener-class>
    org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener>

<!-- 扩展spring bean的作用域有request,session,global session等-->
<listener>
   <listener-class>
    org.springframework.web.context.request.RequestContextListener
   </listener-class>
</listener>

<!-- Spring 刷新Introspector防止内存泄露 -->
<listener>
   <listener-class>
    org.springframework.web.util.IntrospectorCleanupListener
   </listener-class>
</listener>

<!-- 开始页面 -->
<welcome-file-list>
   <welcome-file>index.html</welcome-file>
</welcome-file-list>

<error-page>
   <error-code>404</error-code>
   <location>/pagenotfound.jsp</location>
</error-page>
<error-page>
   <exception-type>java.lang.Exception</exception-type>
   <location>/error.jsp</location>
</error-page>


</web-app>


--------------------------------

--------------------------------
HTML source:

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<script type='text/javascript'
src='${pageContext.request.contextPath}/dwr/interface/putpageinfo.js'></script>
<script type='text/javascript'
src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript'
src='${pageContext.request.contextPath}/dwr/util.js'></script>


<script type='text/javascript'>

function putstart(){

alert("begin");   
putpageinfo.begin();
}

function reverseFunction(data){   
document.all.backtext.value=data;   
}

</script>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <title>JSP Page</title>
</head>
<body onload="dwr.engine.setActiveReverseAjax(true);">
   <input id="submit" type="submit" value="begin" onclick="putstart()" />
   <input type="text" id="backtext" name="backtext" value="" />
</body>
</html>


--------------------------------
Javascript source:

--------------------------------
Java source:
package com.wpms.user.action.dwr;

import org.directwebremoting.Browser;
import org.directwebremoting.ScriptSessions;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.annotations.RemoteMethod;
import org.directwebremoting.annotations.RemoteProxy;
import org.springframework.stereotype.Controller;

@Controller
@RemoteProxy(name = "putpageinfo")
public class PutSomethingToPage extends Thread {
private static WebContext wctx = null;

@RemoteMethod
public void begin() {
   if (wctx == null) {
    wctx = WebContextFactory.get();
   }

   System.out.println("put begin!");

   String page = wctx.getCurrentPage();
   Browser.withPage(page, new Runnable() {
    public void run() {
     ScriptSessions.addScript("reverseFunction(12)");
    }
   });

}

}
分享到:
评论

相关推荐

    dwr反转AJAX聊天源码

    标签中的“dwr”是指DWR库,“反转”是指DWR提供的服务器推送机制,“AJAX”是指这种技术的基础,“源码”意味着我们可以看到整个项目的完整代码,“聊天”则是这个应用的实际应用场景。 在“chat.war”文件中,...

    dwr3 反转ajax例子

    本文将深入探讨DWR3框架如何实现对Ajax的反转,以及通过一个具体的实例来展示其工作原理和应用。 DWR3是DWR框架的第三个主要版本,它提供了一种高效、安全的方式,使JavaScript可以直接调用服务器端的Java方法。...

    dwr推技术反转聊天事例

    3. **JavaScript接口**:DWR通过JavaScript接口暴露了服务器端的方法。我们需要在HTML页面中引入DWR的JavaScript库,并定义JavaScript函数来调用这些接口,如发送消息、接收新消息等。 4. **事件监听**:为了实现...

    SSH框架整合DWR推反转AJAX技术做的聊天室

    没事的时候自己写的一个聊天室,用了SSH框架整合DWR推反转AJAX技术,可能有一些不合理的地方,但实现了聊天室的基本功能,希望给大家一些帮助。需要大家根据spring配置文件,配置下Mysql数据库,建一张用户表就可以...

    dwr反转实现及时聊天

    3. `log4j-1.2.17.jar`:Log4j,一个流行的Java日志框架,DWR使用它来记录运行时信息。 在现代的Maven项目中,这些依赖可以通过在`pom.xml`文件中添加对应的依赖项来管理,例如: ```xml &lt;!-- Other ...

    DWR3参考资料

    DWR3是DWR的第三个主要版本,它提供了改进的功能和性能,尤其在实时数据推送方面。在DWR3中,可以实现后台向Web浏览器实时推送消息,这对于创建交互性强、实时更新的应用程序非常有用,比如在线聊天室或股票交易应用...

    Dwr 推例子 反转 ajax dwr dwr推群聊 dwr聊天系统源码 聊天系统 广播系统

    DWR的核心特性是反转Ajax,即允许Java方法直接在客户端调用,仿佛它们是本地JavaScript函数一样,这大大简化了Web应用的开发。 **1. DWR的反转Ajax** 反转Ajax是DWR的关键特性,它将传统的请求-响应模型转变为一种...

    DWR3.rar

    压缩包内的"DWR中文文档2.pdf"很可能是DWR3的中文用户指南或开发者手册,对于学习和使用DWR3框架具有很高的参考价值,详细介绍了如何配置、使用DWR以及解决常见问题。"dwr.rar"可能包含了DWR的源码或者库文件,便于...

    dwr3.x demo 实例 例子

    DWR3.x是DWR的一个版本,提供了许多增强的功能和改进,使得开发人员能够更方便地构建动态、交互式的Web应用。 在这个"Dwr3.x demo 实例 例子"中,我们可以学习到以下几个关键知识点: 1. **反转Ajax**:DWR的核心...

    dwr3_helloword入门

    在web.xml中,我们需要配置一个Servlet,即DWRControlServlet,用于启动DWR引擎。这个Servlet会处理所有来自客户端的DWR请求。正确配置后,可以通过访问特定URL(如`http://localhost:8080/your-webapp/dwr/`)来...

    Dwr3+Spring3 全注解 annotation 方式

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

    dwr3api+DWR文档.pdf

    《dwr3api+DWR文档.pdf》提供了关于DWR 3.x版本的详细信息,包括API参考和初级入门指南。这份文档可能涵盖了以下关键知识点: 1. **安装与配置**:如何在你的Java应用服务器上集成DWR,配置DWR的XML配置文件(dwr....

    DWR3消息推送(聊天Demo)

    在这个"DWR3消息推送(聊天Demo)"项目中,开发者提供了一个使用DWR3实现的简单聊天应用,让我们来详细了解一下这个示例中的关键知识点。 首先,我们要理解DWR3的核心特性。DWR3是DWR(Direct Web Remoting)的第三个...

    dwr3所需jar包

    在这个“dwr3所需jar包”中,我们主要关注的是DWR 3.0版本的相关库文件。 在JavaWeb开发中,DWR作为一个强大的工具,使得前端和后端能够更有效地交互。它提供了以下核心特性: 1. **远程方法调用(Remote Method ...

    dwr3推送消息

    在DWR3中,"推送消息"功能是其特性之一,它使得服务器能够主动向客户端推送数据,而不仅仅是响应客户端的请求。这种技术通常被称为Comet或长轮询,可以用于实现实时通信,如聊天应用、股票报价、在线游戏等场景。 ...

    dwr3消息推送

    DWR3是DWR的一个版本,提供了更加强大和灵活的特性,包括异步通信、AJAX支持以及实时消息推送等。 在"消息推送"这一场景下,DWR3扮演了关键角色。它能够实现在一个页面上发送的消息,被其他页面实时接收和显示。...

    dwr3实现推送功能

    在DWR 3版本中,它提供了丰富的API和工具,使得开发者能够更加方便地构建富客户端Web应用。本篇文章将详细讲解如何利用DWR 3实现推送功能。 1. **DWR 3 的基本概念** DWR 3 提供了一种安全、高效的机制,使得...

    spring+ibatis+struts2+dwr反转

    这个项目"spring+ibatis+struts2+dwr反转"整合了四个关键的Java Web开发组件,它们分别是Spring、iBatis、Struts2和Direct Web Remoting (DWR)。下面将详细介绍这些技术及其在项目中的作用。 1. **Spring框架**:...

    dwr1+dwr2+dwr3 jar包

    这个压缩包包含了DWR的三个主要版本:DWR1.0、DWR2.0和DWR3.0的jar包,这些jar包是运行DWR应用的核心组件。 DWR1.0: DWR1.0是DWR项目的早期版本,主要目标是简化Web应用中的异步通信。在这个版本中,DWR提供了一个...

    DWR dwr 2.0 dwr推 推 反转ajax 聊天系统 广播系统 字符串加密 历史记录 推技术 聊天系统源码 源码 注释

    这是,以上两个版本的升级版,在原有的基础上,增加了 清空聊天记录,上线通知,用户id,及登录的所在地(ip),聊天信息可选择颜色, ps: 测试的时候记得将 info.txt(聊天信息保存文件) 绝对路径覆盖源码中,以前的路径,

Global site tag (gtag.js) - Google Analytics