기존 게시판 읽기(board5Read)의 기본 기능 뒤에

다음과 같이 댓글을 작성할 수 있는 화면 구성을 추가해 준다.

<a href="board5List">돌아가기</a>
<a href="board5Delete?brdno=<c:out value="${boardInfo.brdno}"/>">삭제</a>
<a href="board5Form?brdno=<c:out value="${boardInfo.brdno}"/>">수정</a>
<p>&nbsp;</p>
<div style="border: 1px solid; width: 600px; padding: 5px">
    <form name="form1" action="board5ReplySave" method="post">
        <input type="hidden" name="brdno" value="<c:out value="${boardInfo.brdno}"/>">
        작성자: <input type="text" name="rewriter" size="20" maxlength="20"> <br/>
        <textarea name="rememo" rows="3" cols="60" maxlength="500" placeholder="댓글을 달아주세요."></textarea>
        <a href="#" onclick="fn_formSubmit()">저장</a>
    </form>
</div>

BoardRead.jsp


숨겨진 값으로(hidden) 게시물 번호(BRDNO)가 있다. 

게시물 번호는 현재 읽고 있는 글 번호를 의미하며

사용자가 입력한 작성자명과 댓글 내용과 같이 서버로 전송(fn_formSubmit) 된다.

새로 작성되는 댓글은 댓글 번호(RENO)가 부여 되지 않았고

여기서는 수정 없이 새 글만 작성하기 때문에 댓글 번호(RENO)와 관련된 처리를 하지 않는다.


전송된 내용을 저장하기 위해 board5ReplySave 컨트롤을 작성한다.

전송 받은 내용을 서비스에 전달하고

데이터 베이스에 저장이 되면 다시 해당 글읽기 페이지로 이동한다.

해당 글을 가져오기 위해 게시 글 번호(brdno)를 파라메터로 넘겨줘야 한다.

    /**
     * 댓글 저장.
     */
    @RequestMapping(value = "/board5ReplySave")
    public String board5ReplySave(HttpServletRequest request, BoardReplyVO boardReplyInfo) {
       
        boardSvc.insertBoardReply(boardReplyInfo);

        return "redirect:/board5Read?brdno=" + boardReplyInfo.getBrdno();
    }

Board5Ctr.java

서비스(insertBoardReply)에서는

댓글 번호(reno)가 없으면 SQL의 Insert문을, 있으면 Update문을 실행하도록 처리해준다.

    public void insertBoardReply(BoardReplyVO param) {
        if (param.getReno()==null || "".equals(param.getReno())) {
            sqlSession.insert("insertBoard5Reply", param);
        } else {
            sqlSession.insert("updateBoard5Reply", param);
        }
    }

Board5Svc.java

댓글 번호(reno)는 게시판과 동일하게 저장된 댓글 번호 중 최대값(+1)을 계산하여 저장한다.

수정일 때는 댓글 내용(rememo)만 수정해 주면 된다.

<insert id="insertBoard5Reply" parameterType="gu.board5.BoardReplyVO" >
    <selectKey resultType="String" keyProperty="reno" order="BEFORE">
        SELECT IFNULL(MAX(RENO),0)+1 FROM TBL_BOARDREPLY
    </selectKey>
       
    INSERT INTO TBL_BOARDREPLY(BRDNO, RENO, REWRITER, REDELETEFLAG, REMEMO, REDATE)
    VALUES (#{brdno}, #{reno}, #{rewriter}, 'N', #{rememo}, NOW())
</insert>

<update id="updateBoard5Reply" parameterType="gu.board5.BoardReplyVO">
    UPDATE TBL_BOARDREPLY
       SET REMEMO=#{rememo}
     WHERE RENO=#{reno}
</update>

board5.xml

실행해서 댓글을 달아보고

데이터 베이스에 잘 저장되었는지 확인하면 된다.

수정은 제법 복잡한 화면 처리를 필요로 해서 지금 처리하지 않는다.


'Java > 게시판 5: 댓글' 카테고리의 다른 글

1. 댓글 시작하기  (1) 2016.05.15
3. 댓글 리스트 / 삭제  (0) 2016.05.15
4. 댓글 수정  (1) 2016.05.15

+ Recent posts