如果实现文件上传难道非要借助第三方jar包(最常用的莫过于apache的commons-fileupload工具包)来实现吗?答案是否定的,下面通过例子演示在不借助第三方jar包的前提下如何实现文件的上传:

1、servlet文件代码:

package com.ghj.packageofservlet;import java.io.IOException;
import java.util.UUID;import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;/*** 用于接收文件上传请求* * @author GaoHuanjie*/
@WebServlet(urlPatterns = "/UploadServlet")
@MultipartConfig(location = "C:/upload/", maxFileSize = 1024 * 1024 * 10)
public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");try{Part part = request.getPart("photo");if(part.getSize() == 0l){request.setAttribute("result", "请选择要上传的文件!!!");}else{String fileSuffix = FilenameUtils.getExtension(StringUtils.substringBetween(part.getHeader("content-disposition"), "filename=\"", "\""));part.write(UUID.randomUUID().toString() + "." + fileSuffix);request.setAttribute("result", "文件成功上传!!!");}}catch (Exception e) {if(e.getMessage().contains("its maximum permitted  size ")){e.printStackTrace();request.setAttribute("result", "上传文件过大,请重新选择!!!");}else{e.printStackTrace();request.setAttribute("result", "系统出现问题,请联系管理员!!!");}}request.getRequestDispatcher("result.jsp").forward(request, response);}
}

说明:上面servlet依赖于commons-io-2.4.jar和commons-lang-2.5.jar两个jar包,主要实现获取上传文件类型的功能。

2、web.xml文件代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

3、网站首页文件代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>借助Servlet3.0实现文件上传</title></head><body><form action="<%=basePath%>UploadServlet" method="post" enctype="multipart/form-data">文件上传:<input type="file" id="photo" name="photo"/><input type="submit" value="开始上传" /></form></body>
</html>

4、上传文件结果文件代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>文件上传结果</title></head><body><center style="margin-top: 20%"><font style="font-size: 36pt;font-weight: bold;color: red;"><%=request.getAttribute("result") %></font></center></body>
</html>

0分资源下载——servlet3.0文件上传 01.zip

【0分资源下载——servlet3.0文件上传 02.zip】

说明:上面两个例子的代码基本相同,唯一的区别是:第一个例子是把文件上传到了C盘upload文件夹内,而第二个例子是把文件上传到了发布项目的服务器上。

不借助第三方jar包实现文件上传相关推荐

  1. 在Servlet中使用开源fileupload包实现文件上传功能

    当我们在 HTML 表单中选择本地文件之后点击"提交"按钮则会将文件上传到服务器中,此时该 HTTP 请求正文的数据类型就是 multipart/form-data 型的.而在 S ...

  2. springmvc与Servlet3.0不依赖common包实现文件上传

    Servlet3.0以上的版本不再需要第三方组件Commons.io和commons-fileupload,可以使用@MultipartConfig注解在Servlet上进行配置上传,也可以在web. ...

  3. 使用commons-fileupload包实现文件上传

    首先,需要在pom文件中添加相关依赖 <dependency><groupId>commons-fileupload</groupId><artifactId ...

  4. maven使用中央仓库没有的jar包001---Maven自定义上传第三方包到3rd party(第三方无依赖jar和本地扩展类加入maven统一管理)

    Maven自定义上传第三方包到3rd party(第三方无依赖jar和本地扩展类加入maven统一管理) 注:如果图片太小,则可以下载查看,CSDN,不提供点击放大! 1:用浏览器登陆nexus服务器 ...

  5. Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  6. maven引用第三方jar包的解决方法

    目录 一.指定路径引用 二.先安装再引用 maven有两种引用第三方jar包的形式:一种是scope为system,直接指定jar路径引用:另一种是先安装到本地仓库再引用. 一.指定路径引用 要想直接 ...

  7. Maven 打包成第三方jar包且把pom依赖包打入进来的方法

    <Maven 打包成第三方jar包且把pom依赖包打入进来的方法> 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! <Maven 打包成第三方jar包且把po ...

  8. JSON+AJAX+ThreadLocal+文件上传下载

    文章目录 JSON和AJAX文档介绍 1. JSON介绍 1.1 JSON快速入门 1.2 JSON和字符串转换 1.2.1 JSON转字符串 1.2.2 字符串转JSON 1.2.3 JSON和字符 ...

  9. 文件上传与下载----SpringMVC

    文件上传 1.导入文件上传的jar包,commons-fileupload , Maven会自动帮我们导入他的依赖包 commons-io包: <!--文件上传--> <depend ...

  10. 使用JavaWeb将文件上传到后台服务器

    文件上传 1.面试:文件上传调优 上传的文件存放在一个不能使用外界URL访问的目录下面 上传到同一个文件夹中的文件名称应该唯一:使用时间戳/UUID/MD5等手段实现 限制上传文件的最大值:因为服务器 ...

最新文章

  1. 多线程:线程之间的协作(join、wait、notify、notifyAll、await、signal、signalAll)
  2. pycharm活动模板
  3. Elasticsearch SQL介绍及实例
  4. 为什么学习C语言这么久,看的懂代码,做不出题,写不出来项目?
  5. MySql中游标的定义与使用方式_数据库系列:MySql中游标的定义与使用方式
  6. c++ 一个函数包括多个返回值判断_go语言学习笔记(10)-函数、包的使用
  7. java addall 不能传null_null 之AddAll、Add和Boolean
  8. 使用HslCommunication实现PLC数据的远程客户端监视,以及web端实时监视,远程操作设备示例...
  9. note2 android4.3,三星N7100/note2官方4.3原版线刷版N7100ZCUENB1
  10. 什么是小托福考试?适合什么学生报考?
  11. 《听闻远方有你》简谱-刘均演唱
  12. 精读《磁贴布局 - 功能分析》
  13. 抖音康辉机器人_新闻联播主持康辉玩抖音,卖萌耍宝样样精通,观众为其点赞...
  14. flowchart图
  15. 【T+】删除/取消畅捷通T+软件登录界面右上角的授权单位等联系信息
  16. 达梦数据库——模式及状态转换
  17. SpringBoot国际化配置
  18. UDS诊断看这篇就够了,吐血整理
  19. DockerK8s---通过kubeadm快速部署K8s
  20. 按字母A——Z排列的中国城市(地级市)json数据

热门文章

  1. C++ 中map容器
  2. css 文本两端对齐终极解决方案--一丝冰凉
  3. Linux入门-安装篇(Debian 服务器版)
  4. [转帖]javascript做浮点数运算精确问题
  5. 017—mysql问答
  6. 多台服务之间共享Session
  7. zabbix利用sendEmail邮件报警
  8. JSF 2 dropdown box example
  9. Google I/O 2015开发者观赏指南
  10. php error file_get_contents()