分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

Servlet编程专题11之Servlet3.0特性实现文件上传

发布时间:2023-09-06 01:23责任编辑:赖小花关键词:文件上传

- 使用Servlet3.0实现文件上传,不需要借助第三方的jar包。

1、在index.jsp文件中编写文件上传的表单:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head><title>Insert title here</title><meta content="text/html; charset=UTF-8" http-equiv="Content-Type">  </head>  <body>  <form action="${pageContext.request.contextPath }/uploadServlet" method="POST" enctype="multipart/form-data">  文件:<input type="file" name="photo" /> <br>  <input type="submit" value="上传" />  </form>  </body></html>


2、需要在对应的自定义Servlet类中添加相应代码:

package com.geeklicreed.servlet;import java.io.IOException;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;@WebServlet("/uploadServlet")@MultipartConfig // 表明当前Servlet可以处理Multipart请求public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;public UploadServlet() {super();}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取服务器保存上传文件的目录路径String path = this.getServletContext().getRealPath("images");System.out.println(path);// 从请求中获取Multipart请求中的上传文件“部分”Part part = request.getPart("photo");//获取指定的头部属性String header = part.getHeader("Content-Disposition");System.out.println(header);int index = header.lastIndexOf("=");String fileName = header.substring(index + 2, header.length() - 1);System.out.println(fileName);fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);System.out.println(fileName);// 完成文件上传part.write(path + "/" + fileName);/*        我电脑中的输出结果为: C:\Users\Administrator\Workspaces\MyEclipse 2016 CI\.metadata\.me_tcat7\webapps\fileUpload\imagesform-data; name="photo"; filename="C:\Users\Administrator\Desktop\魔术格言.txt"C:\Users\Administrator\Desktop\魔术格言.txt魔术格言.txt */}}


-  代码解析:

-  javax.servlet.http.HttpServletRequest接口中的getPart(java.lang.String name)方法用于获取给定名称的Part对象:(即用<input type="file" name="photo"/>表单组件中的name属性来获取Part对象)

 PartgetPart(java.lang.String name)
Gets the Part with the given name.


-  javax.servlet.http.Part接口:

-  这个接口代表用于接收multipart/form-data POST请求的部分或者单项。(只用于Serlvet3.0)

This class represents a part or form item that was received within a multipart/form-data POST request.Since:Servlet 3.0


-  该接口中主要用到的方法为:

-  getHeader(java.lang.String name)方法:获取指定名称的请求头部信息,作为字符串返回。

java.lang.StringgetHeader(java.lang.String name)
Returns the value of the specified request header as a String.

-  write(java.lang.String fileName)方法:一个便捷的方法用于将上传的文件写入硬盘中。


 voidwrite(java.lang.String fileName)
A convenience method to write this uploaded item to disk.


3、在myEclipse自带的浏览器中访问index.jsp页面。可以看到,在运行的tomcat对应的硬盘目录中已经上传:

650) this.width=650;" src="https://s3.51cto.com/oss/201711/05/f92d3a94c4bcfae271edc568bd0edc59.png" title="截图01.png" alt="f92d3a94c4bcfae271edc568bd0edc59.png" />

650) this.width=650;" src="https://s1.51cto.com/oss/201711/05/ace22cd0fb3c2fea7fd154e604dd04b5.png" title="截图00.png" alt="ace22cd0fb3c2fea7fd154e604dd04b5.png" />


-  附加说明:

-  在myEclipse中,默认会把Web项目放到Eclipse的工作空间下的.metadata\.me_tcat7\webapps。(在myEclipse中指定服务器为tomcat7)

650) this.width=650;" src="https://s4.51cto.com/oss/201711/05/2a512995438df34204476471f6fcdce1.png" title="截图02.png" alt="2a512995438df34204476471f6fcdce1.png" />

本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1979155

Servlet编程专题11之Servlet3.0特性实现文件上传

原文地址:http://12402717.blog.51cto.com/12392717/1979155

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved