[spring 팀프로젝트] - 웹사이트 제작 8. 이용 후기(게시판) -(4)수정

JINI·2022년 12월 9일
0
post-thumbnail

수정 버튼 클릭시 해당 사용자에 대한 정보를 그대로 가지고오고 내용을 수정하고 저장하면 전 내용은 삭제되고 새로운 내용으로 변경된다.
본인이 작성한 글에서만 수정/삭제 권한이 있고 작성자가 아니라면 조회만 가능하다.


✂️수정 전

✂️수정 후

✂️작성자 본인일 경우

✂️작성자 본인이 아닐 경우

🧩수정하기


1. 수정 데이터 불러오기
2. 수정하기
- 작성자 o ➡️ 수정/삭제
- 작성자 x ➡️ 조회


1.📝수정 페이지/데이터 불러오기

🎨jsp

<form action="${contextPath}/board/modify" method="post">
	<div class="num-writer">
      <label>글번호</label> 
      <input class="form-control" name="reviewNum" value="${detailReview.reviewNum  }" readonly> 
      <label>작성자</label>
      <input class="form-control" name="writer" value="${detailReview.writer  }" readonly>
	</div>
	<div class="title-content">
		<label>제목</label> <input type="text" name="title"	value="${detailReview.title }"> 
        <label>내용</label>
		<textarea id="" name="content" cols="30" rows="10">${detailReview.content }</textarea>
	</div>
	<button type="button" id="List-btn"	onClick="location.href='${contextPath}/board/review'">목록</button>
	<c:if test="${successLoginUser == detailReview.writer  }">
	<input type="submit" id="modify_btn" value="수정">
	<input type="submit" id="delete_btn" value="삭제">
	</c:if>
</form>

글 번호와 작성자, 제목, 내용 모두 dto에서 해당 사용자 정보를 가져오고 제목과 내용만 수정할 수 있다.

c:if문을 사용해 로그인 세션과 작성자가 같다면 수정/삭제 버튼이 보이고 해당 작성자가 아니라면 목록 버튼만 보이게한다.


📕Controller

@GetMapping("modify_form")
	public String modify_form(@RequestParam int reviewNum, Model model) {
		bs.getuserData(reviewNum, model);
		return "board/modify_form";
}

수정페이지를 연결하면서 글번호를 불러오고 service로 보낸다.


📕Service/serviceImpl

public void getuserData(int reviewNum, Model model);
public void getuserData(int reviewNum, Model model) {
		model.addAttribute("detailReview", mapper.reviewDetail(reviewNum) );
	}

💡수정할 데이터를 불러와야 하기 때문에 우선 service까지만 코드를 작성한다.❗



📝2.수정 후 저장하기

📕Controller

@PostMapping("modify")
	public String modify(boardDTO dto, RedirectAttributes rs){
		bs.modify(dto);
		rs.addFlashAttribute("result","modify success");
		return "redirect:review";
	}

수정하기 jsp에서 modify를 연결하고 데이터를 받는다.
바든 데이터는 service로 보내고 성공/실패 메시지를 한번만 출력하고 게시판 목록페이지로 이동한다.


📕Service/serviceImpl

public int modify(boardDTO dto);
public int modify(boardDTO dto) {
		return mapper.modify(dto);
	}

📕mapper.java

public int modify(boardDTO dto);

📕mapper.xml

<update id="modify">
		update box_board set title=#{title},
		content=#{content}
		where list_num=#{reviewNum}
</update>

기존 데이터가 삭제되고 새로운 데이터로 수정되기 때문에 update를 사용해서 쿼리문을 작성한다.
글 번호 기준으로 제목과 내용을 업데이터한다.


profile
꾸준히 성장하는 개발자

0개의 댓글