iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >聊聊在Servlet中怎么上传文件
  • 764
分享到

聊聊在Servlet中怎么上传文件

2024-04-02 19:04:59 764人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

首先对Servlet上传文件的简单理解 此前,Servlet本身没有对文件上传提供直接的支持,一般需要使用第三方框架来实现,这样就比较麻烦 不过,Servlet3.0之后提供了这个

首先对Servlet上传文件的简单理解

此前,Servlet本身没有对文件上传提供直接的支持,一般需要使用第三方框架来实现,这样就比较麻烦
不过,Servlet3.0之后提供了这个功能,而且使用非常简单,,为此,httpservletRequest提供了两个方法用于从请求中解析出上传的文件:


Part getPart(String name)  //获取请求中给定 name 的文件
Collection<Part> getParts() //获取所有的文件

其中每一个文件用一个javax.servlet.Http.Part对象来表示,该接口提供了处理文件的简易方法,如write(),delete(),那么,结合 HttpServletRequest 和 Part 来保存上传的文件变得非常简单


Part img = request.getPart("img");
img.write("根路径+\\img.jpg")

注意:可以配合 @MultipartConfig 注解来对上传操作进行一些自定义的配置,比如限制上传文件的大小,以及保存文件的路径等,但是,如果请求的 MIME 类型不是 multipart/fORM-data,则不能使用上面的两个方法,否则将抛异常。

首先我们掌握开发Servlet的步骤:

前端:如果有前端内容的话,需要再写一个html文件
后端

  • 首先编写后台的Servlet代码(也即重写doGet和doPost方法)
  • 配置项目文件,WEB.xml里面的映射文件

1.首先写一个页面(前端) html 文件


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="img"><p>
    <input type="submit" value=" 提 交 ">
</form>
</body>
</html>

代码分析

在这里插入图片描述

2.写Servlet后端类代码


import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
import java.io.PrintWriter;

//首先必须声明这个类是用来处理(文件)流的【不可获取】
@MultipartConfig
public class FileServlet extends HttpServlet {
    @Override
    //因为提交表单只需要post,那么这里就不需要get方法了
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //首先拿到流信息,他返回的是一个part对象
        Part part = req.getPart("img");
        //手下声明一个保存路径,这里保存在D盘的File文件下
        String filePath = "D:\\File\\";
        //保存文件的名称这里就和原文件的名称一样,通过part里面的方法得到原文件名称
        String fileName = part.getSubmittedFileName();
        //通过write方法,可以将这个png文件保存在任意路径下,write里面的参数,就是要保存的路径
        part.write(filePath+fileName);

        //然后给前端返回响应的结果
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        PrintWriter writer = resp.getWriter();
        writer.println("<h1>上传成功</h1>");
    }}

3.配置web.xml映射


<servlet>
    <servlet-name>fileServlet</servlet-name>
    <servlet-class>FileServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>fileServlet</servlet-name>
    <url-pattern>/upload</url-pattern>
  </servlet-mapping>

4.效果展示

在这里插入图片描述

存在问题

那么哪里存在问题呢?


//首先拿到流信息,他返回的是一个part对象
        Part part = req.getPart("img");
        //手下声明一个保存路径,这里保存在D盘的File文件下
        String filePath = "D:\\File\\";
        //保存文件的名称这里就和原文件的名称一样,通过part里面的方法得到原文件名称
        String fileName = part.getSubmittedFileName();
        //通过write方法,可以将这个png文件保存在任意路径下,write里面的参数,就是要保存的路径
        part.write(filePath+fileName);

注意:其实这里是存在一点问题的

在这里插入图片描述

那么如何进行改进呢?

方法:使用UUID作为文件名

在这里插入图片描述

代码改进:也就是把代码中的fileName改成如下


//首先需要一个文件名,改进文件名的名称(防止重复名称覆盖之前的文件)
        String fileName = UUID.randomUUID().toString()+
                part.getSubmittedFileName().substring(part.getSubmittedFileName().indexOf("."));

结果验证

在这里插入图片描述

以上就是聊聊在Servlet中怎么上传文件的详细内容,更多关于Java Servlet上传文件的资料请关注编程网其它相关文章!

--结束END--

本文标题: 聊聊在Servlet中怎么上传文件

