MelonPeach

14.스프링 게시판 만들기 / 게시판 댓글 작성 구현

안녕하세요? MelonPeach입니다.

이전에 게시판 댓글 목록기능에 대해서 작성했었죠?

이번에는 댓글 작성에 대해 포스팅 하려합니다.

댓글 작성은 게시물 조회로 들어가서 작성을 해야합니다.

 

1. 댓글 작성 쿼리 작성하기 replyMapper.xml


스프링 게시판 만들기 : 댓글작성 replyMapper.xml

 

댓글을 작성하기 위해 replyMapper.xml에 bno, rno, content, writer를 작성해줍니다.

 

<insert id="writeReply">
INSERT INTO MP_REPLY(
	BNO
	, RNO
	, CONTENT
	, WRITER
)
VALUES(    #{bno}
	, MP_REPLY_SEQ.NEXTVAL
	, #{content}
	, #{writer}	)
</insert>

 

 

 

2. 댓글 DAO, Service작성하기 replyDAO, replyService


스프링 게시판 만들기 : 댓글 replyDAO, replyService

 

replyDAO에 댓글 작성을 위한 메서드를 작성해주고 replyDAOImpl에서 Override해주어 코드를 작성해줍니다.

그리고 replyService에 마찬가지로 댓글 작성을 위한 메서드를 작성해줍니다.


 

 

 

3. 댓글 작성 replyController작성하기


스프링 게시판 만들기 : 댓글 BoardController.

 

BoardController.java에서 댓글 작성을 위한 메서드를 만들어줍니다. 

파라미터로 ReplyVO, SearchCriteria, RedirectAttributes를 넣어주었는데요.

ReplyVO는 댓글 작성하기위한 데이터, SearchCriteria는 readView에 있던 page, perPageNum, searchType, keyword값을 받아오기 위한것이고요. RedirectAttributes는 redirect했을때 값들을 물고 이동합니다. 그래서 SearchCriteria의 값을

넣어서 댓글을 저장 한 뒤 원래 페이지로 redirect하여 이동하게 됩니다.

 

	//댓글 작성
	@RequestMapping(value="/replyWrite", method = RequestMethod.POST)
	public String replyWrite(ReplyVO vo, SearchCriteria scri, RedirectAttributes rttr) throws Exception {
		logger.info("reply Write");
		
		replyService.writeReply(vo);
		
		rttr.addAttribute("bno", vo.getBno());
		rttr.addAttribute("page", scri.getPage());
		rttr.addAttribute("perPageNum", scri.getPerPageNum());
		rttr.addAttribute("searchType", scri.getSearchType());
		rttr.addAttribute("keyword", scri.getKeyword());
		
		return "redirect:/board/readView";
	}

 

 

 

4. 댓글 작성 readView.jsp 작성하기


스프링 게시판 만들기 readView

 

readView.jsp에서 댓글 목록아래에 댓글 작성을 위한 폼태그를 생성해줍니다. 

그리고 input태그 type=hidden으로 작성하신후 댓글 작성자와 댓글 내용을 입력할 수 있는 input태그도 만들어줍니다.

작성 버튼을 눌렀을때 type을 hidden으로 만들어준 input태그의 값들이 replyWrite로 값이 갈 수 있게 됩니다.

 

<form name="replyForm" method="post">
  <input type="hidden" id="bno" name="bno" value="${read.bno}" />
  <input type="hidden" id="page" name="page" value="${scri.page}"> 
  <input type="hidden" id="perPageNum" name="perPageNum" value="${scri.perPageNum}"> 
  <input type="hidden" id="searchType" name="searchType" value="${scri.searchType}"> 
  <input type="hidden" id="keyword" name="keyword" value="${scri.keyword}"> 

  <div>
    <label for="writer">댓글 작성자</label><input type="text" id="writer" name="writer" />
    <br/>
    <label for="content">댓글 내용</label><input type="text" id="content" name="content" />
  </div>
  <div>
 	 <button type="button" class="replyWriteBtn">작성</button>
  </div>
</form>

 

 

 

5. readView Script작성


스프링 게시판 만들기 댓글 : readView

 

이제는 작성 버튼을 눌렀을때 값들이 replyWrite로 전달되게끔 함수를 만듭니다.

formObj가 이미 쓰고있기때문에 함수 안에 다시 만들어주고 form의 name을 replyForm으로 바꾸어줍니다.

 

$(".replyWriteBtn").on("click", function(){
  var formObj = $("form[name='replyForm']");
  formObj.attr("action", "/board/replyWrite");
  formObj.submit();
});

 

 

 

6. 댓글 작성 테스트


스프링 게시만 만들기 댓글

 

게시판의 게시물을 클릭후 readView로 들어가셨으면 댓글 작성버튼을 눌러 작성되는지 테스트를 해봅니다.


 

댓글 작성까지 만들었는데요.

다음 포스팅에서는 댓글의 삭제와 수정에 대해 포스팅 하도록 할게요.

 

이 글을 공유합시다

facebook twitter googleplus kakaostory naver