DWR 3.0 文件上传配置教程
需积分: 3 106 浏览量
更新于2024-09-14
收藏 129KB DOC 举报
"DWR_3.0_上传文件.doc 提供了关于如何在DWR (Direct Web Remoting) 3.0版本中实现文件上传的步骤。文档中提及的关键技术包括DWR框架、Apache Commons FileUpload和Commons IO库的使用。"
DWR (Direct Web Remoting) 是一个开源的Java库,它允许Web应用程序实现实时的、双向的JavaScript到服务器端Java方法的调用,从而提供类似桌面应用的交互体验。在DWR 3.0中,文件上传是通过与Apache Commons FileUpload和Commons IO库集成来实现的,这两个库分别是处理HTTP文件上传和进行I/O操作的核心组件。
以下是DWR 3.0中实现文件上传的详细步骤:
1. **引入依赖库**:
- dwr.jar:DWR的主要库,包含所有必需的类和接口。
- commons-fileupload-1.2.jar:Apache Commons FileUpload库,用于解析HTTP请求中的多部分数据,即处理文件上传。
- commons-io-1.3.1.jar:Apache Commons IO库,提供通用的I/O操作工具。
2. **配置web.xml**:
- 配置DWRServlet,这是DWR的核心Servlet,负责处理来自客户端的请求。在`<servlet>`和`<servlet-mapping>`元素中定义DWRServlet,并设置其显示名称、servlet名称和类名。
- 在`<init-param>`元素中配置DWR的参数,例如开启调试功能(debug)、日志级别(logLevel,通常设为DEBUG以便查看详细信息)、启用反向Ajax(activeReverseAjaxEnabled)以及是否在Web启动时初始化应用范围的creator(initApplicationScopeCreatorsAtStartup)。
3. **创建DWR的Java后端接口**:
- 在服务器端,需要创建一个Java接口,该接口包含一个或多个方法来处理文件上传。这些方法通常接收`FileItem`对象作为参数,这是Commons FileUpload库中用来表示上传文件的类。
4. **暴露Java接口给JavaScript**:
- 使用DWR的`@RemoteInterface`注解标记上述接口,这样DWR会自动为其生成JavaScript等价物。
- 在DWR的配置文件(通常为dwr.xml)中,定义这个接口的映射,指定它应该在JavaScript中暴露的名称。
5. **编写前端HTML表单**:
- 创建一个HTML表单,包含`<input type="file">`字段,用户可以从中选择要上传的文件。
- 添加一个JavaScript函数,该函数在表单提交时被调用,使用DWR的API调用服务器端的方法并将文件数据发送过去。
6. **处理上传请求**:
- 在服务器端,当DWR接收到文件上传请求时,会调用之前定义的Java方法。在这个方法中,你可以处理`FileItem`对象,如保存文件到服务器、进行验证或转换等。
7. **处理上传响应**:
- 服务器端处理完文件后,可以返回一个响应,例如文件的保存路径或处理结果,这个响应可以通过DWR的回调机制传递回JavaScript,更新前端页面。
通过以上步骤,DWR 3.0使得在Web应用中实现文件上传变得简单,同时也提供了实时反馈和错误处理的能力。需要注意的是,为了保证安全,通常还需要对上传的文件类型和大小进行限制,并对文件名进行规范化,防止恶意文件上传和路径遍历攻击。
2017-12-04 上传
2022-09-22 上传
2022-09-20 上传
123 浏览量
2022-09-22 上传
2015-09-16 上传
huchangbo
- 粉丝: 1
- 资源: 2
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