본문 바로가기
JSP/JSP & Servlet

JSP게시판 - 글 수정

by avvin 2019. 5. 13.

JSP게시판 - 글 수정


제목, 글 내용 수정



BoardUpdateForm.jsp

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
<%@page import="model.BoardBean"%>
<%@page import="model.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<div style="text-align: center">
<h2>게시글 수정</h2>
<%
    //해당 게시글 번호를 통하여 게시글을 수정
    int num = Integer.parseInt(request.getParameter("num").trim());
 
    //하나의 게시글에 대한 정보를 리턴하는 메서드 
    //BoardInfo에서 호출한 getOnBoard(int num)를 수정하여 사용한다.
    BoardDAO bdao = new BoardDAO();
 
    BoardBean bean = bdao.getOneUpdate(num);
%>
 
<form action="BoardUpdateProc.jsp" mthod="post">
<table align="center" width="600" border="1" bgcolor="skyblue">
    <tr height="40">
        <td width="120" align="center">작성자</td>
        <td width="120" align="center"><%=bean.getWriter()%></td>
        <td width="120" align="center">작성일</td>
        <td width="120" align="center"><%=bean.getReg_date()%></td>
    </tr>
    <tr>
    <tr height="40">
        <td width="120" align="center">제목</td>
        <td width="480" align="left">&nbsp; <input type="text"
            name="subject" value="<%=bean.getSubject()%>">
        </td>
    </tr>
    <tr height="40">
        <td width="120" align="center">패스워드</td>
        <td width="480" align="left" colspan="3">&nbsp; <input
            type="password" name="password">
        </td>
    </tr>
    <tr height="40">
        <td width="120" align="center">글 내용</td>
        <td width="480" align="left" colspan="3">
        <textarea rows="10" cols="60" name="content" align="left">
        <%=bean.getContent()%></textarea></td>
    </tr>
    <tr height="40">
        <td colspan="4" align="center">
        <input type="hidden" name="num"    value="<%=bean.getNum()%>"
        <input type="submit" value="글 수정"> &nbsp; &nbsp; 
        <input type="button"onclick="location.href='BoardList.jsp'" value="전체글보기"></td>
    </tr>
</table>
</form>
</div>
</body>
</html>
cs



BoardUpdatePro.jsp

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
<%@page import="model.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
    <%
        request.setCharacterEncoding("UTF-8");
    %>
 
    <!--제목, 글내용만 수정했기때문에 
        제목, 패스워드, 글내용, 글넘버만 넘겨받으면 된다. -->
    <!-- 4개나 읽어들이니까 request를 쓰느니 usebean을 쓰는게 낫다. -->
    <!-- 기존 DB에서 해당 넘버에 맞는 패스워드 값을 가져와 넘겨온 패스워드와
     일치하는지 여부를 따져본다. -->
 
    <jsp:useBean id="boardbean" class="model.BoardBean">
        <jsp:setProperty name="boardbean" property="*" />
    </jsp:useBean>
 
    <%
        //해당 게시글의 패스워드 값 얻어오기
        //데이터베이스엔 연결
        BoardDAO bdao = new BoardDAO();
        String password = bdao.getPassword(boardbean.getNum());
        
        //기존 패스워드 값과 업데이트시 작성했던 패스워드값 비교
        if (boardbean.getPassword().equals(password)){
            //같다면 데이터 수정
            bdao.updateBoard(boardbean);
            //수정이 완료되면 전체 게시글 보기
            response.sendRedirect("BoardList.jsp");
            
        }else{//패스워드가 틀리다면
            
    %>
            <script type="text/javascript">
            alert("패스워드가 일치하지 않습니다.");
            history.go(-1);
            </script>
    <% 
        }
    %>
 
</body>
</html>
cs


BoardDAO.java 중 일부 [ getPassword() ] 메서드와 [ updateBoard() ] 메서드

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
 
    // update와 delete시 필요한 패스워드 값을 리턴해주는 메서드
    public String getPassword(int num) {
 
        String pass = "";
        getCon();
 
        try {
            String sql = "select password from board where num=?";
            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, num);
            rs = pstmt.executeQuery();
            if (rs.next()) {
                // 패스워드값 받아오는거니까 getString의 인덱스 1번
                pass = rs.getString(1);
            }
            // 자원반납
            con.close();
 
        } catch (SQLException e) {
            e.printStackTrace();
        }
 
        return pass;
    }
 
    // 하나의 수정된 content를 업데이트하는 메서드
    public void updateBoard(BoardBean bean) {
 
        // 업데이트 되는건 제목과 내용// update table명 set 컬럼1=? 컬럼2=? where 조건
        getCon();
        try {
            String sql = "update board set subject=?, content=? where num=?";
            pstmt = con.prepareStatement(sql);
            pstmt.setString(1, bean.getSubject());
            pstmt.setString(2, bean.getContent());
            pstmt.setInt(3, bean.getNum());
            pstmt.executeUpdate();
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
cs