文件图片的上传需要用到commons-fileupload-1.4.jar和commons-io-2.6.jar两个包 数据库值保存的是图片的路径实际图片在项目中
实体类
public class User {
private int id;
private String name;
private String imgurl;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImgurl() {
return imgurl;
}
public void setImgurl(String imgurl) {
this.imgurl = imgurl;
}
}
DBUtils
package JDBC;
import java.sql.*;
public class DBUtils {
//连接数据库--获取连接
public static Connection getConn(){
//MySQL8.0
// String driverName = "com.mysql.cj.jdbc.Driver";
// String url = "jdbc:mysql://localhost:3306/test_demo?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
//MySQL5.0
String driverName = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
Connection conn = null;
try {
//1.加载(注册)JDBC驱动
Class.forName(driverName);
//2.获取链接
conn = DriverManager.getConnection(url, user, password);//连接对象(缆绳)
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//连接数据库--释放资源
public static void closeAll(ResultSet rs, Statement stmt, Connection conn){
try {
if(rs != null) {
rs.close();
}
if(stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Dao
public class Userdao {
//添加图片
public static boolean addUser(User user){
boolean flag=false;
Connection conn = DBUtils.getConn();
PreparedStatement ptmt = null;
String sql="insert into tup(name,url) values(?,?)";
try {
ptmt=conn.prepareStatement(sql);
ptmt.setString(1,user.getName());
ptmt.setString(2,user.getImgurl());
int a = ptmt.executeUpdate();
if (a != 0){
flag = true;
}
DBUtils.closeAll(null, ptmt, conn);
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
}
//显示图片
public static List<User> findAll() {
List<User> list =new ArrayList<User>();
String sql="select * from tup";
Connection conn = DBUtils.getConn();
PreparedStatement ptmt = null;
try {
ptmt= conn.prepareStatement(sql);
ResultSet rs=ptmt.executeQuery();
while(rs.next()){
User u=new User();
u.setId(rs.getInt(1));
u.setName(rs.getString(2));
u.setImgurl(rs.getString(3));
list.add(u);
}
DBUtils.closeAll(rs, ptmt, conn);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
Servlet 上传图片 保存图片的绝对路径
@WebServlet(name = "InertmServlet",urlPatterns="/Inertm")
//没有@则无法处理parts
@MultipartConfig
public class InertmServlet 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();
//给定路径在web下创建imags文件夹
String path = request.getServletContext().getRealPath("\\images");
System.out.println(path);
//获取一个文件或图片
Part part = request.getPart("upload");
//获取文件名字
String fname = part.getSubmittedFileName();
//通过文件的名字获得文件类型取.后面
String suffix = fname.substring(fname.lastIndexOf("."));
//UUID类可得到随机文件名字加上文件类型
fname = UUID.randomUUID()+suffix;
//加载到指定位置 将随机名字的图片加载到images指定为位置
part.write(path + File.separator + fname);
//获得网页名字
String name = request.getParameter("user");
//创建实例类
User user =new User();
user.setName(name);
user.setImgurl(fname);
//调用dao类判断
boolean f = Userdao.addUser(user);
if (f){
out.println("<h3 align=center>添加成功</h3>");
out.println("<h3 align=center><a href='xian.jsp'>查看用户列表</a></h3>");
}else {
out.println("添加失败");
out.println("<h3 align=center><a href='xian.jsp'>查看用户列表</a></h3>");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
网页
上传界面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="Inertm" method="post" enctype="multipart/form-data" >
名称:<input type="text" id="user" name="user"><br>
图片:<input class="fileInput" id="file" type="file" name="upload" />
<input type="submit" value="提交" />
</form>
</body>
</html>
显示界面
<%@ page import="pojo.Userdao" %>
<%@ page import="pojo.User" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2020/12/17
Time: 14:48
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>显示</title>
</head>
<body>
<%
Userdao dao = new Userdao();
List<User> list=dao.findAll();
%>
<table border="1">
<tr>
<td>名称</td>
<td>图片</td>
</tr>
<%
for(User u:list){
%>
<tr>
<td><%=u.getName()%></td>
<td><img style="width:50px;height:50px" src="images/<%=u.getImgurl()%>"></img></td>
</tr>
<% }%>
</table>
</body>
</html>
数据库类型