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
packagecom.servletdemo;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*ServletimplementationclassShowServlet
*/
@WebServlet("/ShowServlet")
publicclassShowServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
PrintWriterpw=null;
/**
*@seeHttpServlet#HttpServlet()
*/
publicShowServlet(){
super();
//TODOAuto-generatedconstructorstub
}
/**
*@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponseresponse)
*/
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
this.doPost(request,response);
}
/**
*@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponseresponse)
*/
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
request.setCharacterEncoding("gb2312");
response.setContentType("text/html;charset=gb2312");
pw=response.getWriter();
Stringname=request.getParameter("username");
Stringpassword=request.getParameter("password");
pw.println("username:"+name);
pw.println("
");
pw.println("userpassword:"+password);
}
}
input.jsp
<%@pagelanguage="java"contentType="text/html;charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>servletdemo /ShowServlet">
name password
2.文件上传实例
UploadServlet.java
packagecom.servletdemo;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.io.PrintWriter;
importjava.text.DateFormat;
importjava.util.Date;
importjava.util.List;
importjava.util.UUID;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.commons.fileupload.FileItem;
importorg.apache.commons.fileupload.FileUploadException;
importorg.apache.commons.fileupload.ProgressListener;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;
/**
*ServletimplementationclassUploadServlet
*/
@WebServlet("/servlet/UploadServlet")
publicclassUploadServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
/**
*@seeHttpServlet#HttpServlet()
*/
publicUploadServlet(){
super();
//TODOAuto-generatedconstructorstub
}
/**
*@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponseresponse)
*/
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
//设置编码
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriterpw=response.getWriter();
try{
//设置系统环境
DiskFileItemFactoryfactory=newDiskFileItemFactory();
//文件存储的路径
StringstorePath=getServletContext().getRealPath("/WEB-INF/files");
//判断传输方式formenctype=multipart/form-data
booleanisMultipart=ServletFileUpload.isMultipartContent(request);
if(!isMultipart)
{
pw.write("传输方式有错误!");
return;
}
ServletFileUploadupload=newServletFileUpload(factory);
upload.setFileSizeMax(4*1024*1024);//设置单个文件大小不能超过4M
upload.setSizeMax(4*1024*1024);//设置总文件上传大小不能超过6M
//监听上传进度
upload.setProgressListener(newProgressListener(){
//pBytesRead:当前以读取到的字节数
//pContentLength:文件的长度
//pItems:第几项
publicvoidupdate(longpBytesRead,longpContentLength,
intpItems){
System.out.println("已读去文件字节:"+pBytesRead+"文件总长度:"+pContentLength+"第"+pItems+"项");
}
});
//解析
Listitems=upload.parseRequest(request);
for(FileItemitem:items)
{
if(item.isFormField())//普通字段,表单提交过来的
{
Stringname=item.getFieldName();
Stringvalue=item.getString("UTF-8");
System.out.println(name+"=="+value);
}else
{
//StringmimeType=item.getContentType();获取上传文件类型
//if(mimeType.startsWith("image")){
InputStreamin=item.getInputStream();
StringfileName=item.getName();
if(fileName==null||"".equals(fileName.trim()))
{
continue;
}
fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
fileName=UUID.randomUUID()+"_"+fileName;
//按日期来建文件夹
StringnewStorePath=makeStorePath(storePath);
StringstoreFile=newStorePath+"\\"+fileName;
OutputStreamout=newFileOutputStream(storeFile);
byte[]b=newbyte[1024];
intlen=-1;
while((len=in.read(b))!=-1)
{
out.write(b,0,len);
}
in.close();
out.close();
item.delete();//删除临时文件
}
}
//}
}catch(org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededExceptione){
//单个文件超出异常
pw.write("单个文件不能超过4M");
}catch(org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededExceptione){
//总文件超出异常
pw.write("总文件不能超过6M");
}catch(FileUploadExceptione){
e.printStackTrace();
}
}
/**
*@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponseresponse)
*/
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
doGet(request,response);
}
privateStringmakeStorePath(StringstorePath){
Datedate=newDate();
DateFormatdf=DateFormat.getDateInstance(DateFormat.MEDIUM);
Strings=df.format(date);
Stringpath=storePath+"\\"+s;
Filefile=newFile(path);
if(!file.exists())
{
file.mkdirs();//创建多级目录,mkdir只创建一级目录
}
returnpath;
}
privateStringmakeStorePath2(StringstorePath,StringfileName){
inthashCode=fileName.hashCode();
intdir1=hashCode&0xf;//0000~1111:整数0~15共16个
intdir2=(hashCode&0xf0)>>4;//0000~1111:整数0~15共16个
Stringpath=storePath+"\\"+dir1+"\\"+dir2;//WEB-INF/files/1/12
Filefile=newFile(path);
if(!file.exists())
file.mkdirs();
returnpath;
}
}
fileupload.jsp
<%@pagelanguage="java"contentType="text/html;charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>UploadFileDemo username
3.文件下载实例
DownloadServlet.java
packagecom.servletdemo;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.io.PrintWriter;
importjava.net.URLEncoder;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.ServletResponse;
/**
*ServletimplementationclassDownloadServlet
*/
@WebServlet("/DownloadServlet")
publicclassDownloadServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
/**
*@seeHttpServlet#HttpServlet()
*/
publicDownloadServlet(){
super();
//TODOAuto-generatedconstructorstub
}
/**
*@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponseresponse)
*/
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
download1(response);
}
/**
*@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponseresponse)
*/
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
doGet(request,response);
}
publicvoiddownload1(HttpServletResponseresponse)throwsIOException{
//获取所要下载文件的路径
Stringpath=this.getServletContext().getRealPath("/files/web配置.xml");
StringrealPath=path.substring(path.lastIndexOf("\\")+1);
//告诉浏览器是以下载的方法获取到资源
//告诉浏览器以此种编码来解析URLEncoder.encode(realPath,"utf-8"))
response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(realPath,"utf-8"));
//获取到所下载的资源
FileInputStreamfis=newFileInputStream(path);
intlen=0;
byte[]buf=newbyte[1024];
while((len=fis.read(buf))!=-1){
response.getOutputStream().write(buf,0,len);
}
}
}
download.html
DownloadDemo download
以上这篇JavaServlet简单实例分享(文件上传下载demo)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。