java 上传下载demo_Java Servlet简单实例分享(文件上传下载demo)

项目结构

src

com

servletdemo

DownloadServlet.java

ShowServlet.java

UploadServlet.java

WebContent

jsp

servlet

download.html

fileupload.jsp

input.jsp

WEB-INF

lib

commons-fileupload-1.3.1.jar

commons-io-2.4.jar

1.简单实例

ShowServlet.java

package com.servletdemo;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Servlet implementation class ShowServlet

*/

@WebServlet("/ShowServlet")

public class ShowServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

PrintWriter pw=null;

/**

* @see HttpServlet#HttpServlet()

*/

public ShowServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("gb2312");

response.setContentType("text/html;charset=gb2312");

pw=response.getWriter();

String name=request.getParameter("username");

String password=request.getParameter("password");

pw.println("user name:" + name);

pw.println("
");

pw.println("user password:" + password);

}

}

input.jsp

pageEncoding="ISO-8859-1"%>

servlet demo
name
password

2.文件上传实例

UploadServlet.java

package com.servletdemo;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.text.DateFormat;

import java.util.Date;

import java.util.List;

import java.util.UUID;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

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.FileUploadException;

import org.apache.commons.fileupload.ProgressListener;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**

* Servlet implementation class UploadServlet

*/

@WebServlet("/servlet/UploadServlet")

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public UploadServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//设置编码

request.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

PrintWriter pw = response.getWriter();

try {

//设置系统环境

DiskFileItemFactory factory = new DiskFileItemFactory();

//文件存储的路径

String storePath = getServletContext().getRealPath("/WEB-INF/files");

//判断传输方式 form enctype=multipart/form-data

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

if(!isMultipart)

{

pw.write("传输方式有错误!");

return;

}

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setFileSizeMax(4*1024*1024);//设置单个文件大小不能超过4M

upload.setSizeMax(4*1024*1024);//设置总文件上传大小不能超过6M

//监听上传进度

upload.setProgressListener(new ProgressListener() {

//pBytesRead:当前以读取到的字节数

//pContentLength:文件的长度

//pItems:第几项

public void update(long pBytesRead, long pContentLength,

int pItems) {

System.out.println("已读去文件字节 :"+pBytesRead+" 文件总长度:"+pContentLength+" 第"+pItems+"项");

}

});

//解析

List items = upload.parseRequest(request);

for(FileItem item: items)

{

if(item.isFormField())//普通字段,表单提交过来的

{

String name = item.getFieldName();

String value = item.getString("UTF-8");

System.out.println(name+"=="+value);

}else

{

// String mimeType = item.getContentType(); 获取上传文件类型

// if(mimeType.startsWith("image")){

InputStream in =item.getInputStream();

String fileName = item.getName();

if(fileName==null || "".equals(fileName.trim()))

{

continue;

}

fileName = fileName.substring(fileName.lastIndexOf("\\")+1);

fileName = UUID.randomUUID()+"_"+fileName;

//按日期来建文件夹

String newStorePath = makeStorePath(storePath);

String storeFile = newStorePath+"\\"+fileName;

OutputStream out = new FileOutputStream(storeFile);

byte[] b = new byte[1024];

int len = -1;

while((len = in.read(b))!=-1)

{

out.write(b,0,len);

}

in.close();

out.close();

item.delete();//删除临时文件

}

}

// }

}catch(org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException e){

//单个文件超出异常

pw.write("单个文件不能超过4M");

}catch(org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException e){

//总文件超出异常

pw.write("总文件不能超过6M");

}catch (FileUploadException e) {

e.printStackTrace();

}

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

private String makeStorePath(String storePath) {

Date date = new Date();

DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);

String s = df.format(date);

String path = storePath+"\\"+s;

File file = new File(path);

if(!file.exists())

{

file.mkdirs();//创建多级目录,mkdir只创建一级目录

}

return path;

}

private String makeStorePath2(String storePath, String fileName) {

int hashCode = fileName.hashCode();

int dir1 = hashCode & 0xf;// 0000~1111:整数0~15共16个

int dir2 = (hashCode & 0xf0) >> 4;// 0000~1111:整数0~15共16个

String path = storePath + "\\" + dir1 + "\\" + dir2; // WEB-INF/files/1/12

File file = new File(path);

if (!file.exists())

file.mkdirs();

return path;

}

}

fileupload.jsp

pageEncoding="ISO-8859-1"%>

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

Upload File Demo

user name

3.文件下载实例

DownloadServlet.java

package com.servletdemo;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.URLEncoder;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletResponse;

/**

* Servlet implementation class DownloadServlet

*/

@WebServlet("/DownloadServlet")

public class DownloadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public DownloadServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

download1(response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

public void download1(HttpServletResponse response) throws IOException{

//获取所要下载文件的路径

String path = this.getServletContext().getRealPath("/files/web配置.xml");

String realPath = path.substring(path.lastIndexOf("\\")+1);

//告诉浏览器是以下载的方法获取到资源

//告诉浏览器以此种编码来解析URLEncoder.encode(realPath, "utf-8"))

response.setHeader("content-disposition","attachment; filename="+URLEncoder.encode(realPath, "utf-8"));

//获取到所下载的资源

FileInputStream fis = new FileInputStream(path);

int len = 0;

byte [] buf = new byte[1024];

while((len=fis.read(buf))!=-1){

response.getOutputStream().write(buf,0,len);

}

}

}

download.html

Download Demo

download

以上这篇Java Servlet简单实例分享(文件上传下载demo)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值