本文链接: https://www.lsjlt.com/news/126049.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 聊聊在Servlet中怎么上传文件
    首先对Servlet上传文件的简单理解 此前,Servlet本身没有对文件上传提供直接的支持,一般需要使用第三方框架来实现,这样就比较麻烦 不过,Servlet3.0之后提供了这个...
    99+
    2024-04-02
  • 在Servlet中如何上传文件
    这篇文章主要介绍在Servlet中如何上传文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先对Servlet上传文件的简单理解此前,Servlet本身没有对文件上传提供直接的支持,一般需要使用第三方框架来实现,这...
    99+
    2023-06-15
  • 聊聊如何删除Github上的文件
    Github是一个很受欢迎的代码托管平台,许多开发人员使用它来共享代码和协作开发项目。在使用Github的过程中,我们可能需要删除一些文件,比如一些不需要的代码或是已经过时的文件。本文将向您介绍如何删除Github上的文件。一、使用Gith...
    99+
    2023-10-22
  • 聊聊如何在Golang中修改配置文件
    在应用程序的开发过程中,有一个非常重要的文件——配置文件(configuration file)往往包含了各种参数和选项,以调整应用程序的行为和表现形式。常见的配置文件格式有ini、json、yaml等等。虽然配置文件对于应用程序的正确运行...
    99+
    2023-05-14
  • 一文聊聊Javascript中的执行上下文
    本篇文章带大家聊聊Javascript中的执行上下文,分享一个思考题,通过对思考题的分析,想必会对执行上下文有更加深入的理解。在前面的几篇文章中,我们深入了解了关于执行上下文的三个重要成员:变量对象、作用域链和 this ,本篇文章是前四篇...
    99+
    2023-05-14
    执行上下文 javascript
  • 聊聊git怎么修改配置文件
    Git是目前最常用的版本控制系统之一,它能帮助用户管理代码、保留历史记录并协作开发。在使用Git的过程中,我们经常需要修改配置文件以满足自己的需求。下面就是关于如何修改Git配置文件的详细介绍。一、找到Git配置文件用户可以通过在终端中输入...
    99+
    2023-10-22
  • 聊聊git上删除添加文件的方法
    在使用git管理项目时,我们需要不断的添加文件和文件夹到版本库中,进行版本控制和协作开发。但是,有时候我们可能添加了错误的文件或者不需要的文件,这个时候就需要将其从版本库中删除。本文将详细介绍git删除添加的文件的方法。查看git状态在删除...
    99+
    2023-10-22
  • 一文聊聊Vue中的KeepAlive组件
    看下面的图更加直观,图片来源一篇讲keepAlive 缓存优化的文章4、如何添加到 vue devtools 组件树上sharedContext.activate = (vnode, container, anchor) => { ...
    99+
    2022-11-22
    前端 Vue.js 前端框架
  • 一起聊聊在python中读取和写入CSV文件
    本篇文章给大家带来了关于Python 的相关知识,其中主要介绍了读取和写入CSV文件的相关内容,包括了导入CSV库、对CSV文件进行读写等等内容,下面一起来看一下,希望对大家有帮助。【相关推荐:Python3视频教程 】CSV(Comma-...
    99+
    2023-05-14
    python
  • 聊聊Node.js中常用的文件系统
    Node.js是一个能够运行JavaScript的平台,它采用事件驱动、非阻塞I/O模型,使得在一个单线程的环境下能够高效地处理大量请求,成为现代Web应用开发的首选技术。在Node.js开发过程中,为了更好地阅读和维护代码,编写高质量的注...
    99+
    2023-05-14
  • 聊聊vue中要怎么根据路径来访问文件
    Vue.js 是目前非常流行的一种前端 JavaScript 框架,它以简单和灵活的方式编写单页面应用程序。Vue.js 由于使用组件化的开发方式,可以描述复杂的 UI 界面,并提供了良好的交互体验,因此,在实际的开发中非常受欢迎。但在 V...
    99+
    2023-05-14
  • 聊聊MVVM模型在Vue中怎么应用
    Vue中的实现MVVM即模型-视图-视图模型。模型指的是后端传递的数据;视图指的是所看到的页面。视图模型是mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将模型转化成视图,即将后端传递的数据转化成所看到的页面。实现...
    99+
    2022-11-22
    javascript vue3 Vue vue.js
  • 聊聊Git上中文问题的解决方法
    标题:作为一种流行的分布式版本控制系统,Git已经成为了很多开发者的首选工具。然而,在使用Git过程中,有一些中文相关的问题会让一部分用户感到困惑。本文将介绍Git中的中文问题,并给出解决方法。一、Git的默认编码在Git中,默认使用的编码...
    99+
    2023-10-22
  • 聊聊MyEclipse 10中怎么安装Git插件
    MyEclipse 10是一款基于Eclipse平台的集成开发环境,其具有强大的Web和企业级开发支持。而Git则是一款流行的分布式版本控制系统,能够帮助用户轻松管理代码。本篇文章将介绍如何在MyEclipse 10中安装Git插件。安装E...
    99+
    2023-10-22
  • 聊聊怎么用node写入读取文件内容
    以上就是聊聊怎么用node写入读取文件内容的详细内容,更多请关注编程网其它相关文章!...
    99+
    2023-05-14
    nodejs​ node
  • 聊聊vue怎么把对象传到后台
    Vue是一款非常强大的前端框架,它提供了许多便捷的发送请求的方法来与后台进行交互。在Vue中,我们可以使用Ajax或者axios等等请求库来向后台发送请求。当向后台发送请求的时候,我们通常会传递一些数据,在后台我们也称之为参数。而在Vue中...
    99+
    2023-05-14
  • 如何使用Servlet上传文件
    如何使用Servlet上传文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、Servlet实现文件上传,需要添加第三方提供的jar包下载地址:1) commons-fi...
    99+
    2023-05-31
    servlet 文件上传
  • 怎么在django中上传文件
    怎么在django中上传文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Django文件上传需要考虑的重要事项文件或图片一般通过表单进行。用户在前端点击文件上...
    99+
    2023-06-14
  • 聊聊怎么在服务器上搭建php5.6环境(教程)
    近年来,PHP语言已经成为了Web开发中最为流行的语言之一。事实上,大量的网站和应用程序均采用了PHP语言开发。在本文我们将探讨如何在自己的服务器上搭建PHP5.6环境。一、安装Apache服务Apache是目前最常用的Web服务器之一,我...
    99+
    2023-05-14
  • Servlet文件的上传与下载怎么实现
    本文小编为大家详细介绍“Servlet文件的上传与下载怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Servlet文件的上传与下载怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。文件的上传和下载1...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作