本教程以Apache组织的commons项目中的FileUpload项目做为jsp的文件上传组件,FileUpload项目完全尊守RFC1867规范中 关于在HTTP request 中通过Post方法提交文件的规范,该项目性能稳定快速,易于部署和使用. 本次教程以前端jsp + 后端 servlet的方式上传文件,你也可以完全在jsp中实现而不用servlet. 在开始之前你要准备以下几个东西: 1. commons-FileUpload 1.2 包 下载地址:http://jakarta.apache.org/commons/fileupload/ 2. commons-IO 1.3.1 包 下载地址:http://jakarta.apache.org/commons/io/ 3. Commons-BeanUtils 1.7 包 下载地址:http://jakarta.apache.org/commons/beanutils/
有了上面这些东西我们就可以开始了 =============================================================================== 1. 新建一个叫upload的WEB项目(我用的是Lomboz3.2开发环境) 2. 把上面下载下来的包分别解压并拷贝*.jar的文件到上面那个项目的WEB-INF/lib目录中 3.接下来我们要准备一份如下内容的upload.jsp文件,用来选择要上传的文件, <html> <head> <title>Jsp+Servlet upload file</title> </head> <body> <form name="upform" action="UploadServlet" method="POST" enctype="multipart/form-data"> <input type ="file" name="file1" id="file1"/><br/> <input type ="file" name="file2" if="file2"/><br/> <input type ="file" name="file3" id="file3"/><br/> <input type="submit" value="Submit" /><br/> <input type="reset" /> </form> </body> </html>
上面文件中有几个需要注意的地方就是 1. action="UploadServlet" 必须和后面的web.xml配置文件中对servlet映射必须保持一致. 2. method="POST" 这里必须为"POST"方式提交不能是"GET". 3. enctype="multipart/form-data" 这里是要提交的内容格式,表示你要提交的是数据流,而不是普通的表单文本. 4. file1,file2,file3表示你要3个文件一起上传,你也可以一次只上传一个文件. ===================================================================================
接下来我们要写一个与上面这个upload.jsp配套的servlet程序,就叫做UploadServlet.java吧 以下是该servlet的详细代码: 看上去有点长,不过并不复杂,很容易明白的.
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DefaultFileItemFactory; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.util.Streams;
/** * Servlet implementation class for Servlet: UploadServlet * */ public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { File tmpDir = null;//初始化上传文件的临时存放目录 File saveDir = null;//初始化上传文件后的保存目录 public UploadServlet() { super(); }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ if(ServletFileUpload.isMultipartContent(request)){ DiskFileItemFactory dff = new DiskFileItemFactory();//创建该对象 dff.setRepository(tmpDir);//指定上传文件的临时目录 dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte ServletFileUpload sfu = new ServletFileUpload(dff);//创建该对象 sfu.setFileSizeMax(5000000);//指定单个上传文件的最大尺寸 sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸 FileItemIterator fii = sfu.getItemIterator(request);//解析request 请求,并返回FileItemIterator集合 while(fii.hasNext()){ FileItemStream fis = fii.next();//从集合中获得一个文件流 if(!fis.isFormField() && fis.getName().length()>0){//过滤掉表单中非文件域 String fileName = fis.getName().substring(fis.getName().lastIndexOf("\\"));//获得上传文件的文件名 BufferedInputStream in = new BufferedInputStream(fis.openStream());//获得文件输入流 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(saveDir+fileName)));//获得文件输出流 Streams.copy(in, out, true);//开始把文件写到你指定的上传文件夹 } } response.getWriter().println("File upload successfully!!!");//终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗 } }catch(Exception e){ e.printStackTrace(); } }
public void init() throws ServletException { /* 对上传文件夹和临时文件夹进行初始化 * */ super.init(); String tmpPath = "c:\\tmpdir"; String savePath = "c:\\updir"; tmpDir = new File(tmpPath); saveDir = new File(savePath); if(!tmpDir.isDirectory()) tmpDir.mkdir(); if(!saveDir.isDirectory()) saveDir.mkdir();
} }
======================================================================================================== upload.jsp文件有了,配套的servlet也有了,现在最后剩下的就是怎么让它们配合工作了, 接着我们把WEB-INF/web.xml文件请出来,并在该文件中加入以下内容:
<servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>UploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/UploadServlet</url-pattern> </servlet-mapping>
写好以后再点击"保存"
========================================================================================================== 把你的upload项目整个拷贝到tomcat的webapps目录下,启动tomcat. 打开IE浏览器在地址栏中输入http://localhost:8080/upload/upload.jsp 怎么样看到上传文件的输入框了吗? 什么,没有看到,出错了! 你仔细检查一下步骤有没有对. 好了,现在我们点击页面上的"浏览"按钮,找到我们要上传的文件,最后点击"Submit",太激动了,还不看一下你的c:\updir里面有没有你要的东西.
下一教程: <<FileUpload+Struts 实现上传文件>>
|
相关推荐
Apache Commons IO是处理IO操作的工具集,而Commons Fileupload则是专门用来处理文件上传的库,它可以方便地处理`multipart/form-data`编码的表单数据。 以下是关于这个话题的详细知识点: 1. **HTML表单与文件...
"jsp+servlet+fileupload文件上传" 这个标题表明这是一个关于使用Java Web技术进行文件上传的教程。JSP (JavaServer Pages) 是一种动态网页技术,Servlet是Java EE中的一个核心组件,常用于处理HTTP请求。FileUpload...
本实例结合JSP、Servlet和SmartUpload,实现了用户登录和文件上传下载功能,充分展示了这些技术在实际开发中的应用。开发者可以通过学习这个实例,深入理解Web应用的开发流程,提升自己的技能水平。
总的来说,这个项目提供了一个基础的文件上传实现,可以帮助开发者理解JSP和Servlet在文件上传中的协作,以及如何使用第三方库如Apache Commons FileUpload处理多部分请求。在实际应用中,还需要考虑安全性问题,...
在本文中,我们将深入探讨如何使用Java的JSP(JavaServer Pages)和Servlet技术来实现一个图片上传功能。这是一个常见的Web开发任务,特别是在构建交互性强、动态内容丰富的网站时。以下是一些关键知识点: 1. **...
总结,这个项目展示了如何在传统的Java Web环境中使用JSP和Servlet实现文件上传和下载功能,同时利用Apache Commons FileUpload库简化了文件上传的复杂性。对于初学者,这是一个很好的实践案例,能够深入理解MVC模式...
在这个“JSP+servlet文件上传简单案例”中,我们将探讨如何利用这两种技术实现文件上传功能。文件上传是Web应用中常见的一种需求,例如用户可能需要上传个人头像、文档或者其他形式的数据。 首先,让我们了解一下...
在这个主题中,“jsp+servlet实现文件上传和下载”是核心知识点,我们将深入探讨如何利用这两个组件以及Apache的`commons-fileupload`和`commons-io`库来完成这一任务。 1. **文件上传** 文件上传通常涉及用户通过...
照片上传功能,通常涉及到文件上传组件,如Apache Commons FileUpload库。用户可以通过选择本地文件,将其上传至服务器的指定目录,然后在数据库中保存文件路径。在医疗场景下,这可能是用于存储患者的影像资料或者...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
综上所述,这个基于JSP+Servlet的网上书城项目涵盖了Web开发的多个重要知识点,包括MVC架构、JSP和Servlet的交互、数据库操作、文件上传、在线支付、验证码以及邮件服务等。对于初学者来说,这是一个很好的实践项目...
5. 文件上传与下载:系统提供了文件上传和下载功能,可能涉及到Apache Commons FileUpload库,用于处理用户上传的文件,如物流单据、合同等。文件存储可能采用文件系统或云存储服务,确保文件的安全和高效访问。 6....
使用mvc模式设计,jsp+servlet+jdbc开发,包含数据库结构,jar包,数据库使用mysql,可以更改数据库,支持数据库记录上传文件的路径信息,...在Servlet中使用开源fileupload包实现文件上传下载功能Jsp+Servletfileupload
`JSP(JavaServer Pages)`和`Servlet`是Java EE平台上的两种核心技术,它们常用于构建动态Web项目,包括文件上传功能。本篇文章将深入讲解如何使用JSP和Servlet实现文件上传。 首先,我们需要了解`JSP`的基本概念...
总结来说,实现"JSP+servlet上传文件有进度条"需要结合JSP、Servlet、文件上传库(如Commons-FileUpload)以及前端的AJAX和JavaScript技术。通过异步请求和实时的进度反馈,为用户提供流畅的文件上传体验。在实际...
在这个“struts+上传下载+servlet+jsp”项目中,我们将探讨这些技术如何协同工作以实现文件的上传和下载功能。 **Struts框架**: Struts是一个开源的MVC框架,它简化了Java Web应用的开发过程。在Struts中,...
本实例将详细介绍如何利用JSP和Servlet来实现文件的上传与下载功能。 首先,我们需要了解JSP和Servlet的基本概念。JSP是一种服务器端脚本语言,它允许开发者在HTML页面中嵌入Java代码,使得动态内容的生成更加直观...
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们可以协同工作来处理用户请求,包括文件上传功能。本教程将详细讲解如何使用JSP和Servlet实现文件上传,以及相关的知识点。 一、JSP与...
在这个“JSP+servlet实现文件上传”的项目中,开发者提供了六个实例,涵盖了从用户选择文件到服务器接收并存储文件的整个过程。通过这个项目,我们可以学习到以下关键知识点: 1. **JSP基础知识**: JSP是一种基于...
基于JSP+Servlet+JavaBean的图片或文件上传 一、概述 在当前的博客论坛或企业办公中,资源的共享是非常重要的。文件上传是实现资源共享的一种方式,通过文件上传,我们可以与他人分享资源,从而达到大众间的沟通和...