JavaEE全栈开发:文件上传详解与 Commons-FileUpload框架

需积分: 10 5 下载量 23 浏览量 更新于2024-07-19 收藏 14.5MB DOCX 举报
JavaEE知识体系总结文档详细介绍了Java Enterprise Edition (JavaEE)开发中的一项关键功能——文件上传下载。文件上传在许多应用场景中至关重要,如在线简历系统中用户上传照片,或者企业级网站允许用户上传文档。文件上传涉及到前端表单交互和后端服务器的处理。 前端实现文件上传时,需要遵循以下要点: 1. 使用表单结构,表单的`method`属性设置为`POST`,而非`GET`,因为`GET`方法不安全且数据长度有限制。 2. `enctype`属性应设置为`multipart/form-data`,这是处理二进制数据的标准。 3. 在表单中添加`<input type="file">`字段,用户可以选择要上传的文件。 对于后端Servlet来说,处理文件上传时需要注意: - 文件上传表单数据通常不在`request.getParameter()`中可用,因为它们不再是字符串形式,而是以字节流的形式存在。因此,需要通过`request.getInputStream()`获取`ServletInputStream`,这是一个可以读取二进制数据的输入流。 - Apache Commons FileUpload组件在此时派上用场,提供了解析`ServletInputStream`的功能。FileUpload是一个开源库,包含`DiskFileItemFactory`、`ServletFileUpload`和`FileItem`等核心类。 - 实现文件上传的步骤如下: - 创建`DiskFileItemFactory`,这是用于处理文件上传请求的工厂。 - 使用`ServletFileUpload`实例化ServletFileUpload对象,它负责解析文件上传的请求。 - 调用`parseRequest(request)`方法,传入Servlet的请求对象,该方法会返回一个`List<FileItem>`,每个`FileItem`代表一个表单字段,包括文件字段。 在实际应用中,除了上述基础操作,还需要考虑文件存储策略(如临时存储或持久化存储)、文件大小限制、文件类型验证以及错误处理等。此外,使用Apache Commons FileUpload时,还需要确保已正确导入所需JAR包(如`commons-fileupload.jar`和`commons-io.jar`)。 JavaEE文件上传功能涉及前端表单设计、HTTP协议理解、服务器端流处理以及第三方库的集成,掌握这些知识点对于开发高效稳定的Web应用至关重要。
2013-03-17 上传
2012-03-20 上传
Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、Unix基础知识....7 三、Unix常用命令....8 四、 文件系统权限.21 五、软硬连接的区别..........................22 六、范例程序...........22 七、网络基本命令...26 八、Shell scripts:脚本编程.................28 Core Java学习笔记...........31 第一章 JAVA前言..31 第二章 标识符,关键字,类型........35 第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第六章 高级语言特性........................59 第七章 异常.............74 第八章 图形用户接口:GUI.............78 第十一章 事件处理模型....................79 第十三章 线程(Threads)....................80 第十四章 标准I/O流与文件.............84 第十五章 网络编程.89 Tiger学习笔记..................94 第一章 Java5.0新特性.......................94 第二章 基础知识.....96 第三章 泛型...........101 第四章 Annotation.102 XML学习笔记...............106 XML前言...............106 第一章 XML Overview....................107 第二章 DTD...........109 第三章 XML Namespaces................111 第四章 XML Schema.....................115 第五章 XML解析...................119 Oracle学习笔记...............121 前言....................................121 第一章 Selecting Rows.....................124 第二章 Limiting Selected Rows.......127 第三章 Single Row Functions..........127 第四章 Displaying Data from Multiple Tables......................130 第五章 Group Function(组函数)......130 第六章 Sub queries(子查询)............132 第七章 指定运行时变量..................133 第八章 数据模型和数据库设计......134 第九章 Creating Tables(创建表)......135 第十章 Oracle Data Dictionary(数据字典表)........................138 第十一章 Manipulating Data(对表的操作)140 第十二章 Altering Tables and Constraints..142 第十三章 Creating Sequences..........145 第十四章 Creating View(创建视图)146 第十五章 Creating Indexes(创建索引).....148 第十六章 权限的授予与收回..........149 第十七章 Summary..........................151 :::::::::::::: 精点课上实例::::::::::::......152 JDBC学习笔记...............165 第一章 JDBC Overview(JDBC综述).........166 第二章 Using JDBC(JDBC的使用)167 第四章 JDBC Advanced Topics(JDBC高级特性)................170 第五章 JDBC2.0 Core Features(JDBC2.0 新特性)...............171 第六章 JDBC2.0 Standard Extensions........174 第七章 Row Set Implementation......176 第三章 OOAD and Database Design..........176 第八章 JDBC and Application Architecture..........................178 Hibernate学习笔记..........180 第一章 Hibernate入门.....................180 第二章 对象/关系映射基础.............183 第三章 关联关系映射......................185 第四章 操纵持久化对象..................190 第五章 事务控制...191 第六章 高级映射...192 第七章 高级查询...196 HTML&java; script学习笔记.....................198 HTML: 超文本标记语言.......................198 1、html简介...........198 2、动态网页开发技术......................199 3、html的基本构成..........................199 4、HTTP-EQUIV...200 5、html的标签.......202 6、CSS...................205 JavaScript...................206 一、JS概述............206 二、JS的基础语法208 三、JS常用内置对象(11种)............209 四、DHTML(动态HTML对象)......210 五、JavaScirpt高级技巧..................210 Servlet学习笔记..............212 Servlet前言.............212 第一章 Servlet Basic ........................214 第二章 Form表单.219 第三章 Servlets生命周期................222 第四章 资源访问 ......................225 第五章 状态跟踪...230 第六章 过滤器 ...234 第七章 Web Application Life Cycle Events ........................235 JSP学习笔记..................236 JSP前言.................236 第一章 Introduction to JSP...............238 第二章 Creating,Deploying and Executing a JSP..................239 第三章 JSP Scriplets,Directives and Action .................240 第四章 Working with Reusable Components(重用的组件)..241 第五章 Handling Exceptions(异常的处理)243 第六章 Advanced Topics(高级主题)..........243 第七章 Custom Tags(自定义标记) .246 第八章 EL元素(Expression Language)......247 第九章 Java Server Page Tag Libraries(JSTL)......................248 Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data Transfer & Type Converter..273 第五章 Validation(数据格式验证)..276 第六章 Internationalization(I18N:国际化)..........................283 struts1.x...283 一、开发struts1应用的基本步骤...283 二、Struts的工作流程......................284 三、struts-config.xml配置文件中主要的元素和属性.........286 四、RequestProccessor.....................287 五、Struts1的执行流程....................289 六、struts1的高级部分....................290 七、struts1中的国际化处理............291 Ajax学习笔记.................291 Ajax前言...............291 Ajax正文 ......292 Ajax在线聊天室的实现...................294 OOAD & UML学习笔记295 第一章 OOAD概述.........................295 第二章 UML..........299 第三章 需求与初始化分析..............300 第四章 分析阶段的静态建模..........302 第五章 分析阶段的动态建模..........306 第六章 设计原则与模式..................307 EJB学习笔记..................314 EJB前言................314 EJB2.0.....315 第一章 EJB介绍 .315 第二章 First EJB....318 第三章 EJB原理.320 第四章 Session Bean(会话Bean).....322 第五章 消息驱动Bean(MDB).........327 EJB3.0.....329 第一章 EJB3.0 Foundation...............329 第二章 Session Bean........................330 第三章 消息驱动Bean(MDB).........332 第四章 JPA(Java Persistence API)...332 第五章 Advanced Persistence Concepts(JPA-高级持久化)..336 第六章 事务...........341 Spring学习笔记...............345 第一章 Spring概述..........................345 第二章 Spring IOC(控制反转)........347 第三章 Spring AOP(面向切面编程)..........351 第四章 Spring中的数据访问..........353 CVS学习笔记.................355 PL/SQL学习笔记............358 第一章 PL/SQL概述........................358 第二章 PL/SQL程序结构................359 第三章 PL/SQL数据类型................362 第四章 PL/SQL中的控制语句........368 第五章 PL/SQL游标........................370 第六章 PL/SQL异常........................373 第七章 PL/SQL存储过程................374 第八章 PL/SQL包.380 第九章 PL/SQL触发器....................382 第十章 动态PL/SQL........................383 ant学习笔记...................387 Web Service学习笔记.....388