MVC패턴 게시판 만들기 - 답글달기
BoardInfo.jsp에서 수정하기 버튼을 누르면 실행되는 서블릿 클래스 ReWriteCon.java
BoardInfo에서 글그룹, 글스텝, 글레벨을 파라미터로 넘겨줌
넘겨받은 글그룹, 글스텝, 글레벨 정보를 폼.jsp 페이지로 그대로 넘겨줌
ReWriteCon.java (Controller)
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 | package control; import java.io.IOException; import javax.servlet.RequestDispatcher; 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 model.BoardBean; import model.BoardDAO; @WebServlet("/BoardReWriteCon.do") public class BoardReWriteCon extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { reqPro(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { reqPro(request, response); } protected void reqPro(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); //게시글 읽기에서 답변글쓰기를 클릭하면 넘겨주는 데아터들을 받아줌 //int num = Integer.parseInt(request.getParameter("num")); int ref = Integer.parseInt(request.getParameter("ref")); int re_step = Integer.parseInt(request.getParameter("re_step")); int re_level = Integer.parseInt(request.getParameter("re_level")); request.setAttribute("ref", ref); request.setAttribute("re_step", re_step); request.setAttribute("re_level", re_level); RequestDispatcher rd = request.getRequestDispatcher("BoardReWriteForm.jsp"); rd.forward(request, response); } } | cs |
ReWriteForm.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 59 60 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <body> <div style="text_align: center"> <h2>답변글 입력하기</h2> <form action="BoardReWriteProcCon.do" method="post"> <table width="600" border="1" boardcolort="gray" bgcolor="skyblue"> <tr height="40"> <td width="150" align="center">작성자</td> <td width="450"> <input type="text" name="writer" size="60"> </td> </tr> <tr height="40"> <td width="150" align="center">제목</td> <td width="450"> <input type="text" name="subject" value="[답변]" size="60"></td> </tr> <tr height="40"> <td width="150" align="center">이메일</td> <td width="450"> <input type="email" name="email" size="60"> </td> </tr> <tr height="40"> <td width="150" align="center">비밀번호</td> <td width="450"> <input type="password" name="password" size="60"></td> </tr> <tr height="40"> <td width="150" align="center">글내용</td> <td width="450"> <textarea rows="10" cols="60" name="content"></textarea> </td> </tr> <!-- form에서 사용자로부터 입력받지 않고 데이터를 넘김 --> <tr> <td align="center" colspan="2"><input type="hidden" name="ref" value="${ref }"> <input type="hidden" name="re_step" value="${re_step }"> <input type="hidden" name="re_level" value="${re_level }"> <input type="submit" value="답글 등록"> <input type="reset" value="다시 입력"> <input type="button" onclick="location.href='BoardListCon.do'" value="전체글보기"></td> </tr> </table> </form> </div> </body> </html> | cs |
BoardDAO.java(Model) ReWriteBoard 메서드
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 | public BoardBean reWriteBoard(BoardBean bean) { // 부모글 그룹, 글레벨 글스텝 읽어들이기 int ref = bean.getRef(); int re_step = bean.getRe_step(); int re_level = bean.getRe_level(); getCon(); try { // ★핵심코드 // 답변형 게시판의 특징 // 글을 그룹으로 만들어야하기때문에 re_step과 re_level을 먼저 수정해줘야한다. // 부모 글보다 큰 re_level값을 전부 1씩 증가시켜줌 //들어온 글 그룹값이 같고 들어온 글 레벨보다 글 레벨이 클 경우 글 레벨에 +1 //(같은 그룹에 최신 답글이 하나 더 들어오면 보여주는 순서가 하나 더 밀림) String levelsql = "update board set re_level = re_level+1 where ref=? and re_level> ?"; pstmt = con.prepareCall(levelsql); pstmt.setInt(1, ref); pstmt.setInt(2, re_level); pstmt.executeUpdate(); // 답변 글 데이터를 저장 String sql = "insert into board values(board_seq.NEXTVAL, ?,?,?,?,sysdate,?,?,?,0,?)"; pstmt = con.prepareStatement(sql); // ?에 값을 맵핑 pstmt.setString(1, bean.getWriter()); pstmt.setString(2, bean.getEmail()); pstmt.setString(3, bean.getSubject()); pstmt.setString(4, bean.getPassword()); pstmt.setInt(5, ref); // 부모의 ref 값을 넣어줌 pstmt.setInt(6, re_step + 1); // 답글이니까 부모 글 re_step에 1을 더해줌 pstmt.setInt(7, re_level); // 답글이니까 부모글 re_level에 1을 더해줌 pstmt.setString(8, bean.getContent()); // 쿼리 실행 // 쿼리 실행 후 결과 리턴은 executeQuery(), // 데이터 업데이트는 executeUpdate() pstmt.executeUpdate(); // 자원 반납 con.close(); } catch (Exception e) { e.printStackTrace(); } return bean; } | cs |
'JSP > JSP & Servlet ' 카테고리의 다른 글
JSTL : 조건문 <c:if> <c:choose> <c:when> <c:otherwise> 태그 (0) | 2019.07.11 |
---|---|
MyBatis 사용 이해하기 (0) | 2019.06.04 |
MVC패턴 게시판 만들기 - 글보기 (0) | 2019.05.24 |
MVC패턴 게시판 만들기 - 글쓰기 (0) | 2019.05.24 |
MVC패턴 게시판 만들기 - 전체 게시글 보기 (0) | 2019.05.24 |