译者:Flyingis
译文链接:http://www.blogjava.net/flyingis/archive/2006/11/18/81898.html
http://gis.iteye.com/blog/34853
原文链接:http://getahead.ltd.uk/dwr/server/servlet
翻译目录:http://www.blogjava.net/flyingis/archive/2006/11/17/81862.html
声明:文章可以转载,但请注明原文及译文出处。
Reference to DWR entries in WEB-INF/web.xml
The minimum possible additions to your web.xml, are simply those to declare the DWR servlet without which none of this would work. So the least you can get away with looks something like this:
使用 DWR 需要在 web.xml 中声明 DWR servlet ,以下是保证 DWR 运行的最基本的代码,缺少哪一部分 DWR 都不能正常运行:
- <servlet>
- <servlet-name>dwr-invoker<<!---->servlet-name>
- <servlet-class>uk.ltd.getahead.dwr.DWRServlet<<!---->servlet-class>
- <!----><servlet>
- <servlet-mapping>
- <servlet-name>dwr-invoker<<!---->servlet-name>
- <url-pattern>/dwr/*<<!---->url-pattern>
- <!----><servlet-mapping>
In addition to this there are several extra servlet parameters that are somewhere between important and vaguely useful.
除了这些外,还有一些额外的 servlet 参数,它们或多或少都会起到一定的作用。
Logging
Multiple dwr.xml files
Plug-ins
Test Mode
Logging
DWR works in JDK 1.3 which does not support java.util.logging, but we don't want to force anyone to use commons-logging or log4j, so DWR will work if no logging classes are present by using the HttpServlet.log() methods. However if DWR discovers commons-logging then it will use that.
在 JDK1.3 下运行的 DWR 不支持 java.util.logging ,而我们又不想强迫任何人去使用 commons-logging 或 log4j ,因此当没有任何日志包可以使用的时候, DWR 将使用 HttpServlet.log() 方法。当然,如果 commons-logging 存在, DWR 将使用它。
Commons-Logging
Almost everyone will be using commons-logging because most servlet containers use it. So even if your webapp isn't explicitly using commons-logging it is probably available by default.
几乎所有人都会使用 commons-logging ,因为大多数 servlet 容器都会用到它。因此,即使你的 Web 应用没有明确指定使用 commons-logging ,它也很可能是默认的选择。
In these cases logging will be controlled by the config files of either java.util.logging or log4j. See the respective documentation for more details.
在一些情况下,日志将使用 java.util.logging 或 log4j 的配置文件来控制。请参考相关的详细文档。
HttpServlet.log()
If you are using HttpServlet.log(), the following stanza controls DWR logging:
如果你使用 HttpServlet.log() ,下面的代码会控制 DWR 日志的记录方式。
- <init-param>
- <param-name>logLevel<<!---->param-name>
- <param-value>DEBUG<<!---->param-value>
- <!----><init-param>
The valid values are: FATAL, ERROR, WARN (the default), INFO and DEBUG.
有效的取值为: FATAL 、 ERROR 、 WARN( 默认 ) 、 INFO 以及 DEBUG 。
Multiple dwr.xml files and J2EE security
Generally speaking you will only need one dwr.xml file and that will be in the default position: WEB-INF/dwr.xml. So you can leave this paramter out.There are 3 reasons why you might wish to specify a different position for dwr.xml:
一般情况下,你只需要一个 dwr.xml 文件,并且保存在默认的位置: WEB-INF/dwr.xml 。因此你可以不用做过多的考虑。但是,有三个原因让你可能将 dwr.xml 放在其它的位置:
1. You wish to keep dwr.xml with the files that it gives access to. In which case the section might have a param-value something like <param-value></param-value> WEB-INF/classes/com/yourco/dwr/dwr.xml .
1. 你希望将 dwr.xml 放在可以访问的地方。这种情况下可能会有 param-value 标签,如 <param-value></param-value> WEB-INF/classes/com/yourco/dwr/dwr.xml 。
2. You may have a large number of remoted classes and wish to keep the definitions in separate files. In this case you will have the section above repeated several times each with a different param-name that begins 'config' and each pointing at a different file. DWR will read them all in turn.
2. 也许你需要大量的远程类(的方法、属性)在客户端访问,希望将它们分别定义在不同的文件中。这时,你需要将上面的代码片断复制在多处,并在 config 中使用不同的 param-name 指定每个文件。 DWR 将依次读取。
3. DWR can use J2EE URL security built into the servlet spec to give different groups of users access to different functions. You simply define more than one dwr servlet by repeating the stanza at the top of the page with different names, urls and permissions.
3.DWR 能在指定的 servlet 中使用 J2EE URL 链接的安全机制,使不同的用户组访问不同的方法。你可以在文件的顶部使用不同的名称、 url 链接和许可权限,简单重复 dwr servlet 代码来实现这种安全机制。
If you do wish to use it then the syntax is as follows:
如果你确实需要使用该安全机制,代码构造如下:
- <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>
Where config***** means any param-name that begins with the string 'config'. This parameter can be specified as many times as required, however the param-name should be different for each.
config***** 代表命名以 'config' 开始的 param-name 。只要保证没有重复的 param-name ,该参数可以根据需要被声明多次。
An example configuration to use J2EE servlet security is as follows:
下面是基于 J2EE servlet 安全机制的配置示例:
- <servlet>
- <servlet-name>dwr-user-invoker<<!---->servlet-name>
- <servlet-class>uk.ltd.getahead.dwr.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>uk.ltd.getahead.dwr.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>
Using Plug-ins
Most of the guts of DWR is pluggable so it is possible to alter the functionallity of DWR by replacing default classes. You can override the default implementations by including an <init-param></init-param>that specifies the interface to replace in the param-name and the replacement implementation in the param-value.
<init-param></init-param>
大多数 DWR 的核心功能都是可以通过插件功能实现的,通过替换默认的类来改变 DWR 的功能。你可以引入一个 <init-param></init-param>,在 param-name 处指定替换的接口,以及更改 param-value 所指定的类,重写默认的实现方式。
The plug-in points are:
这些插件包括:
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
The default implementations of these plug-in points are all in the uk.ltd.getahead.dwr.impl package.
默认插件的实现在 uk.ltd.getahead.dwr.impl 包中。
Using debug/test mode
You put DWR into debug/test mode by adding the following parameter:
通过加入以下参数,将 DWR 设置为调试 / 测试模式:
- <init-param>
- <param-name>debug<!---->param-name>
- <param-value>true<<!---->param-value>
- <!----><init-param>
DWR will generate test pages for each of the allowed classes (see dwr.xml below) in debug mode. These can be very useful in seeing what DWR can do and how it works. This mode can also alert you to problems like javascript reserved word clashes or overloading problems.
在调试模式下, DWR 将为每个 allow 类(参考下一章节 dwr.xml ) 生成测试页面。这非常有用,可以了解 DWR 做了些什么工作,以及它是如何工作的。该模式还能通知你 javascript 保留字冲突或重载方面的问题。
However this mode should not be used in live deployment as it could give an attacker a lot of information about the services that you export. If you have designed your website properly then this extra information will not help an attacker exploit your website however it is generally wise not to give anyone a route map to exploit any mistakes you might have made.
但是在该模式下你导出的服务的许多信息都暴露给了攻击者,真正部署的时候应该避免使用这种模式。如果网站能够得到良好的设计,就能避免攻击者获取网站的重要信息。通常不应给任何人提供网站的导航图来试图发现你留下的设计缺陷。
DWR is provided 'as is', without any warranty, so the security of your website is your responsibility. Please take care to keep it secure.
DWR is provided 'as is' (不知道怎么翻译?), DWR 不提供任何保证,因此网站的安全性由你个人负责。请尽量保证网站的安全。
相关推荐
4. 配置文件通常位于Web应用的`WEB-INF`目录下,以便于DWR在启动时加载。在开发过程中,可以使用DWR的测试页面(如`/dwr/test/`)来验证配置是否正确,查看生成的JavaScript文件和调用方法。 5. 最后,了解DWR的...
在`WEB-INF`目录下创建`dwr.xml`配置文件,内容如下: ```xml ``` 这里定义了一个名为`HelloWorld`的JavaScript对象,它将在客户端调用服务器上的`com.yourcompany.DWRHelloWorld.HelloWorld`类。 ##...
本文档将详细解释如何在Web应用中配置DWR,并通过具体的示例来展示每个步骤。 #### 二、所需环境与文件 为了能够顺利地使用DWR,我们需要以下几项: 1. **DWR库**:将`dwr.jar`放置于项目中的`WEB-INF/lib`目录下...
- **dwr.xml配置**:位于`WEB-INF`目录下,定义了DWR如何访问服务器端的Java对象和服务。 - `<allow>`标签:指定哪些类或方法可以被远程调用。 - `<create>`标签:定义服务器端对象的创建方式。 - `<init>`标签:...
- 将下载好的`dwr.jar`文件放入项目的`WEB-INF/lib`目录下。 - 如果你的项目中已经存在其他JAR文件,确保`dwr.jar`与这些文件在同一目录下。 #### 三、配置DWR 1. **编辑`web.xml`文件**: - 在`WEB-INF/web....
默认情况下,DWR会查找`WEB-INF/dwr.xml`,但可以通过Servlet的初始化参数指定多个配置文件。 - 当需要多个`dwr.xml`文件时,可以在`<init-param>`中定义,例如: ```xml <servlet-name>dwr-invoker</servlet-...
《DWR入门教程:服务器推送新手指南》 ...通过以上步骤,你应该已经掌握了DWR的基本用法,接下来可以深入研究文档中的示例,探索更多高级功能,如动态更新、表格操作等,以提升你的Web应用的用户体验。
下载`dwr.jar`并将其放置在你的Web应用的`WEB-INF/lib`目录下。确保这个jar文件与其他必要的库文件一起存在,以便服务器能够正确解析和运行DWR相关的类。 接下来,你需要配置Web应用以支持DWR。编辑`WEB-INF/web....
1. 将`dwr.jar`添加到你的Web应用的`WEB-INF/lib`目录。 2. 在`WEB-INF/web.xml`中配置DWRServlet。 3. 创建`dwr.xml`配置文件,定义Java类和JavaScript对象的映射。 DWR还提供了丰富的JavaScript库来辅助处理DHTML...
2. **配置DWR**:在Web应用的Web-INF目录下创建dwr.xml配置文件,设置允许的远程接口和方法,以及其他配置项。 3. **创建远程接口**:在服务器端定义一个公共的Java接口或类,包含你想在客户端调用的方法。 4. **...
开发者需要将这个文件部署到服务器的应用服务器或Web应用的`WEB-INF/lib`目录下,以便服务器能够加载并执行DWR的功能。 2. `dwr-2.0.M2-src.zip`:这是一个源码包,包含了DWR 2.0.M2版本的源代码。对于开发者来说,...
- **web.xml 配置**:在`WEB-INF/web.xml`文件中添加DWR的相关配置。这部分内容用于注册DWR Servlet。添加如下代码: ```xml <servlet-name>dwr-invoker</servlet-name> <display-name>DWR Servlet</display-...
在`WEB-INF`目录下的`web.xml`文件中,你需要添加DWR的servlet配置。这包括定义`DWRServlet`并指定其映射路径。例如: ```xml <servlet-name>DWRServlet</servlet-name> <servlet-class>uk.org.webcompere....
DWR (Direct Web Remoting) 是一个Java库,它的主要功能是允许服务器端的Java代码与客户端的JavaScript进行交互,简化远程...在实际开发中,遇到问题时,参考官方文档、社区论坛和已有的教程,通常都能找到解决方案。
在`WEB-INF`目录下创建`dwr.xml`文件,用于指定哪些JavaBean将被DWR生成相应的JavaScript库。例如: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD ...
DWR文档中提供了多个示例,涵盖了动态更新文本、列表、表单和表格等常见场景。通过这些示例,你可以了解如何在JavaScript中调用Java方法,以及如何处理返回的数据。 在编写DWR应用时,需要注意避免使用JavaScript的...
- **添加到项目**:将dwr.jar和相关依赖库放入项目的类路径中,如WEB-INF/lib目录下。 3. **DWR的配置** - **web.xml配置**:在Web应用的配置文件web.xml中,你需要添加DWR的servlet配置,以启动DWR引擎。 - **...