이전 글)
[스프링 프로젝트] 게시판 - 조회수
이전 글) [스프링 프로젝트] 게시판 - 게시글 상세보기 이전 글) [스프링 프로젝트] 게시판 - 게시글 쓰기 이전 글) [스프링 프로젝트] 게시판 - 글 목록 + 페이징 & 검색 이전 글) [스프링 프로젝트]
dongcu.tistory.com
게시글을 수정하기 위해서는 이미 작성된 글을 불러 오는 과정이 필요하다.
우선 이미 글이 작성되어 있는 jsp 파일을 만들어 준다.

<article>
<div class="container" role="main">
<h2 style="margin-top: 100px">자유 게시판 수정</h2>
<form name="form" id="form" role="form" method="post" action="" style="margin-top: 20px">
<div class="mb-3">
<label for="title">제목</label>
<input type="text" class="form-control" name="b_title" value="${freedetail.b_title}">
<input type="hidden" class="form-control" name="b_writer" value="${freedetail.b_writer}" readonly>
</div>
<div class="mb-3">
<label for="content">내용</label>
<textarea class="form-control3" rows="5" name="b_content">${freedetail.b_content}</textarea>
</div>
</form>
<div style="margin-bottom: 50px">
<button type="button" class="btn btn-sm btn-primary" id="btnSave" onclick="document.getElementById('form').submit();">수정 완료</button>
</div>
</div>
</article>
해당 jsp 파일 역시 글쓰기와 동일한 방식으로 에디터를 적용해 준다.
수정과 관련된 메소드를 작성하기에 앞서 jsp 파일로 이동하는 메소드를 Controller에 작성한다.

// 게시물 수정 get메소드
@GetMapping("/freemodify")
public String getFreeModify(@RequestParam("b_num") int b_num, Model model) throws Exception {
FreeBoardVO vo = service.getFreeDetail(b_num);
model.addAttribute("freedetail", vo);
return "/board/freeboard_modify";
}
전체적인 방식은 게시글 상세보기 메소드와 동일하다.
게시글 상세보기를 구현할 때 데이터베이스에 존재하는 게시글 데이터를 불러오는 메소드를 작성해 두었다.
그 메소드를 사용해서 게시글을 불러온 후, model을 통해 view로 뿌려주면 된다.

그렇기 때문에 조회수, 댓글 등의 특별한 기능이 없다면 return 타입을 조금만 수정해서 위와 같이 하나의 메소드로 작성하는 것이 가능하다.

수정할 게시글이 정상적으로 불러와진다.
다시 본론으로 돌아와서, 수정할 글을 불러 왔으면 데이터베이스를 수정해 주는 메소드를 작성한다.
우선 sql문을 작성한다.
데이터베이스를 수정하는 작업이기 때문에 update문을 사용한다.

<!-- 게시물 수정 -->
<update id="freeModify">
update f_board set
b_title = #{b_title}, b_writer = #{b_writer}, b_content = #{b_content}
where b_num = #{b_num}
</update>
다음으로 FreeBoardDAO와 FreeBoardDAOImpl에 메소드를 작성한다.


// 게시물 수정
public void freeModify(FreeBoardVO vo) throws Exception;
// 게시물 수정하기
@Override
public void freeModify(FreeBoardVO vo) throws Exception {
sql.update(namespace + ".freeModify", vo);
}
FreeBoardService와 FreeBoardServiceImpl에도 메소드를 작성한다.


// 게시물 수정
public void freeModify(FreeBoardVO vo) throws Exception;
// 게시물 수정
@Override
public void freeModify(FreeBoardVO vo) throws Exception {
dao.freeModify(vo);
}
작성한 메소드를 FreeBoardController에서 사용한다.

// 게시물 수정 post 메소드
@PostMapping("/freemodify")
public String postFreeModify(FreeBoardVO vo) throws Exception {
service.freeModify(vo);
int b_num = vo.getB_num();
return "redirect:/free/freedetail?reply_num=1&b_num=" + b_num;
}
우선 만들어둔 메소드를 사용해서 게시글을 수정한다.
게시글을 수정한 후에는 게시글이 제대로 수정이 되었나 확인하기 위해서 수정한 게시글 상세보기로 이동할 것이다.
그러기 위해서는 쿼리스트링을 통해 해당 게시글로 이동해야 하고, 쿼리스트링에 사용할 b_num을 구하기 위해 FreeBoardVO의 getter를 활용해 b_num을 구하는 것이다.

게시글 수정 작업이 정상적으로 처리된다.
다음 글)
[스프링 프로젝트] 게시판 - 게시글 삭제
이전 글) [스프링 프로젝트] 게시판 - 게시글 수정 이전 글) [스프링 프로젝트] 게시판 - 조회수 이전 글) [스프링 프로젝트] 게시판 - 게시글 상세보기 이전 글) [스프링 프로젝트] 게시판 - 게시글
dongcu.tistory.com
'SpringFramework-OTOlympic' 카테고리의 다른 글
| [스프링 프로젝트] 게시판 - 댓글 조회 + 페이징 (0) | 2023.03.21 |
|---|---|
| [스프링 프로젝트] 게시판 - 게시글 삭제 (0) | 2023.03.21 |
| [스프링 프로젝트] 게시판 - 조회수 (0) | 2023.03.21 |
| [스프링 프로젝트] 게시판 - 게시글 상세보기 (0) | 2023.03.21 |
| [스프링 프로젝트] 게시판 - 게시글 쓰기 (0) | 2023.03.21 |