【DWR(Direct Web Remoting)】是一种开源的Java库,专为开发包含AJAX技术的网站而设计。DWR的核心功能是使浏览器中的JavaScript能够直接调用服务器端的Java函数,仿佛这些函数就在浏览器内部运行。这得益于DWR的两个主要组成部分:一个遵循AJAX原则的Servlet,用于JavaScript从服务器获取数据;以及一个JavaScript库,帮助开发者利用这些数据动态更新网页内容。
DWR的创新之处在于它的"Reverse AJAX"技术,它自动生成基于Java类的JavaScript代码,使得开发者可以在JavaScript中无缝使用Java代码,同时保持Java代码在服务器端运行并能访问服务器资源。为了安全,开发者需要配置哪些Java类可以被外部安全使用。DWR提供了类似于RPC(Remote Procedure Call)的机制,如RMI或SOAP,但无需浏览器插件,且专注于简化编程接口。
在DWR中,处理AJAX的异步特性是一项挑战。当调用Java函数时,结果会在一段时间后异步返回。DWR允许开发者提供回调函数来处理这个异步过程。这种模式使得DWR能够实现非阻塞的交互,提高用户体验。
**DWR入门步骤**:
1. **添加依赖**:将DWR的jar文件放入Web应用的`WEB-INF/lib`目录。如果遇到类找不到的问题,可能需要添加其他第三方jar包。
2. **配置Servlet**:在`web.xml`中声明DWR的Servlet。例如,声明名为`dwr-invoker`的servlet,指定其类为`uk.ltd.getahead.dwr.DWRServlet`,并设置初始化参数`debug`为`true`以启用调试模式。然后,映射Servlet到URL模式`/dwr/*`。调试模式下,可以通过特定URL查看所有可访问的Java对象及其方法。
3. **编写dwr.xml文件**:在`webapp/WEB-INF`目录下创建`dwr.xml`文件,用来告诉DWR哪些对象和方法可以通过XMLHttpRequest访问。默认情况下,DWR允许所有公开类的公共方法,但通常应限制为必要的方法。
举例来说,`dwr.xml`配置文件可能包含以下内容:
```xml
<dwr>
<allow>
<create creator="new" javascript="Hello">
<class>com.example.HelloWorld</class>
</create>
</allow>
</dwr>
```
在这个例子中,DWR允许JavaScript创建新的`HelloWorld`类实例,并通过`Hello`命名的JavaScript对象进行调用。
通过以上配置,开发者可以开始使用DWR创建动态、交互式的Web应用,实现服务器和客户端之间的高效通信,而无需担心浏览器和服务器之间的通信细节。DWR的简单接口和强大的功能使其成为AJAX开发的有力工具,特别适合初学者学习和使用。