网站诚信认证怎么做,南京百度做网站的电话,网站建设与制作与维护,网站建设培训心得使用Servlet和JSP将文件上传到服务器是Java Web应用程序中的常见任务。 在对Servlet或JSP进行编码以处理文件上传请求之前#xff0c;您需要了解一点有关HTML和HTTP协议中文件上传支持的知识。 如果要让用户从文件系统中选择文件并上传到服务器#xff0c;则需要使用inpu… 使用Servlet和JSP将文件上传到服务器是Java Web应用程序中的常见任务。 在对Servlet或JSP进行编码以处理文件上传请求之前您需要了解一点有关HTML和HTTP协议中文件上传支持的知识。 如果要让用户从文件系统中选择文件并上传到服务器则需要使用input type ” file” /。 这将使您能够选择任何文件形式的文件系统并上传到服务器。 接下来的事情是表单方法应该是HTTP POST 其enctype为multipart / form-data 这使得文件数据可在请求主体内的部分中使用。 现在为了读取这些文件部分并在Servlet中创建文件可以使用ServletOutputStream完成。 最好使用Apache commons FileUpload 一个开放源代码库。 当您将表单方法的发布和内容类型设置为“ multipart / form-data”时Apache FileUpload处理解析HTTP请求的所有低级细节这些细节均会确认RFC 1867或“ HTML中基于表单的文件上传 ”。 重要事项 DiskFileItemFactory是FileItem的默认Factory类 。 当Apache Commons读取多部分内容并生成FileItem时此实现将根据阈值大小将文件内容作为临时文件保留在内存或磁盘中。 默认情况下DiskFileItemFactory的阈值为10KB并在temp目录中生成临时文件由System.getProperty“ java.io.tmpdir”返回。 这两个值都是可配置的最好针对生产用途进行配置。 如果用于运行Server的用户帐户没有足够的权限将文件写入temp目录则可能会遇到权限问题。 根据内存使用情况仔细选择阈值大小将大量内容保留在内存中可能会导致java.lang.OutOfMemory 而值太小则可能会导致大量临时文件。 Apache commons文件上传还提供FileCleaningTracker来删除DiskFileItemFactory创建的临时文件。 一旦对相应的File实例进行垃圾回收FileCleaningTracker就会删除临时文件。 它通过在加载FileCleaner时创建的清洁器线程来完成此操作。 如果使用此功能请记住在Web应用程序结束时终止此线程。 在配置文件中保留可配置的详细信息例如上载目录最大文件大小阈值大小等并在未配置的情况下使用合理的默认值。 根据您的项目要求验证文件的大小类型和其他详细信息是很好的例如您可能希望仅允许上传特定大小和特定类型的图像例如JPEGPNG等。 Java Servlet和JSP中的文件上传示例 这是使用Servlet和JSP在Java Web应用程序中上传文件的完整代码。 此文件上传示例需要四个文件 index.jsp包含HTML内容以设置表单该表单允许用户选择文件并将其上传到服务器。 FileUploader Servlet处理文件上传请求并使用Apache FileUpload库解析多部分表单数据 web.xml在Java Web应用程序中配置servlet和JSP。 result.jsp用于显示文件上传操作的结果。 FileUploadHandler.java import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;/*** Servlet to handle File upload request from Client* author Javin Paul*/
public class FileUploadHandler extends HttpServlet {private final String UPLOAD_DIRECTORY C:/uploads;Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//process only if its multipart contentif(ServletFileUpload.isMultipartContent(request)){try {ListFileItem multiparts new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);for(FileItem item : multiparts){if(!item.isFormField()){String name new File(item.getName()).getName();item.write( new File(UPLOAD_DIRECTORY File.separator name));}}//File uploaded successfullyrequest.setAttribute(message, File Uploaded Successfully);} catch (Exception ex) {request.setAttribute(message, File Upload Failed due to ex);} }else{request.setAttribute(message,Sorry this Servlet only handles file upload request);}request.getRequestDispatcher(/result.jsp).forward(request, response);}} index.jsp %page contentTypetext/html pageEncodingUTF-8%
!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//ENhttp://www.w3.org/TR/html4/loose.dtd
htmlheadmeta http-equivContent-Type contenttext/html; charsetUTF-8titleFile Upload Example in JSP and Servlet - Java web application/title/headbody divh3 Choose File to Upload in Server /h3form actionupload methodpost enctypemultipart/form-datainput typefile namefile /input typesubmit valueupload //form /div/body
/html result.jsp %page contentTypetext/html pageEncodingUTF-8%
!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//ENhttp://www.w3.org/TR/html4/loose.dtd
htmlheadmeta http-equivContent-Type contenttext/html; charsetUTF-8titleFile Upload Example in JSP and Servlet - Java web application/title/headbody div idresulth3${requestScope[message]}/h3/div/body
/html web.xml ?xml version1.0 encodingUTF-8?
web-app version2.5 xmlnshttp://java.sun.com/xml/ns/javaee xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsdservletservlet-nameFileUploadHandler/servlet-nameservlet-classFileUploadHandler/servlet-class/servletservlet-mappingservlet-nameFileUploadHandler/servlet-nameurl-pattern/upload/url-pattern/servlet-mappingsession-configsession-timeout30/session-timeout/session-configwelcome-file-listwelcome-fileindex.jsp/welcome-file/welcome-file-list/web-app 总之在使用Java Web应用程序上传文件时请记住三件事 使用HTML表单输入类型作为文件浏览要上传的文件 使用表单方法作为发布使用enctype作为multipart / form-data 在Servlet中使用Apache commons FileUpload来处理包含多部分数据的HTTP请求。 相依性 为了在任何Web服务器例如Tomcat中编译并运行此Java Web应用程序您需要在WEB-INF lib文件夹中包括以下依赖项JAR。 commons-fileupload-1.2.2.jar commons-io-2.4.jar 如果您正在使用Maven则还可以使用以下依赖项 dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.2.2/version
/dependency
dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.4/version
/dependency 这就是如何在Java Web应用程序中使用Servlet和JSP上传文件的全部内容。 可以使用JSPFilter或Servlet编写此文件上载示例因为这三个都是Java Web应用程序中请求的入口点。 为了简单起见我已经使用Servlet处理文件上传请求。 通过Servlet 3.0 APIServlet支持多部分表单数据您可以使用HttpServletRequest的getPart方法来处理文件上传。 参考 Servlet和JSP中的文件上传示例– Java Web应用程序教程示例来自我们JCG合作伙伴 Javin Paul在Javarevisited博客上。 翻译自: https://www.javacodegeeks.com/2013/08/file-upload-example-in-servlet-and-jsp.html