下面是Java Servlet简单实例分享的完整攻略。
1. 创建Java Web工程
在Eclipse中创建一个新的Java Web工程,命名为FileUploadDownloadDemo。
2. 添加servlet-api依赖
右键工程 -> Properties -> Java Build Path -> Libraries -> Add Library -> 选择Servlet API。
3. 创建文件上传的Servlet
3.1 在src目录下创建UploadServlet.java
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 获取文件域
Part part = request.getPart("file");
// 获取上传的文件名
String fileName = part.getSubmittedFileName();
// 获取保存路径
String savePath = request.getServletContext().getRealPath("/upload/");
// 创建上传文件夹
File fileDir = new File(savePath);
if(!fileDir.exists()) {
fileDir.mkdir();
}
try {
// 写入文件
part.write(savePath + fileName);
out.println("<h2>上传成功</h2>");
} catch (IOException e) {
e.printStackTrace();
out.println("<h2>上传失败</h2>");
}
}
}
3.2 在web.xml文件中添加Servlet映射
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.example.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
4. 创建文件下载的Servlet
4.1 在src目录下创建DownloadServlet.java
@WebServlet("/download")
public class DownloadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// 获取下载的文件名
String fileName = request.getParameter("fileName");
// 获取要下载的文件
String filePath = request.getServletContext().getRealPath("/upload/" + fileName);
File file = new File(filePath);
if(file.exists()) {
// 设置响应头
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "utf-8"));
response.setContentType("application/octet-stream");
// 读取文件
InputStream in = new FileInputStream(filePath);
OutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}
in.close();
out.close();
} else {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<h2>文件不存在</h2>");
out.close();
}
}
}
4.2 在web.xml文件中添加Servlet映射
<servlet>
<servlet-name>DownloadServlet</servlet-name>
<servlet-class>com.example.DownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadServlet</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>
5. 创建文件上传下载的JSP页面
5.1 在WebContent目录下创建文件上传下载的JSP页面 index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传下载Demo</title>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="file"><br>
<input type="submit" value="上传">
</form>
<hr>
文件列表:<br>
<%
String directory = request.getServletContext().getRealPath("/upload/");
File file = new File(directory);
if (!file.exists()) {
file.mkdir();
}
String[] fileNames = file.list();
if(fileNames != null && fileNames.length > 0) {
for (String fileName : fileNames) {
out.println("<a href='download?fileName=" + fileName + "'>" + fileName + "</a><br>");
}
} else {
out.println("<h2>暂无文件</h2>");
}
%>
</body>
</html>
5.2 运行工程
右键工程 -> Run As -> Run on Server,选择Tomcat服务器,启动工程。
示例1:上传文件演示
-
打开网址:
http://localhost:8080/FileUploadDownloadDemo/
-
在“上传文件”一栏中选取一个文件,点击“上传”按钮。
-
上传成功后,会显示“上传成功”。
-
在“文件列表”一栏中,会显示已上传的文件名。
示例2:下载文件演示
-
在文件列表中选取一份已上传的文件,点击文件名。
-
弹出下载保存对话框。
-
下载完成后,打开文件验证。
至此,Java Servlet文件上传下载的简单实例演示完成。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Servlet简单实例分享(文件上传下载demo) - Python技术站