javaweb项目,创建tomcat图片服务器,用于保存用户上传的头像等图片信息。前期项目的新建和正常访问的调试不再说明,本文章仅讲解如何创建一个图片服务器。
1、WebContent下新建imgFile.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% String path = request.getContextPath();%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="<%=path %>/UploadFile" enctype="multipart/form-data" method="post">
<input type="file" name="imgname">
<input type="submit" value="提交" >
</form>
<img src="http://localhost:8081/img/${fileName}"> //显示上传的图片文件
</body>
</html>
2、src\com\servlet下,新建 UploadFile.java
package com.servlet;
import java.io.IOException;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/UploadFile")
@MultipartConfig
public class UploadFile extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Part part = request.getPart("imgname"); //得到上传的图片对象
System.out.println(part.getSubmittedFileName()); //输出上传图片原名称
//通过UUID.randomUUID()与图片原名称拼接,使得存储的图片名称始终唯一,避免冲突
//fileName 即为最终存入数据库字段值
String fileName = UUID.randomUUID() + part.getSubmittedFileName();
System.out.println(fileName);
//将图片上传到图片服务器,保存在图片服务器webapps\img文件夹中
part.write("E:\\Program Files (x86)\\apache-tomcat-8.5.69-files\\webapps\\img\\" + fileName);
//request携带filename,使得imgFile.jsp中src显示上传的图片
request.setAttribute("fileName", fileName);
//上传成功后,跳转到imgFile.jsp
request.getRequestDispatcher("./imgFile.jsp").forward(request,response);
}
}
3、配置tomcat图片服务器
1)解压并修改文件夹名称
解压项目服务器相同tomcat压缩包,并修改解压后文件夹名称,如apache-tomcat-8.5.69-files
2)修改端口号
为避免该图片服务器和项目服务器端口号重复,导致无法正产启动,需要修改文件服务器的端口号配置。修改apache-tomcat-8.5.69-files\conf下server.xml文件中的端口号,在原有基础上均+1即可:8005-->8006、8080-->8081、8009-->8010
3)webapps新建img文件夹,用于存放用户上传的图片
apache-tomcat-8.5.69-files的webapps下新建img文件夹,用来存放用户上传的图片
4)启动图片服务器
(1) 双击apache-tomcat-8.5.69-files\bin的startup.bat文件,启动图片服务器。项目访问期间,该图片服务器需要一直保持开启状态
(2)若双击bat文件启动失败,出现闪退现象,需要另行配置环境变量
①新建环境变量JAVA_HOME,值为jdk安装目录,如C:\java\jdk1.8.0_121
②新建环境变量JRE_HOME,值为jre安装目录,如C:\java\jdk1.8.0_121\jre
4、启动javaweb项目,测试功能
图片1 用户上传图片
图片2 上传图片保存于img文件夹下
图片3 跳转至页面 imgFile.jsp,并显示上次上传的图片
5、补充
本次暂不实现从数据库获取图片名称,根据用户动态显示图片功能。如果大家有兴趣,可以先试试。基本思路是将 UUID.randomUUID() + part.getSubmittedFileName() 拼接得到的fileName存入或更新数据库对应字段,显示页面对应控件值设置为http://localhost:8081/img/fileName
6、推荐课程
JSP+Servlet+MySql+Tomcat+JDBC项目详细讲解_哔哩哔哩_bilibili