티스토리 뷰

JSP만 사용해서 만드는 게시판

  • MariaDB 사용
  • 기본적인 CRUD
    Create/Read/Update/Delete




게시판 삭제 

드디어 JSP 게시판 마지막 삭제가 남았다.

글 삭제는 수정과 마찬가지로 상세 페이지에서 삭제 버튼을 누르면 글이 삭제되고 목록으로 넘어가게 된다.
수정과는 다르게 삭제하는 페이지가 따로 없기 때문에 상세 페이지에서 삭제시 정말 삭제하겠냐는 alert을 띄워줄것이다.
정말 삭제하겠다고 하면 바로 DB삭제하는 보이지 않는 페이지로 넘어가 쿼리를 날려 DB 데이터를 삭제하게 된다.


1.

저번에 만들었던 상세 페이지에서부터 시작하자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.sql.*" %> 
<%@ page import="java.util.*" %>      
<%@ page import="java.text.SimpleDateFormat"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<% 
    //DB연결
    Connection conn = null;
    Statement stmt = null;
    
    String idx = request.getParameter("idx");
    
    try{
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/haeun?useUnicode=true&characterEncoding=utf-8","","");
        //db insert시 한글 깨져서 db명 뒤에 ?useUnicode=true&characterEncoding=utf-8 붙여준다.
        if(conn == null)
            throw new Exception("데이터베이스에 연결할 수 없습니다.");
        stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select * from board where idx="+idx);
        
    
        
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="/JSP_Board/css/layout.css"/>
<title>게시판</title>
<script type="text/javascript">
 
    function deletePage(idx){
        if(confirm("글이 삭제됩니다!")==true){
            location.href="delete.jsp?idx="+idx;
        }
    };
    
    
</script>
</head>
<body>
    <div>
        <h1>상세</h1>
    </div>
<%
        while(rs.next()){
            
%>            
    <div>
        <form>
            제목 : <%= rs.getString("title"%> </br>
            작성자 : <%= rs.getString("name"%> <br/>
            작성시간 : <%= rs.getString("time"%> <br/><br/>
            =============================================<br/>
            <%= (rs.getString("text")).replace("\r\n","<br>"%>
        </form>
    </div>
 
    <div>
        <button type=button title="수정" onClick="location.href='update.jsp?idx=<%=idx%>'">수정</button>
        <button type=button title="삭제" onClick="deletePage(<%=idx %>)">삭제</button>
        <input type=button value="목록" onclick="location.href='list.jsp'"/>
    </div>
<%
    }
        conn.close();
    }catch(Exception e){
        out.println("데이터베이스에 문제가 있습니다.");
        out.println(e.getMessage());
        e.getStackTrace();
    }
%>        
</body>
</html>
cs


삭제 버튼을 누르면 onclick 이벤트로 deletePage() 함수로 이동하게 된다.
함수에 넘어갈때 idx를 가지고 간다. 당연히 삭제할 데이터의 PK를 알아야 하니까~

삭제할때 버튼 클릭 잘못해서 바로 삭제되면 안되니까 스크립트에서 confrim 으로 한번 체크해준 뒤 
delete.jsp 로 idx 값을 가지고 넘어간다.

2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.sql.*" %>    
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%
 
    request.setCharacterEncoding("UTF-8");
 
    String idx = request.getParameter("idx");
    
    Connection conn = null;
    Statement stmt = null;
    
    try{
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/haeun?useUnicode=true&characterEncoding=utf-8","","");
        //db insert시 한글 깨져서 db명 뒤에 ?useUnicode=true&characterEncoding=utf-8 붙여주니 안깨지고 들어간다.
        if(conn == null)
            throw new Exception("데이터베이스에 연결할 수 없습니다.");
        stmt = conn.createStatement();
        
        String command = String.format("delete from board where idx='%s'",idx);
        
 
        int rowNum = stmt.executeUpdate(command);
         
        if(rowNum<1)
            throw new Exception("데이터를 DB에 입력할 수 없습니다.");
    }
    finally{
        try{
            stmt.close();
        }
        catch(Exception ignored){
        }
        try{
            conn.close();
        }
        catch(Exception ignored){
        }
    }
    
    response.sendRedirect("list.jsp");
%>
cs


delete.jsp 를 보면 idx 를 파라미터로 받아와서 delete 쿼리를 날려준다.

짱쉽짱쉽!


삭제는 너~무 간단하다. 끝 

'게시판정복 > JSP게시판' 카테고리의 다른 글

5. 게시판 글 수정  (0) 2017.04.07
4. 게시판 상세보기  (0) 2017.04.04
3. 게시판 글 생성  (0) 2017.03.28
2. 게시판 목록  (0) 2017.03.28
1. 페이지설계/ TABLE설계/ JDBC/ 이클립스DB연결  (1) 2017.02.21
댓글