Struts2+Mysql图片上传-显示

刚学完Struts2的图片上传-显示,一点个人总结。

最后附上(上传,显示,修改,删除)的代码下载.

效果图:

思路:

        1. 确定保存图片的位置;

        2.获取文件名,并修改文件名(因为存在文件名重复而出现的报错或文件覆盖的可能,所以在将文件名保存到数据库前,先修改)

        3. 上传文件到服务器(指定位置)

        4. 将文件名存入数据库;

实现:

        1.   建一个简单的表

        2. 创建实体类

public class EmpEntity implements Serializable{
    //前三个对应数据库表中的字段
    private int eid;
    private String ename;
    private String eimg; // 文件上传后的路径或新名

    // 得到文件上传对象
    private File img;
    // 得到上传文件的原名(命名:名+FileName)
    private String imgFileName;
    
    /*
     *Get和Set方法省略
     */

}

        3. 上传图片的jsp页面(使用的是s标签)

        4.action类

public class EmpAction3 {
	private EmpService service = new EmpImpl();
	
	private List<EmpEntity> empList;
	private EmpEntity emp;
	private int id;

	// 保存的要上传到的路径(upload是web项目与WEB-INF同级的一个文件夹)
	private String imgPath = ServletActionContext.getRequest().getSession().getServletContext().getRealPath("upload");
	
	
	// 添加
	public String add() {
		// 改原文件名
		String newFileName = UpdateFileName.updateOldFileName(emp.getImgFileName());

		// 上传
		File file = new File(imgPath, newFileName);
		try {
			FileUtils.copyFile(emp.getImg(), file);
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 封装新文件名
		emp.setEimg(newFileName);

		// 存库,调用添加方法
		this.service.add(emp);

		return this.all();
	}
}

        

package com.ljm.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

public class UpdateFileName {
	public static String updateOldFileName(String imgFileName) {
                //获取文件后缀名
		String lastOldFileName = imgFileName.substring(imgFileName.lastIndexOf("."));
                //获取并格式化系统时间
		String time = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
                //生成一个随机数
		int num = new Random().nextInt(99999);
                //返回新文件名
		return time+num+lastOldFileName;
	}
}

5. 存入数据库(使用的是JDBC)

package com.ljm.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.ljm.entity.EmpEntity;
import com.ljm.util.DBConnection;

public class EmpDAO {

	private Connection conn = null;
	private PreparedStatement pre = null;
	private ResultSet rs = null;

	private DBConnection dbc;

	public EmpDAO() {
		dbc = new DBConnection();
	}

	// 添加
	public void add(EmpEntity emp) {
		try {
			conn = dbc.getConn();
			String sql = "insert into empImg values(null,?,?)";
			pre = conn.prepareStatement(sql);
			pre.setString(1, emp.getEname());
			pre.setString(2, emp.getEimg());
			pre.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			dbc.colseConn(rs, pre, conn);
		}
	}
}

6.显示,直接上代码(从数据库到页面)

package com.ljm.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.ljm.entity.EmpEntity;
import com.ljm.util.DBConnection;

public class EmpDAO {

	private Connection conn = null;
	private PreparedStatement pre = null;
	private ResultSet rs = null;

	private DBConnection dbc;

	public EmpDAO() {
		dbc = new DBConnection();
	}

	// 查询所有
	public List<EmpEntity> getAll() {
		List<EmpEntity> list = new ArrayList<EmpEntity>();
		EmpEntity entity = null;

		try {
			conn = dbc.getConn();
			String sql = "select * from empImg";
			pre = conn.prepareStatement(sql);
			rs = pre.executeQuery();
			while (rs.next()) {
				entity = new EmpEntity();
				entity.setEid(rs.getInt("eid"));
				entity.setEname(rs.getString("ename"));
				entity.setEimg(rs.getString("eimg"));
				list.add(entity);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			dbc.colseConn(rs, pre, conn);
		}

		return list;
	}
}
package com.ljm.action;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.ljm.entity.EmpEntity;
import com.ljm.impl.EmpImpl;
import com.ljm.service.EmpService;
import com.ljm.util.UpdateFileName;

public class EmpAction3 {
	private EmpService service = new EmpImpl();
	
	private List<EmpEntity> empList;
	private EmpEntity emp;
	private int id;

	// 保存的要上传到的路径
	private String imgPath = ServletActionContext.getRequest().getSession().getServletContext().getRealPath("upload");
	

	// 全查詢
	public String all() {
		this.empList = this.service.getAll();
		return "all";
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link href="${pageContext.request.contextPath}/css/css1.css" rel="stylesheet" type="text/css"/>
</head>
<body>
	<table align="center">
		<tr>
			<td>编号</td>
			<td>姓名</td>
			<td>头像</td>
			<td>编辑</td>
			<td>删除</td>
		</tr>
		<s:iterator id="em" value="empList">
			<tr>
				<td>${em.eid}</td>
				<td>${em.ename}</td>
				<td><img alt="头像" style="width: 80px; height: 80px;"
					src="${pageContext.request.contextPath}/upload/${em.eimg}"></td>
				<td><a href="${pageContext.request.contextPath}/emp_one.action?id=${em.eid}">编辑</a></td>
				<td><a href="${pageContext.request.contextPath}/emp_del.action?id=${em.eid}">删除</a></td>
			</tr>
		</s:iterator>
		<tr>
			<td colspan="5">
				<a href="${pageContext.request.contextPath}/emp/add.jsp">新增</a>
			</td>
		</tr>
	</table>
</body>
</html>

7.最后是struts.xml

源码下载:链接: https://pan.baidu.com/s/1G53DZi0nBiBA1snbQhHlRw 密码: wsig

猜你喜欢

转载自blog.csdn.net/weixin_38816084/article/details/81120624