项目结构
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("<br>"); pw.println("user password:" + password); } }
input.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>servlet demo</title> </head> <body> <form action="<%=request.getContextPath()%>/ShowServlet"> <table> <tr> <td>name</td> <td><input type="text" name="username"></td> </tr> <tr> <td>password</td> <td><input type="text" name="password"></td> </tr> <tr> <td><input type="submit" value="login"></td> <td><input type="reset" value="cancel"></td> </tr> </table> </form> </body> </html>
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<FileItem> 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
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Upload File Demo</title> </head> <body> <form action="${pageContext.request.contextPath}/servlet/UploadServlet" method="post" enctype="multipart/form-data"> user name<input type="text" name="username"/> <br/> <input type="file" name="f1"/><br/> <input type="file" name="f2"/><br/> <input type="submit" value="save"/> </form> </body> </html>
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
<!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Download Demo</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> <a href = "/JavabeanDemo/DownloadServlet">download</a> </body> </html>
以上这篇Java Servlet简单实例分享(文件上传下载demo)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍JavaServlet的文件上传和下载实现方法,包括了JavaServlet的文件上传和下载实现方法的使用技巧和注意事项,需要的朋友参考一下 先分析一下上传文件的流程 1-先通过前段页面中的选择文件选择要上传的图片 index.jsp 2-点击提交按钮,通过ajax的文件上传访问服务器端 common.js 3-服务器端响应保存或者下载 保存上传文件的FileUpload.jav
本文向大家介绍python实现的简单FTP上传下载文件实例,包括了python实现的简单FTP上传下载文件实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现的简单FTP上传下载文件的方法。分享给大家供大家参考。具体如下: python本身自带一个FTP模块,可以实现上传下载的函数功能。 希望本文所述对大家的Python程序设计有所帮助。
本文向大家介绍java webservice上传下载文件代码分享,包括了java webservice上传下载文件代码分享的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java webservice上传下载文件代码,供大家参考,具体内容如下 1、新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress 2、发布测试webservice(ec
本文向大家介绍PHP实现文件上传下载实例,包括了PHP实现文件上传下载实例的使用技巧和注意事项,需要的朋友参考一下 本文介绍了PHP实现文件上传与下载,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧。 一、上传原理与配置 1.1 原理 将客户端文件上传到服务器端,再将服务器端的文件(临时文件)移动到指定目录即可。 1.2 客户端配置 所需:表单页面(选择上传文件); 具体而言:发送方式
本文向大家介绍java文件上传下载代码实例,包括了java文件上传下载代码实例的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java文件上传下载的具体代码,供大家参考,具体内容如下 文件上传 文件下载 以上所述是小编给大家介绍的java文件上传下载详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!
本文向大家介绍PHP文件操作实例总结【文件上传、下载、分页】,包括了PHP文件操作实例总结【文件上传、下载、分页】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP文件操作。分享给大家供大家参考,具体如下: 1、文件上传 上传域: input type="file" 普通文本框(text、password、textarea、radio、checkbox等):通过字节流的形式将数据提交到