jsp servlet示例

使用Servlet和JSP将文件上传到服务器是Java Web应用程序中的常见任务。 在对Servlet或JSP进行编码以处理文件上传请求之前,您需要了解一点有关HTML和HTTP协议中文件上传支持的知识。 如果要让用户从文件系统中选择文件并上传到服务器,则需要使用<input type =” file” />。 这将使您能够选择任何文件形式的文件系统并上传到服务器。 接下来的事情是,表单方法应为enctype为multipart / form-data的 HTTP POST ,这将使文件数据在请求正文中的各个部分中可用。 现在,为了读取这些文件部分并在Servlet中创建文件,可以使用ServletOutputStream完成。 最好使用Apache commons FileUpload (一个开放源代码库)。 当您将表单方法的发布和内容类型设置为“ multipart / form-data”时,Apache FileUpload处理解析HTTP请求的所有低级细节,这些细节均会确认RFC 1867或“ HTML中基于表单的文件上传 ”。

要点:

  1. DiskFileItemFactory是FileItem的默认Factory类 。 当Apache Commons读取多部分内容并生成FileItem时,此实现将根据阈值大小将文件内容作为临时文件保留在内存或磁盘中。 默认情况下,DiskFileItemFactory的阈值大小为10KB,并在temp目录中生成由System.getProperty(“ java.io.tmpdir”)返回的临时文件。 这两个值都是可配置的,最好针对生产用途进行配置。 如果用于运行Server的用户帐户没有足够的权限将文件写入temp目录,则可能会遇到权限问题。
  2. 根据内存使用情况仔细选择阈值大小,将大量内容保留在内存中可能会导致java.lang.OutOfMemory ,而值太小则可能会导致大量临时文件。
  3. Apache commons文件上传还提供FileCleaningTracker来删除DiskFileItemFactory创建的临时文件。 一旦对相应的File实例进行垃圾回收,FileCleaningTracker就会删除临时文件。 它通过在加载FileCleaner时创建的清洁器线程来完成此操作。 如果使用此功能,请记住在Web应用程序结束时终止该线程。
  4. 在配置文件中保留可配置的详细信息,例如上传目录,最大文件大小,阈值大小等,并在未配置的情况下使用合理的默认值。
  5. 最好根据您的项目要求来验证文件的大小,类型和其他详细信息,例如,您可能希望只允许上传特定大小和特定类型的图像,例如JPEG,PNG等。

Java Servlet和JSP中的文件上传示例

