DWR使用教程与常见问题解析
需积分: 9 72 浏览量
更新于2024-11-03
收藏 4KB TXT 举报
"DWR学习总结"
DWR(Direct Web Remoting)是一种JavaScript库,它允许在Web浏览器和服务器之间进行实时、双向通信,无需插件或activex。DWR通过Ajax技术实现了JavaScript与Java代码的交互,使得前端可以调用后台的Java方法,从而简化了Web应用的开发。
在DWR的使用过程中,有几点需要注意和理解:
1. **配置DWRServlet**:DWR的核心是DWRServlet,它负责处理来自浏览器的请求。在web.xml文件中,需要正确配置DWRServlet,通常将其类名设置为`uk.ltd.getahead.dwr.DWRServlet`(在DWR 1.1.3版本)或`org.directwebremoting.servlet.DwrServlet`(在DWR 2.0及更高版本)。配置时,可能遇到的问题是`java.lang.IllegalArgumentException`,这通常是因为缺少JDK5的注解支持,需要确保DWR运行环境支持注解。
解决方案是在web.xml中添加以下参数:
```xml
<init-param>
<param-name>classes</param-name>
<param-value>java.lang.Object</param-value>
</init-param>
<load-on-startup>100</load-on-startup>
```
2. **启动和调试**:在启动DWR时,如果遇到问题,可以将`debug`参数设置为`true`,这有助于排查错误。调试模式下,可以通过http://localhost:8080/<context>/dwr页面访问DWR的控制台,查看和测试接口。
3. **DWR路径问题**:DWR的脚本文件(如DWRUtil.js)需要正确引用,确保在前端能够访问。在JSP页面中,可以通过动态获取上下文路径来构建正确的引用路径。例如:
```jsp
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<base href="<%=basePath%>">
```
4. **DWRUtil的使用**:DWR提供了一些便利的JavaScript工具,如DWRUtil,它可以方便地处理数据。在使用DWRUtil之前,确保在页面的<head>部分正确引入DWRUtil.js。默认情况下,应链接到`<context>/dwr/DWRUtil.js`,这里的<context>是你的应用上下文路径。
5. **安全性考虑**:DWR提供了跨域访问的功能,但这也增加了安全风险。因此,需要配置DWR的安全策略,限制允许的源和方法,防止未经授权的访问。
6. **对象映射和转换**:DWR自动处理Java对象与JavaScript对象之间的映射和转换。当Java对象返回给JavaScript时,DWR会尝试将其转化为JavaScript能理解的类型。同样,当JavaScript调用Java方法并传递参数时,DWR也会处理这些参数的转换。
7. **异步与同步调用**:DWR支持异步和同步调用,异步调用不阻塞用户界面,而同步调用则会等待服务器响应。选择哪种方式取决于具体的应用需求。
8. **错误处理**:在使用DWR时,应妥善处理可能出现的错误,如网络中断、服务器错误等。DWR提供了错误处理机制,可以在JavaScript中定义错误回调函数。
9. **缓存与更新**:DWR有自动缓存接口的机制,但当Java端的类或方法发生变化时,需要更新客户端的缓存,以保持同步。
10. **性能优化**:为了提高性能,可以调整DWR的配置,比如批量处理请求、压缩传输数据等。
通过理解和掌握这些关键点,开发者可以更有效地利用DWR来构建功能丰富的、交互性强的Web应用程序。在实践中,不断试验和优化,将使DWR成为提升Web应用用户体验的强大工具。
2009-07-18 上传
2012-12-12 上传
2010-04-08 上传
2009-08-28 上传
2009-10-22 上传
2008-10-16 上传
lige11011
- 粉丝: 2
- 资源: 5
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