Servlet 实现文件上传
所谓文件上传就是将本地的文件发送到服务器中保存。例如我们向百度网盘中上传本地的资源或者我们将写好的博客上传到服务器等等就是典型的文件上传。
Servlet 3.0
上次完成文件下载功能使用的是 Servlet 2.5,但是想要完成文件上传,那么继续使用 Servlet 2.5
肯定不是一个好的选择,因此我们使用 Servlet 3.0
来完成文件上传。下面我来简单介绍一下 Servlet 3.0 的新特性:
1、新增的注解支持
该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。
2、HttpServletRequest 对文件上传的支持
此前,对于处理上传文件的操作一直是让开发者头疼的问题,因为 Servlet 本身没有对此提供直接的支持,需要使用第三方框架来实现,而且使用起来也不够简单。如今这都成为了历史,Servlet 3.0 已经提供了这个功能,而且使用也非常简单。
Servlet 3.0 的新特性当然肯定不止这些,但是其他的新特性在这里我们暂时还用不到,也就不做过多了解了。
必要条件
想要完成文件上传,肯定不是这么简单,它对浏览器端和服务器端都有许多的要求。
对浏览器的要求:
- 一个文件的大小一般肯定不止 1 KB,既然这样,那么要上传一个文件肯定不能使用
get
方式了,所以上传文件时必须采用post
方式。 - 2.表单中必须有一个文件上传项
<input type="file">
,而且必须有 name 属性。 - 必须设置表单的
enctype
属性值为multipart/form-data
。
对服务器的要求:
- 当然,我们肯定得使用 Servlet 3.0。
- Servlet 3.0 中接收普通上传组件(除了文件上传组件)通过
request.getParameter(String)
接收,而文件上传组件通过request.getPart(String)
接收。 - Servlet 3.0 要求服务器必须是
Tomcat7
及其以上。
准备工作
工欲善其事,必先利其器。
首先,打开 Eclipse
,新建一个 Dynamic Web Project
。
键入项目名,选择运行时环境为 Apache Tomcat v7.0
,选择 Servlet 版本为 3.0
,然后点击 Finished
。
在项目的 WebContent
目录下,新建一个文件夹 upload
,用来存放上传过来的文件。
在 WebContent
目录下新建一个 index.jsp
。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>上传</title> </head> <body> <form action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data"> <label>选择一个文件:</label> <input type="file" name="file"><br> <input type="submit" value="上传"><br> </form> </body></html>
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java 中魔法值究竟是什么含义?(java魔法值是什么意思)
- 在 Java 开发中,Javase 究竟扮演着怎样的角色?(Javase在Java开发中扮演什么角色)
- 在 Java 中如何实现 base64 到 blob 的转换?(Java中base64转blob怎么实现)
- Java 中 clazz 类创建的方式有哪些?(java clazz类创建的方式是什么)
- 如何正确使用 Java PersistenceContext 类?实例详解!(Java PersistenceContext类使用实例)
- Java 中 Quartz 框架究竟是什么?(java中quartz是什么框架)
- PHP数据类型转换对存储方式的影响
- Java House 有哪些具体的方法?(Java House的方法有哪些)
- Java 如何读取 txt 文件内容并进行处理?(java怎么读取txt文件内容并处理)
- JavaEx 的性能表现究竟如何?(javaex的性能表现如何)