这是使用Servlet和JSP在Java Web应用程序中上传文件的完整代码。 此文件上传示例需要四个文件:

  1. index.jsp包含HTML内容以设置表单,该表单允许用户选择文件并将其上传到服务器。
  2. FileUploader Servlet,处理文件上传请求并使用Apache FileUpload库解析多部分表单数据
  3. web.xml,用于在Java Web应用程序中配置servlet和JSP。
  4. 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 {List<FileItem> 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 contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>File Upload Example in JSP and Servlet - Java web application</title></head><body> <div><h3> Choose File to Upload in Server </h3><form action="upload" method="post" enctype="multipart/form-data"><input type="file" name="file" /><input type="submit" value="upload" /></form>          </div></body>
</html>

result.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>File Upload Example in JSP and Servlet - Java web application</title></head><body> <div id="result"><h3>${requestScope["message"]}</h3></div></body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>FileUploadHandler</servlet-name><servlet-class>FileUploadHandler</servlet-class></servlet><servlet-mapping><servlet-name>FileUploadHandler</servlet-name><url-pattern>/upload</url-pattern></servlet-mapping><session-config><session-timeout>30</session-timeout></session-config><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>

总之,在使用Java Web应用程序上传文件时,请记住三件事

  1. 使用HTML表单输入类型作为文件浏览要上传的文件
  2. 使用表单方法作为发布,使用enctype作为multipart / form-data
  3. 在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,则还可以使用以下依赖项:

<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.2</version>
</dependency>
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version>
</dependency>

这就是如何在Java Web应用程序中使用Servlet和JSP上传文件的全部内容。 可以使用JSP,Filter或Servlet编写此文件上载示例,因为这三个都是Java Web应用程序中请求的入口点。 为了简单起见,我已经使用Servlet处理文件上传请求。 通过Servlet 3.0 API,Servlet可以支持多部分表单数据,您可以使用HttpServletRequest的getPart()方法来处理文件上传。

参考: Servlet和JSP中的文件上传示例– Java Web应用程序教程示例,来自我们JCG合作伙伴 Javin Paul在Javarevisited博客上。

翻译自: https://www.javacodegeeks.com/2013/08/file-upload-example-in-servlet-and-jsp.html

jsp servlet示例

jsp servlet示例_Servlet和JSP中的文件上传示例相关推荐

  1. Servlet和JSP中的文件上传示例

    使用Servlet和JSP将文件上传到服务器是Java Web应用程序中的常见任务. 在对Servlet或JSP进行编码以处理文件上传请求之前,您需要了解一点有关HTML和HTTP协议中文件上传支持的 ...

  2. 【转】jsp+servlet和SSM分别是如何实现文件上传(示例)

    原文地址:https://blog.csdn.net/niceliusir/article/details/78453560 以下是jsp+servlet和SSM分别是如何实现文件上传的方法示例 两种 ...

  3. Spring MVC文件上传示例教程 - 单个和多个文件

    Spring MVC文件上传示例教程 - 单个和多个文件 文件上传是任何Web应用程序中非常常见的任务.我们之前已经看过如何在Servlet和Struts2文件上传中上传文件.今天我们将学习Sprin ...

  4. struts2登录注册示例_Struts 2文件上传示例

    struts2登录注册示例 Welcome to Struts 2 file upload example. File Upload is one of the common tasks of a w ...

  5. 在Struts 2中实现文件上传

    前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问题. 实现原理 Struts 2是通过Commons FileUpload文件上传.Commons ...

  6. 在Struts2中实现文件上传(二)

    发布运行应用程序,在浏览器地址栏中键入:http://localhost:8080/Struts2_Fileupload/FileUpload.jsp,出现图示页面:   清单7 FileUpload ...

  7. Spring Boot文件上传示例

    一.创建一个简单的包含WEB依赖的SpringBoot项目 pom.xml内容: <!-- Spring Boot web启动器 --> <dependency><gro ...

  8. java语言 文件上传,java中实现文件上传的方法

    java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...

  9. (转)SpringMVC学习(九)——SpringMVC中实现文件上传

    http://blog.csdn.net/yerenyuan_pku/article/details/72511975 这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文 ...

最新文章

  1. 【c语言】蓝桥杯算法提高 输出三个整数的最大数
  2. 学python那本书比较好-看了许多python书后!我发现学好python这三本书必看
  3. python编程在哪里写程序-第一个Python程序——在屏幕上输出文本
  4. VC防止程序被多次运行 互斥体方法
  5. pptp client
  6. New beginning
  7. carsim学习笔记6——转向系统的学习
  8. java ssm框架调用微信,微信小程序实现前后台交互(后台使用ssm框架)
  9. seo该如何防止网站被挂***?!
  10. Nuget如何管理本地的包
  11. EurekaLog发送邮件问题修正
  12. 拓展——Microsoft Office Visio下载
  13. Axure share 二三事
  14. python图像边缘检测_Python进行图片水平边缘检测prewitt算子法
  15. 凯恩帝绝对坐标清零_凯恩帝系统加工件数自动清零怎么设置
  16. BZOJ 3162:独钓寒江雪
  17. (差分)洛谷P4231 三步必杀
  18. 软件测试肖sir__python之模块
  19. 网页版2048html制作,基于HTML+CSS+JS的网页版2048的实现
  20. 【C语言】汉诺塔问题(图文详解)

热门文章

  1. 深入浅出 Java 中的包装类
  2. mybatis入门(五)之Java API
  3. Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件
  4. 写一个算法统计在输入字符串中各个字符出现的频度
  5. ssm(Spring+Spring mvc+mybatis)Spring配置文件——applicationContext.xml
  6. 开放对静态资源的访问
  7. mybatis解决 1 字节的 UTF-8 序列的字节 1 无效
  8. redis集群搭建报错-(error) CLUSTERDOWN The cluster is down
  9. java泛型程序设计——约束与局限性
  10. HDU2059(DP)