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)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。