一、简介

  首先应该了解这个jar包主要的类,了解了类,就了解了DWR。DWR的在线javadoc:http://directwebremoting.org/dwr/javadoc/

  本篇部分示例代码在【DWR系列01】-DWR简介及入门例子,和【DWR系列02】-DWR逆向Ajax即服务器推送中

二、主要类介绍

2.1 DwrServlet

  这是DWR中最主要的类,处理所有关于DWR的请求。这个就是在web.xml中配置的那个类:

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
</servlet>

3.1.1 DwrSpringServlet

  这个类配合Spring使用。

3.1.2 DwrGuiceServlet

  这个类配合Guice使用。


2.2 Container

  DWR所有重要类都存放在一个容器中,包括属性,配置,管理类,控制类等等,这是一个简单点的IoC容器。默认实现类为DefaultContainer。

2.2.1 DefaultContainer

  默认的DWR自己的迷你IoC容器实现类。

2.2.2 SpringContainer

  当使用Spring框架的时候,可以配置使用这个容器。


2.3 ServerContext

  这个名字或许容易产生误解,它指向一个运行中的DwrServlet。这主要用在非DWR线程POJO中影响DWR运行环境。如果是DWR线程,最好使用WebContext。默认实现类为DefaultServerContext。其中几个重要方法:

  • getContainer() :获得当前的IoC容器。

2.3.1 WebContext

  一个可以让我们访问servlet参数的类。这个类只用在DWR线程(指由DWR创建线程并调用的方法)中。默认实现类为DefaultWebContext。几个重要方法:

  • forwardToString(java.lang.String url) :转向一个URL资源,并将其数据返回。
  • getHttpServletRequest() :获得HttpServletRequest对象。
  • getHttpServletResponse()  :获得HttpServletResponse对象。
  • getScriptSession()  :获得ScriptSession对象。
  • getSession(boolean create)  :获得Session对象。

2.4 WebContextFactory

  一个可以获得当前WebContext的工厂。重要方法:

  • static WebContext get() :获得当前的WebContext。

2.4.1 DefaultWebContextBuilder

  一个默认的WebContext构造器用来构造一个DefaultWebContexts。有几个重要方法。


2.5 ScriptSession

  类似于HttpSession,是script的作用域。一般在逆向Ajax中引用,在页面引入engin.js,并开启逆向Ajax属性时生成。

2.5.1 DefaultScriptSession

  script的默认实现,应该记住DefaultScriptSession与DefaultScriptSessionManager可以相互调用,不要破坏它们之间的关系。重要方法:

  • getAttribute(String) :获得属性
  • setAttribute(String, String) :设置属性
  • getPage():获取当前script属于的页面,不包括服务器信息,是否包含查询信息则看PageNormalizer配置,默认不包含。page例子:ServerContextFactory.get().getContextPath() + "/reverseajax/peopleTable.html"

2.6 Browser

  包含一系列操作逆向Ajax的APIs。

  • withAllSessions(Runnable task):操作所有的session
  • withAllSessionsFiltered(ScriptSessionFilter filter, Runnable task):操作符合过滤条件的session
  • withCurrentPage(Runnable task):操作和当前session所在页相同页的session
  • withPage(String page, Runnable task):操作指定页的session
  • withCurrentPageFiltered(ScriptSessionFilter filter, Runnable task):操作在相同页中符合条件的session

2.7 Util

  Util是一个服务端的代理对象,允许Java程序调用客户端的JavaScript代码。按我的习惯只是通过它传数据到js方法,怎么处理由页面js来进行。这个类并不常用,一般使用ScriptSessions。

  • setValue(java.lang.String elementId, java.lang.Object value):设置一个元素的值。

2.8 ScriptSessions

  这个类用来操作当前的ScriptSession。

  • addFunctionCall(String funcName, Object... params):调用指定js方法并传入参数。
  • addScript(String scriptString):将可以执行的js命令字符串传入,执行。
  • addScript(ScriptBuffer script):同上一个方法。

待续……

+备注

    类的介绍随时补充,当遇到可用的类的时候,这几个类时必须要了解的,其他的类可以看javadoc。

【DWR系列03】- DWR主要类详解的更多相关文章

  1. [NewLife.XCode]实体类详解

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  2. SpringBoot系列(十二)过滤器配置详解

    SpringBoot(十二)过滤器详解 往期精彩推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件 ...

  3. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  4. java之StringBuffer类详解

    StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...

  5. java之AbstractStringBuilder类详解

    目录 AbstractStringBuilder类 字段 构造器 方法   public abstract String toString() 扩充容量 void  expandCapacity(in ...

  6. java之StringBuilder类详解

    StringBuilder 非线程安全的可变字符序列 .该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在 ...

  7. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

  8. Java String类详解

    Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...

  9. QAction类详解:

    先贴一段描述:Qt文档原文: Detailed Description The QAction class provides an abstract user interface action tha ...

  10. 构建安全的Xml Web Service系列之wse之错误代码详解

    原文:构建安全的Xml Web Service系列之wse之错误代码详解 WSE3.0现在还没有中文版的可以下载,使用英文版的过程中,难免会遇到各种各样的错误,而面对一堆毫无头绪的错误异常,常常会感到 ...

随机推荐

  1. 学习php一个星期

    学习这事都是被逼出来的,总监让我做一个邮箱系统,目测可以.

  2. javascript 日期操作

    1.获取指定年月有多少周 /** * 获得一个月的周数 * @param {} y {xxxx}4位数 * @param {} m {0-11} * @return {} */ function ge ...

  3. .NET 的 WebSocket 开发包比较(转)

    .NET 的 WebSocket 开发包比较 编者按 本文出现在第三方产品评论部分中.在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品.请会员报告任何垃圾信息或广告. ...

  4. temp

    netstat -tlnap lsof -i :40735 ps -ef|grep 10259 iftop iptraf nethogs gidxylxhqp http://blog.csdn.net ...

  5. shell if 浮点数比较

    转shell中的浮点数比较http://nigelzeng.iteye.com/blog/1604640 博客分类: Bash Shell shell比较浮点数  由于程序需要,我要判断一个浮点数是否 ...

  6. Activiti5.10简易教程一

    Activiti5.10简易教程一 一搭建环境 1.1   JDK 6+ activiti 运行在版本 6 以上的 JDK 上.转到 Oracle Java SE 下载页面,点击按钮“下载 JDK ” ...

  7. REDHAT一总复习1 ssh配置 禁用root用户SSH连接

    生成SSH公钥 $ ssh-keygen 生成的公钥安装到指定的服务器上,这里安装到desktop0上的student账户 $ ssh-copy-id desktop0 $ su - 禁用root用户 ...

  8. 微信开发(一)内网映射之natapp的使用

    1.https://natapp.cn/client/lists 从官网下载客户端和注册账号 2.打开文件后退出 当前Ctrl+C 输入natapp -authtoken=xxxxx 此为从我的客户端 ...

  9. s:if 判断

    判断 ArrayList size 是否为0 <s:if test="list.size==0"> <s:if> <s:else> </s ...

  10. C和指针 第十七章 二叉树删除节点

    二叉树的节点删除分为三种情况: 1.删除的节点没有子节点,直接删除即可 2. 删除的节点有一个子节点,直接用子节点替换既可以 3.删除的节点有两个子节点. 对于第三种情况,一般是不删除这个节点,而是删 ...