第2章. web.xml配置
2.1 主要配置
要加入到你的web.xml最少的代码就是简单地去申明DWR servlet,没有它DWR就不起作用。

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class></servlet><servlet-mapping><servlet-name>dwr-invoker</servlet-name><url-pattern>/dwr/*</url-pattern></servlet-mapping>

在DWR2.x里,DwrServlets是类org.directwebremoting.servlet.DwrServlet ,尽管uk.ltd.getahead.dwr.DWRServlet仍然可以用。在DWR 1.x你不得不使用后者。 有些额外的servlet参数,在有些地方很重要。尤其debug参数 这个扩展DWR的标准结构是使用<init-params>。放在<servlet>内,就像如下使用

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param></servlet>

另外,启动服务时,如果报如下错。

java.lang.IllegalArgumentException: DefaultContainer can't find a classes

是DWR2.0 加入了JDK5的注释(annotations).DwrServlet初始化的时候会去检查注释的类,找不到就抱错了。如果你不用annotations也可以忽略掉这个错误。不过看起来总是不爽。解决方案如下

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param><param-name>debug</param-name>
<param-value>true</param-value></init-param>
<init-param><param-name>classes</param-name><param-value>java.lang.Object</param-value>
</init-param></servlet>

2.2 常用<init-param>参数列表
2.2.1 安全参数

allowGetForSafariButMakeForgeryEasier

开始版本:2.0 默认值:false 描述:设置成true使DWR工作在Safari 1.x , 会稍微降低安全性。

crossDomainSessionSecurity

开始版本:2.0 默认值:true
描述:设置成false使能够从其他域进行请求。注意,这样做会在安全性上有点冒险,参考一下这篇文章,在没有理解这个后果前不要设置成为false。

debug

开始版本:1.0 默认值:false 描述:设置成true使DWR能够debug和进入测试页面

scriptSessionTimeout

开始版本:2.0 默认值:1800000(30分钟) 描述:script session 的超时设置

maxCallCount

开始版本:2.0rc2 和 1.1.4 默认值:20 描述:一次批量(batch)允许最大的调用数量。(帮助保护Dos攻击)

2.2.2 Ajax服务器加载时保护参数

pollAndCometEnabled

开始版本:2.0
默认值:false 描述:设置成true能增加服务器的加载能力,尽管DWR有保护服务器过载的机制。 maxWaitingThreads

开始版本:2.0 默认值:100 描述:最大等待线程数量。

preStreamWaitTime

开始版本:2.0 默认值:29000(单位:毫秒) 描述:对一个打开流前的反应,等待的最大时间

postStreamWaitTime

开始版本:2.0 默认值:1000(单位:毫秒) 描述:对一个打开流后的反应,等待的最大时间

2.2.3 其他参数

ignoreLastModified

开始版本:2.0 默认值:false 描述:默认值支持最后修改,这样就允许服务器端对客户端请求较少资源。设置为true就能屏蔽支持。

scriptCompressed

开始版本:1.1 默认值:false
描述:DWR能够执行简单的压缩,设置为true可以激活此功能。另外还有一个未公开的有关系的重要参数“compressionLevel”,此参数允许你配置压缩类型。查看这里得到更多详细资料。

sessionCookieName

开始版本:2.0 默认值:JSESSIONID 描述:DWR通过检查文档和提取当前session ID支持URL重写。一些servlet引擎使用非标准的cookie名。参数允许你改变默认值。

welcomeFiles

开始版本:2.0 默认值:index.html, index.htm, index.jsp 描述:类似于web.xml的<welcome-file-list>标签

2.3 日志配置
DWR工作在JDK1.3中不支持java.util.logging,但我们并不强迫任何人都去使用commons-logging或者log4j,所以在使用HttpServlet.log()方法时DWR将正常工作,如果没有日志类的话。然而如果DWR可以使用,那么它将使用日志。 Commoms-Logging 由于大多数servlet容器都使用它,几乎每个人都将使用commons-logging。所以如果你的webapp不明确使用commons-logging,它将被默认设为可以使用。 在这些日志将被一些配置文件所约束,比如java.util.logging或者log4j,可以去查看他们各自的文档获得详情。 HttpServlet.log() 如果你正在使用HttpServlet.log(), 以下的代码用来控制DWR日志

<init-param><param-name>logLevel</param-name>
<param-value>DEBUG</param-value></init-param>

值可以是:FATAL,ERROR,WARN(默认),INFO,DEBUG
2.4 多个dwr.xml配置和J2EE角色定义
一般来说只需要一个dwr.xml文件,并且会被设为默认位置WEB-INF/dwr.xml。所以你不需要配置。 有3个原因说明你为何需要指定不同位置的dwr.xml文件:
 你想保持dwr.xml的文件请参照下面的例子

<param-value>WEB-INF/classes/com/yourco/dwr/dwr.xml</param-value>

 你可以有很多的远程方法类并且希望指定文件。在这个例子里将指定不同文件开始配置,不同的param-name将重复多次DWR将轮流读取它们。
 DWR能够使J2EE URL具有给与不同用户组不同权限的安全机制。通过起不同名字,URL和权限。
就像如下例子去使用

<init-param> <param-name>config*****</param-name> <param-value>WEB-INF/dwr.xml</param-value> <description>What config file do we use?</description> </init-param>

用一个字符串”config” 作为开始,设置param-name,每个param-name必须不同。

 <servlet><servlet-name>dwr-user-invoker</servlet-name><servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class>
<init-param>
<param-name>config-user</param-name><param-value>WEB-INF/dwr-user.xml</param-value></init-param>
</servlet> <servlet>
<servlet-name>dwr-admin-invoker</servlet-name><servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class><init-param><param-name>config-admin</param-name><param-value>WEB-INF/dwr-admin.xml</param-value></init-param>
</servlet><servlet-mapping>
<servlet-name>dwr-admin-invoker</servlet-name>
<url-pattern>/dwradmin/*</url-pattern>
</servlet-mapping><servlet-mapping>
<servlet-name>dwr-user-invoker</servlet-name>
<url-pattern>/dwruser/*</url-pattern></servlet-mapping>
<security-constraint><display-name>dwr-admin</display-name><web-resource-collection><web-resource-name>dwr-admin-collection</web-resource-name>
<url-pattern>/dwradmin/*</url-pattern>
</web-resource-collection><auth-constraint>
<role-name>admin</role-name></auth-constraint>
</security-constraint>
<security-constraint><display-name>dwr-user</display-name>
<web-resource-collection><web-resource-name>dwr-user-collection</web-resource-name>
<url-pattern>/dwruser/*</url-pattern>
</web-resource-collection>
<auth-constraint><role-name>user</role-name>
</auth-constraint> </security-constraint>

2.5 插件配置
大多数DWR的功能是可以作为插件的,所以就通过替换默认的类可以改变DWR的功能。你可以通过包含<init-param>去覆盖默认的实现。举个例子:

<init-param>
<param-name> org.directwebremoting.extend.ServerLoadMonitor </param-name><param-value>com.example.MyCustomServerLoadMonitor</param-value> </init-param>

DWR2.0插件
 org.directwebremoting.Container
 org.directwebremoting.WebContextFactory.WebContextBuilder
 org.directwebremoting.ServerContextFactory.ServerContextBuilder
 org.directwebremoting.servlet.UrlProcessor
 org.directwebremoting.extend.AccessControl
 org.directwebremoting.extend.AjaxFilterManager
 org.directwebremoting.extend.ConverterManager
 org.directwebremoting.extend.CreatorManager
 org.directwebremoting.extend.DebugPageGenerator
 org.directwebremoting.extend.HtmlCallMarshaller
 org.directwebremoting.extend.HtmlPollHandler
 org.directwebremoting.extend.PageNormalizer
 org.directwebremoting.extend.PlainCallMarshaller
 org.directwebremoting.extend.PlainPollHandler
 org.directwebremoting.extend.Remoter
 org.directwebremoting.extend.ScriptSessionManager
 org.directwebremoting.extend.ServerLoadMonitor

默认的实现大多数在org.directwebremoting.impl包,细节是在ContainerUtil.setupDefaults()指定的。

DWR1.1插件
 uk.ltd.getahead.dwr.AccessControl
 uk.ltd.getahead.dwr.Configuration
 uk.ltd.getahead.dwr.ConverterManager
 uk.ltd.getahead.dwr.CreatorManager
 uk.ltd.getahead.dwr.Processor
 uk.ltd.getahead.dwr.ExecutionContext
默认的实现大多数在uk.ltd.getahead.dwr.impl包

2.6 测试模式配置
通过添加如下参数,设置debug测试模式

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

在debug模式里,DWR将为每个allow的类(请看下面的dwr.xml配置章节)生成测试页面。这些能变得非常有用帮助了解DWR能做什么和如何工作。这个模式也能警告你以防止javascript的保留字,或者重载问题。 然而这个模式不应该被用在现场部署,因为他能给黑客或者攻击者许多关于服务器的详细信息。

DWR中文文档v0.9 03相关推荐

  1. 已知bug列表——Solidity中文文档(12)

    写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第十二部分<已知bug列表>,特发布出来邀请solidity爱好者.开发者 ...

  2. pyppeteer有java版本吗_Pyppeteer中文文档_序言_安装_基本使用及注意事项

    Pyppeteer中文文档_序言_安装_基本使用及注意事项 Pyppeteer是Puppeteer Javascript(无头) chrome/chromium 浏览器自动化库的Python非官方端口 ...

  3. Hugo中文文档 快速开始

    Hugo中文文档 快速开始 安装Hugo 1. 二进制安装(推荐:简单.快速) 到 Hugo Releases 下载对应的操作系统版本的Hugo二进制文件(hugo或者hugo.exe) Mac下直接 ...

  4. easyexcel 简介、中文文档、中英对照文档 下载

    easyexcel 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 easyexcel-3.0.5.jar easyexcel-3.0.5-API ...

  5. 【Scikit-Learn 中文文档】数据集加载工具 - 用户指南 | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/stable/datasets/index.html 英文文档: http://sklearn.apachecn.org/en ...

  6. Scikit-Learn 中文文档】数据集加载工具 - 用户指南 | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/stable/datasets/index.html 英文文档: http://sklearn.apachecn.org/en ...

  7. 【Scikit-Learn 中文文档】40 数据集加载工具 - 用户指南 | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/stable/datasets/index.html 英文文档: http://sklearn.apachecn.org/en ...

  8. 【Scikit-Learn 中文文档】四十:数据集加载工具 - 用户指南 | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/stable/datasets/index.html 英文文档: http://sklearn.apachecn.org/en ...

  9. FFmpeg 中文文档

    ffmpeg的中文文档 Posted on 13 Feb 2015   ffmpegDocuments   添加评论 ffmpeg的文档,把之前三个文章直接合并而成的.没有新的内容和改动. 1. 概要 ...

最新文章

  1. python基础---元组、字典、函数、文件、异常
  2. R语言forestmodel包使用教程
  3. 函数默认形参与占位参数
  4. 1.sql 数据据基础_数据库的组成
  5. 对dropout的理解详细版
  6. java泛型和注解,泛型 · 注解和泛型 · 看云
  7. java属性定义_Java管理扩展指南--几分钟带你理解MBean
  8. html修改访问量txt,哪位大佬帮我改一下JS谢谢,txt改html网页直接显示的,感激不尽,现在的源码只能看......
  9. 免费制作gif图片工具
  10. Mac实现ts文件转为mp4文件
  11. 定时语音提醒软件实现
  12. 各向异性导电高分子复合薄膜-供应石墨烯基透明导电/聚丙烯腈纳米二维氮化硼纤维薄膜/机械剥离单层MoS2/MoSe2/MoTe2/WS2/WSe2/WTe2/石墨烯定制
  13. 剪切音频matlab_Matlab 按时间段切割音频
  14. 春节或将成为短信唯一的救命稻草?
  15. C#,.net将DataTable转为对应的Model实体类
  16. 量子 AI,是融合还是颠覆?
  17. Firebird的好工具——FlameRobin
  18. 演化博弈的Python实现:基础篇2 基于复杂网络的演化博弈
  19. 网络安全法剑指“黑帽黑客”
  20. 【代码】睡眠排序python实现

热门文章

  1. 从趋势、风格和文案三方面,分析短视频封面这样设计更吸引人。
  2. Baumer profinet 接口编码器的简单调试
  3. 苹果手机密码设置在哪里_sim卡密码设置在哪里-sim卡密码设置介绍
  4. 【MATLAB】MATLAB 仿真数字基带传输系统 — 双极性基带信号(余弦滚降成形脉冲)的眼图
  5. win10浏览器不能联网,电脑上其他软件可以联网
  6. 用计算机解题前 需要将解题方法,算法及其表示方法
  7. 三角网导线平差实例_三角网近似平差及边长计算表
  8. python实现SVG文件解析
  9. vue动态加载SVG文件并修改节点数据
  10. 配置高档游戏型计算机,2021年游戏台式电脑配置推荐