본문 바로가기
프로젝트/Summernote를 활용한 WYSIWYG 게시판 만들기

5. 삭제하기

by IT여행자 2023. 1. 1.
728x90

삭제 처리에서 중요한 내용은 본문(doc) 영역에 삭제할 이미지 정보가 들어 있다는 것입니다. 따라서 DB에서 해당 자료를 삭제하기 전에 먼저 본문에 들어 있는 이미지 정보를 가져와 따로 삭제해야 합니다.  만약 Base64 방법으로 이미지가 본문에 들어 있다면 관련 내용을 삭제할 때 함께 삭제되겠지만 본 글에서는 이미지 정보를 따로 저장 장치에 저장해기 때문에 파일을 별도로 삭제 처리를 해야 합니다.

 

package bean;

import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SnDao {
	String uploadPath = "N:\\workspace\\summernote\\src\\main\\webapp\\";
    Connection conn ;
    PreparedStatement ps;
    ResultSet rs;
    String sql ;
    public SnDao(){
        try{
            conn = new DBConn().getConn();
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
 
    … 
   
   public boolean delete(String serial) {
    	boolean b=false;
    	
    	//img 태그안에 있는 파일명을 찾기 위한 패턴
    	String regex = "(<img src=\")(.+?)(\")";
    	Pattern pattern = Pattern.compile(regex);
    	Matcher matcher = null;
    	try {
    		
    		//삭제해야할 파일명을 찾기 위해
    		SnVo vo = view(serial);
    		
   		matcher = pattern.matcher(vo.getDoc());

	   sql = "delete from summernote where serial = " + serial;
    		conn.setAutoCommit(false);
    		ps = conn.prepareStatement(sql);
    		
    		int c = ps.executeUpdate();
    		if(c>0){
    			conn.commit();
    			b=true;
    			
    			//upload 경로에 있는 파일 삭제
        		while(matcher.find()) {
       			File delFile = new File(uploadPath + matcher.group(2));
       			if(delFile.exists()) delFile.delete();
        			
        		}
    			
    		}else{
    			conn.rollback();
    		}    		
    		
    	}catch(Exception ex) {
    		ex.printStackTrace();
    	}
    	
    	return b;
    	
    }
        
    public SnVo view(String serial){
    	SnVo vo  = new SnVo();
    	sql = "select * from summernote where serial = ? ";
    	try{
    		ps = conn.prepareStatement(sql);
    		ps.setString(1,  serial);
    		rs = ps.executeQuery();
    		
    		while(rs.next()) {
    			vo.setSerial(rs.getInt("serial"));
    			vo.setSubject(rs.getString("subject"));
    			vo.setDoc(rs.getString("doc"));
    		}
    	}catch(Exception ex){
    		ex.printStackTrace();
    	}
    	return vo;
    	
    }

}

 

1) 삭제 결과 페이지

 

<%@page import="bean.SnDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
SnDao dao = new SnDao();
String serial = request.getParameter("serial");
boolean b = dao.delete(serial);
if(b){
	out.print("삭제됨");
}else{
	out.print("삭제중 오루 발생");
}

%>
<hr/>
<a href='list.jsp'>목록으로</a>
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'프로젝트 > Summernote를 활용한 WYSIWYG 게시판 만들기' 카테고리의 다른 글

2. 기본 구조  (0) 2023.01.01
3. 에디터 화면 및 저장 만들기  (0) 2023.01.01
4. 수정하기  (0) 2023.01.01
6. 조회하기  (0) 2023.01.01
7. 상세보기  (0) 2023.01.01