Jsp+Servlet实现文件上传下载(三)--删除上传文件
接着上一篇讲:
Jsp+Servlet实现文件上传下载(二)--文件列表展示点击打开链接
本章来实现一下删除已上传文件,同时优化了一下第一章中的代码。
废话少说,上代码
--------------------------------------------------------分割线---------------------------------------------------------------------------------
1.调整列表页面list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>上传文件列表</title>
</head>
<body>
<h3>文件列表</h3>
<table class="acclist_tab" border="1" bordercolor="#000000" cellspacing="0" cellpadding="2" style="border-collapse:collapse;">
<tr>
<th>文件名</th>
<th>文件大小(KB)</th>
<th>操作</th>
</tr>
<c:if test="${not empty accessoryList}">
<c:forEach items="${accessoryList}" var="acc">
<tr>
<td>${acc.fileName}</td>
<td>${acc.fileSize}</td>
<td><a href="<%=request.getContextPath()%>/removeUploadedFile?id=${acc.id}">删除</a></td>
</tr>
</c:forEach>
</c:if>
</table>
</body>
</html>
2.新增FileUtils工具类
package util;
import java.io.File;
/**
* 文件操作工具类
*
* @author xusucheng
* @create 2017-12-30
**/
public class FileUtils {
public static boolean delete(String path){
File file = new File(path);
if(!file.isFile()){
System.out.println("删除失败,文件:"+path+"不存在!");
return false;
}
file.delete();
return true;
}
}
3.调整附件实体DAO,新增load方法
package dao.upload;
import entity.upload.EntityAccessory;
import util.DBUtil;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* 附件上传DAO
*
* @author xusucheng
* @create 2017-12-29
**/
public class AccessoryDao {
public static void add(EntityAccessory entity) {
Connection conn = DBUtil.getConnection();
String sql = "insert into tbl_accessory(file_name,file_size,file_ext_name,file_path) values(?,?,?,?)";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, entity.getFileName());
ps.setDouble(2, entity.getFileSize());
ps.setString(3, entity.getFile_ext_name());
ps.setString(4, entity.getFilePath());
ps.execute();
//conn.commit();
DBUtil.close(null, ps, conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static List<EntityAccessory> list() {
Connection conn = DBUtil.getConnection();
String sql = "select id,file_name,file_size,file_ext_name,file_path from tbl_accessory";
List<EntityAccessory> accessoryList = new ArrayList<>();
try {
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
EntityAccessory entity = new EntityAccessory();
entity.setId(rs.getInt("id"));
entity.setFileName(rs.getString("file_name"));
entity.setFileSize(new BigDecimal(rs.getDouble("file_size") / 1024).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
entity.setFile_ext_name(rs.getString("file_ext_name"));
entity.setFilePath(rs.getString("file_path"));
accessoryList.add(entity);
}
DBUtil.close(rs, ps, conn);
} catch (SQLException e) {
e.printStackTrace();
}
return accessoryList;
}
public static EntityAccessory load(int id){
Connection conn = DBUtil.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
EntityAccessory entity = new EntityAccessory();
String sql = "select id, file_name,file_size,file_ext_name,file_path from tbl_accessory where id=?";
try {
ps = conn.prepareStatement(sql);
ps.setInt(1,id);
rs = ps.executeQuery();
while (rs.next()){
entity.setId(rs.getInt("id"));
entity.setFileName(rs.getString("file_name"));
entity.setFileSize(rs.getDouble("file_size"));
entity.setFile_ext_name(rs.getString("file_ext_name"));
entity.setFilePath(rs.getString("file_path"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(rs,ps,conn);
}
return entity;
}
public static void remove(int id) {
Connection conn = DBUtil.getConnection();
String sql = "delete from tbl_accessory where id=?";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,id);
ps.execute();
//conn.commit(); mysql默认开启了autocommit
DBUtil.close(null,ps,conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
4.新增删除文件处理器,removeUploadedFileServlet
package servlet.upload;
import dao.upload.AccessoryDao;
import entity.upload.EntityAccessory;
import util.FileUtils;
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 java.io.IOException;
/**
* 删除已上传文件
*
* @author xusucheng
* @create 2017-12-30
**/
@WebServlet("/removeUploadedFile")
public class removeUploadedFileServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//String filePath = request.getParameter("filePath");
int fileId = Integer.valueOf(request.getParameter("id"));
EntityAccessory entity = AccessoryDao.load(fileId);
//删除文件
FileUtils.delete(entity.getFilePath());
//删除数据库记录
AccessoryDao.remove(fileId);
//跳回到文件列表页
//request.getRequestDispatcher("listUploadedFiles").forward(request, response);
response.sendRedirect("listUploadedFiles");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
5.测试效果截图
删除前:
删除后:
6.下集预告
实现文件下载功能
Jsp+Servlet实现文件上传下载(三)--删除上传文件的更多相关文章
- Java 客户端操作 FastDFS 实现文件上传下载替换删除
FastDFS 的作者余庆先生已经为我们开发好了 Java 对应的 SDK.这里需要解释一下:作者余庆并没有及时更新最新的 Java SDK 至 Maven 中央仓库,目前中央仓库最新版仍旧是 1.2 ...
- jsp上传下载+SmartUpload插件上传
使用之前须要自己下载jspSmartUpload.jar包 这里找到一个支持中文的jar包,下载地址例如以下: http://www.blogjava.net/Files/hijackwust/jsm ...
- SpringBoot集成基于tobato的fastdfs-client实现文件上传下载和删除
1. 简介 基于tobato的fastdfs-client是一个功能完善的FastDFS客户端工具,它是在FastDFS作者YuQing发布的客户端基础上进行了大量的重构,提供了上传.下载.删除. ...
- minio实现文件上传下载和删除功能
https://blog.csdn.net/tc979907461/article/details/106673570?utm_medium=distribute.pc_relevant_t0.non ...
- python2.7 操作ceph-cluster S3对象接口 实现: 上传 下载 查询 删除 顺便使用Docker装个owncloud 实现UI管理
python version: python2.7 需要安装得轮子: botofilechunkio command: yum install python-pip&& pip ...
- 《DotNet Web应用单文件部署系列》三、混淆dll文件
众所周知,C#编译后的dll文件可被反编译,网上搜索"C# 反编译"会出现一大堆资料.为了提高反编译成本,我们必须对dll文件进行混淆处理. 目前,C#混淆工具很多,我推荐obfu ...
- [原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- SpringMVC中使用 MultipartFile 进行文件上传下载及删除
一:引入必要的包 <!--文件上传--> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fil ...
- silverlight webclient实现上传、下载、删除、读取文件
1.上传 private void Button_Click_1(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = ...
- webDAV服务的开启以及客户端的上传、下载、删除、新建文件夾、列表的代码(C#)
windows server 2003开启webDAV服务 1. 启动“IIS管理器”选择“WEB服务扩展”,选择“WEBDAV”的允许按钮启动WEBDAV功能 2.建立一个虚拟目录,对应到一个本地目 ...
随机推荐
- Java中有哪些方式能实现锁某个变量
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 在Java中,有几种方式可以实现对某个变量的锁定 ...
- [转帖]kill 参数表
https://www.cnblogs.com/alix-1988/p/14331898.html kill命令格式:kill -Signal pidpid是进程号,可以用 ps 命令查出 signa ...
- 【转帖】linux 软连接的使用
https://www.cnblogs.com/sueyyyy/p/10985443.html 软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接. 具体用法是: ...
- [转帖]高并发系统中的尾延迟Tail Latency
开发和运维高并发系统的工程师可能都有过类似经验,明明系统已经调优完毕,该异步的异步,该减少互斥的地方引入无锁,该减少IO的地方更换引擎或者硬件,该调节内核的调节相应参数,然而,如果在系统中引入实时监控 ...
- [转帖]台积电3nm成功量产,稳了吗?
https://docs.pingcode.com/info/13836.html?p=13836 2023-01-19 资讯 21 原标题:台积电3纳米成功量产:未来与三星仍将决战鳍式场效晶体管(F ...
- [转帖]队列深度对IO性能的影响
https://www.modb.pro/db/43710 几年前一个客户的Oracle数据库经常HANG,老白帮他分析了一下,结论是存储老化,性能不足以支撑现有业务了.正好用户手头有个华为S5600 ...
- [转帖]011 Linux 打包与解压 tar
https://my.oschina.net/u/3113381/blog/5429977 01 压缩.打包命令有哪些? Linux 上有着各种压缩.打包的工具:tar.gzip.zip.7z,而 t ...
- [转帖]HotSpot 虚拟机对象探秘
https://www.cnblogs.com/xiaojiesir/p/15593092.html 对象的创建 一个对象创建的时候,到底是在堆上分配,还是在栈上分配呢?这和两个方面有关:对象的类型和 ...
- CentOS创建vsftp进行读写操作的简单方法
1. 安装vsftpd yum install epel-release yum install vsftpd 2. 进入系统设置简单进行处理 注意 user_list 是不允许访问的列表. [roo ...
- [知乎]2019-nCov的致死率问题
https://www.zhihu.com/question/369630554/answer/998649507 知乎 dr.李的文章 跟自己一开始的理解很相似.. 个人也认为死亡率会高于2% 武汉 ...