项目结构
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)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# java文件上传下载demo
# JavaWeb Servlet实现文件上传与下载功能实例
# servlet实现文件上传与下载功能
# Servlet实现文件的上传与下载
# JavaServlet的文件上传和下载实现方法
# servlet实现文件上传、预览、下载、删除功能
# java基于servlet编写上传下载功能 类似文件服务器
# Servlet文件的上传与下载详解
# 不能超过
# 给大家
# 文件上传
# 上传
# 希望能
# 这篇
# 所要
# 表单
# 此种
# 小编
# 几项
# 大家多多
# 有错误
# 已读
# 临时文件
# 总长度
# 建文
# 按日
# W3C
# strong
相关文章:
,网站推广常用方法?
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何批量查询域名的建站时间记录?
已有域名和空间如何搭建网站?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
自助网站制作软件,个人如何自助建网站?
制作网站公司那家好,网络公司是做什么的?
广州建站公司哪家好?十大优质服务商推荐
广东专业制作网站有哪些,广东省能源集团有限公司官网?
,网页ppt怎么弄成自己的ppt?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何通过虚拟主机快速完成网站搭建?
如何在云虚拟主机上快速搭建个人网站?
如何生成腾讯云建站专用兑换码?
已有域名如何快速搭建专属网站?
历史网站制作软件,华为如何找回被删除的网站?
如何快速搭建FTP站点实现文件共享?
如何在建站主机中优化服务器配置?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
如何快速搭建高效可靠的建站解决方案?
如何快速启动建站代理加盟业务?
简单实现Android文件上传
建站之星如何开启自定义404页面避免用户流失?
如何在IIS7中新建站点?详细步骤解析
如何快速搭建高效服务器建站系统?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
建站之星代理如何优化在线客服效率?
建站之星CMS五站合一模板配置与SEO优化指南
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
建站之星后台密码如何安全设置与找回?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
高端企业智能建站程序:SEO优化与响应式模板定制开发
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
如何高效搭建专业期货交易平台网站?
电商平台网站制作流程,电商网站如何制作?
linux top下的 minerd 木马清除方法
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
南宁网站建设制作定制,南宁网站建设可以定制吗?
SQL查询语句优化的实用方法总结
建站之星如何助力企业快速打造五合一网站?
如何在阿里云服务器自主搭建网站?
免费视频制作网站,更新又快又好的免费电影网站?
网站代码制作软件有哪些,如何生成自己网站的代码?
智能起名网站制作软件有哪些,制作logo的软件?
C#如何使用XPathNavigator高效查询XML
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
建站之星在线版空间:自助建站+智能模板一键生成方案
文字头像制作网站推荐软件,醒图能自动配文字吗?
制作公司内部网站有哪些,内网如何建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。