Direct Web Remoting (DWR) 是一种开源的Java技术,它允许Web应用程序在客户端和服务器之间进行实时的、安全的、动态的JavaScript到Java的调用。这种技术极大地提升了Web应用的交互性和用户体验,因为它消除了传统的页面刷新,使得前端与后端的数据交换更为流畅。在DWR中,有两个关键的JavaScript文件,即`engine.js`和`util.js`,它们位于web应用的`/dwr`目录下,是DWR框架正常运行的基础。
`engine.js`是DWR的核心引擎文件,它实现了JavaScript与Java之间的远程方法调用(RMI)。这个文件包含了一系列的函数和对象,用于处理与服务器的通信,包括但不限于:
1. **创建和管理AJAX连接**:`engine.js`初始化和管理与服务器的持久性连接,使客户端可以异步地调用服务器端的方法。
2. **安全机制**:DWR提供了一种白名单机制,通过配置文件限制客户端可以访问的Java方法,防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。
3. **数据类型转换**:它负责在JavaScript和Java对象之间进行数据类型的转换,使得两种语言之间的数据交换变得简单。
4. **错误处理**:当服务器端方法调用出错时,`engine.js`会处理这些错误并将其反馈给客户端。
5. **异步和同步调用**:用户可以决定是以异步还是同步的方式执行远程方法,异步方式允许用户在等待结果的同时继续执行其他操作,而同步方式则会阻塞后续代码直到结果返回。
`util.js`是DWR的辅助库文件,包含了大量实用工具函数,为开发人员提供了更多的便利。这些工具函数通常包括:
1. **DOM操作**:提供了一系列用于操作HTML文档对象模型(DOM)的方法,如添加、删除、查找元素等,简化了前端开发。
2. **事件处理**:封装了事件监听和触发的接口,便于处理用户交互和页面事件。
3. **数组和对象操作**:提供了一些对JavaScript数组和对象进行操作的便捷函数,如遍历、查找、过滤等。
4. **字符串处理**:包含了一些字符串相关的函数,如格式化、比较、截取等,方便对字符串进行操作。
5. **日期和时间**:提供日期和时间的处理功能,如格式化日期、比较时间等,有助于处理日期相关的业务逻辑。
6. **Ajax扩展**:扩展了基本的Ajax功能,比如进度条、超时处理、缓存控制等,使得Ajax请求更加灵活和可控。
将这两个文件放置在`webroot/dwr`目录下是DWR的默认配置,这是因为DWR需要通过URL访问这些资源。例如,`/dwr/call/plaincall/SomeService.someMethod.js`这样的路径会被用来调用名为`SomeService`的Java服务中的`someMethod`方法。如果更改了默认目录,就需要在DWR配置文件中相应地更新路径设置。
`engine.js`和`util.js`是DWR框架的重要组成部分,它们共同为JavaScript和Java的交互提供了强大支持,使得开发者能够轻松地构建富互联网应用(RIA)。理解并熟练使用这两个文件,对于深入掌握DWR并利用其能力来优化Web应用至关重要。
评论0
最新资源