jsp servlet示例_Servlet和JSP中的文件上传示例

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中基于表单的文件上传 ”。

要点:

JavaSparrow-med

  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示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

功能Java示例 第3部分–不要使用异常来控制流程

这是称为“ Functional Java by Example”的系列文章的第3部分。 我在本系列的每个部分中发展的示例是某种“提要处理程序”&#xff0c;用于处理文档。 在前面的部分中&#xff0c;我从一些原始代码开始&#xff0c;并应用了一些重构来描述“什么”而不是“如何”。 为了帮助…

安全模式打开计算机策略,安全模式下怎么解除组策略的锁定?

2006-01-13注册表被锁住了&#xff0c;组策略也被禁用&#xff0c;安全模式也进不了&#xff0c;该如何修改注册表随便从网络上下在一个注册表编辑器,展开[hkey-current-user\software\microsoft\windows\current version\policies\system]主键,将键名 disableregistrytools 的…

Java基本语法(12)--分支结构if-else

基本格式结构 if (条件语句){条件语句为true时&#xff0c;进入执行的语句&#xff1b; }else{条件语句为false时&#xff0c;执行的语句&#xff1b; }if (条件语句1){条件语句1为true时&#xff0c;进入执行的语句&#xff1b; }else if(条件语句2){条件语句1为false&#x…

服务器硬盘 主板,服务器主板和普通主板有什么区别?

什么是工控服务器?首先我们来看专业上服务器是怎样定义的&#xff1a;工控服务器是一种高性能计算机&#xff0c;作为网络的节点&#xff0c;存储、处理网络上80%的数据、信息&#xff0c;因此也被称为网络的灵魂。也可以这样讲&#xff0c;工控服务器是指一个管理资源并为用户…

键盘输入Scanner类方法属性使用

基本步骤 1.导包&#xff1a;import java.util.Scanner 2.Scanner实例化&#xff0c;创建Scanner对象&#xff1a; Scanner scan new Scanner(System.in) 3.调用Scanner类相关方法&#xff08;next&#xff08;&#xff09;/nextXxx()&#xff09;&#xff0c;来获取指定数据类…

传奇霸业维护服务器,37传奇霸业8月18日部分区服维护计划

亲爱的玩家:您好&#xff0c;为保证服务器稳定运营&#xff0c;优化游戏体验&#xff0c;《传奇霸业》新版本“炼狱魔域”将代替旧版本“超霸传奇”继续向各大玩家提供游戏服务&#xff0c; 我们将在2016年8月18日对以下区服进行停服维护更新&#xff0c;具体维护时间将视情况提…

2018年机器学习趋势与Apache Kafka生态系统相结合

在慕尼黑举行的OOP 2018大会上&#xff0c;我介绍了有关使用Apache Kafka生态系统和诸如TensorFlow&#xff0c;DeepLearning4J或H2O之类的深度学习框架构建可扩展&#xff0c;关键任务微服务的演讲的更新版本。 我想分享更新后的幻灯片&#xff0c;并讨论一些有关最新趋势的更…

Java基本语法(13)--条件分支switch-case结构

基本格式结构&#xff1a; switch (表达式/变量) {case 常量1&#xff1a;执行语句1; //情况1case 常量2&#xff1a;执行语句2; //情况2... ... ...default: 以上情况都不满足时执行语句; }说明&#xff1a; switch结构中的表达式/变量只能是如下6种数据类型之一&#xff…

小米岭南通服务器维护,小米岭南通交通联合卡内测开启

原标题&#xff1a;小米岭南通交通联合卡内测开启IT之家12月21日消息 小米岭南通交通联合卡内测开启招募报名&#xff0c;持小米8(含探索版、屏幕指纹版)、小米MIX 系列(不含MIX 3)、小米Note 3/2、小米6/5s/5s Plus手机的用户可开通尝鲜。支持系统小米8和MIX 2S最低支持8.12.2…

mysql 大于号 优化_SQL优化 MySQL版 - 避免索引失效原则(二)

避免索引失效原则(二)注&#xff1a;继上一篇文章继续讲解&#xff1a;避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062作者 &#xff1a; Stanley 罗昊【转载请注明出处和署名&#xff0c;谢谢&#xff01;】体验SQL优化中的概率情况在上一…

mysql 唯一索引 死锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇

毫不夸张的说&#xff0c;有一半以上的死锁问题由唯一索引贡献&#xff0c;后面介绍的很多死锁的问题都跟唯一索引有关。这次我们讲一段唯一索引 S 锁与 X 锁的爱恨情仇我们来看一个简化过的例子# 构造数据CREATE TABLE t1 (id int(11) NOT NULL AUTO_INCREMENT,name varchar(1…

ejb 示例 2018_EJB钝化和激活示例

ejb 示例 2018在本教程中&#xff0c;我们将了解状态Java企业会话Bean中激活和钝化的工作方式。 1.简介 有状态会话Bean通常保存有关特定客户端的信息&#xff0c;并在整个会话中保存该信息。 但是&#xff0c;事实是&#xff0c;客户端会话往往会在相当长的时间内保持活动状态…

js微信小程序页面左上角返回跳转指定页面

微信小程序非导航栏tabBar页面左上角返回默认返回上一次的页面&#xff08;即进入当前页面的前一页面&#xff09;&#xff0c;如果需要自定义页面&#xff0c;可以通过js中onUnload函数进行指定页面跳转。 ①关闭所有页&#xff0c;打开url指定页面 onUnload: function () {…

服务器mysql显示链接次数太多,服务器mysql显示链接次数太多

服务器mysql显示链接次数太多 内容精选换一换在本章节中&#xff0c;您将会把游戏应用部署到CCE云容器引擎中&#xff0c;您需要执行以下操作&#xff1a;创建集群&#xff1a;集群是运行应用的逻辑分组&#xff0c;包含一组云服务器资源&#xff0c;每个节点对应一台云服务器。…

使用JUnit 5在Mockito中方便地进行模拟–官方方式

从版本2.17.0开始&#xff0c;如果使用JUnit 5&#xff0c; Mockito提供了官方&#xff08;内置&#xff09;支持来管理模拟生命周期。 入门 为了利用该集成&#xff0c;需要在JUnit 5的junit-platform-engine旁边添加Mockito的mockito-junit-jupiter依赖项&#xff08;有关详…

esp32搭建文件服务器,ESP32入门示例 - SD卡Web服务器

这个是来自ESP32官方示例的改版&#xff0c;官方的示例由于存在一些问题所以我进行了修改原本的示例有点逻辑上的问题&#xff0c;所以进行了一些修改主要修改有&#xff1a;1.新增SD卡测试部分 复制自官方SD卡示例2.新增一个根目录页&#xff0c;访问根目录就可以看到3.修改了…

mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

一、 MySQLMyCat分库分表1 MyCat简介java编写的数据库中间件Mycat运行环境需要JDK。Mycat是中间件&#xff0c;运行在代码应用和MySQL数据库之间的应用。前身&#xff1a; corba&#xff0c;是阿里开发的数据库中间件&#xff0c;实现MySQL数据库分库分表集群管理的中间件&…

字符串String截取字符char

字符串类的charAt() 方法可返回指定位置的字符。 stringObject.charAt(index)从键盘输入获取了一个字符串&#xff0c;将其数据类型转换为字符型。 Scanner scan new Scanner(System.in); String str scan.next(); char ca str.charAt(0);示例&#xff1a; import java.u…

Java基本语法(14)--for循环结构

循环结构&#xff1a;在某些条件满足的情况下&#xff0c;反复执行特定代码的功能。 基本格式&#xff1a; for (①初始化部分; ②循环条件部分; ④迭代部分)&#xff5b; ③循环体部分; &#xff5d;如果①&#xff0c;④部分多条语句&#xff0c;语句之间用“&#xff0c;”…

Java 8中的功能接口是什么? @功能注释和示例

函数接口是Java 8最重要的概念之一&#xff0c;实际上为lambda表达式提供了动力&#xff0c;但是许多开发人员没有首先了解函数接口在Java 8中的作用就花了很多精力来理解它&#xff0c;并花时间学习lambda表达式和Stream API。除非您知道什么是功能接口以及lambda与它之间的关…