这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
下面小编就为大家带来一篇 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("<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) 就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ。
来源: http://www.phperz.com/article/17/0819/338539.html