250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바개발자
- 프로그래머
- 자바
- 프로그래머스
- 백엔드개발자
- 운영체제
- 미라클모닝
- 코딩
- 자바알고리즘
- 리액트
- 백엔드
- 자바스크립트
- SpringBoot
- 국비지원코딩
- 프로세스
- 알고리즘
- 자바의정석
- 개발자
- Java
- 소셜로그인구현
- Codeup
- 프로그래밍
- React
- 데이터베이스
- 코드업
- 스프링부트
- 국비지원
- 개발자일기
- 혼공컴운
- db
Archives
- Today
- Total
초코딩(chocoding)
[Project - 게시판 / spring boot] Board delete / 조회수 구현 본문
728x90
delete를 구현 완료하였다.
다른 코드들과 다르게 삭제하는 것은 신중할 필요가 있다고 생각하여
js를 통해 alert창이 뜨도록 구현했다.
코드는 다음과 같다.
Controller
// Delete =====================================================
@PostMapping("/boardDelete/{board_id}")
public ResponseEntity<?> boardDelete(@PathVariable("board_id") int id) {
Board entity = boardService.selectDetail(id);
if (entity != null) {
entity.setBoard_deldate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
entity.setBoard_delyn('Y');
boardService.save(entity);
}
return ResponseEntity.ok().build();
}
나는 논리적 삭제를 구현했기 때문에
delete메서드를 사용하지 않았다.
그 대신에 삭제버튼을 누른 시간과 삭제 여부를 N 에서 Y로 바꿔주었다.
jsp
<c:if test="${sessionScope.loginUser.useremail == requestScope.boardDetail.useremail}">
<a class="m_button" href="boardDetail?jCode=U&board_id=${requestScope.boardDetail.board_id}">수정</a>
<button onclick="axboardDelete(${requestScope.boardDetail.board_id})" id="${requestScope.boardDetail.board_id}">삭제</button>
</c:if>
그리고 삭제와 수정은 해당 로그인된 유저와 게시글을 쓴 유저가 동일한 경우에만 가능해야 하기 때문에
if문을 넣어주어 로그인한 유저와 게시글을 쓴 유저가 다를 경우에는
삭제, 수정 버튼이 보이지 않도록 구현하였다.
조회수
조회수 같은 경우에는 게시물 리스트들에서 상세페이지를 눌렀을 때 조회수가 증가하는 것이기 떄문에
따로 메서드를 만들지 않고 그냥 detail 을 처리하는 controller 메서드가 실행될 때 board_views 의 컬럼을 +1 시켜주었다.
// Detail =====================================================
@GetMapping("/boardDetail")
public String getBoardDetail(Model model, Board entity, HttpServletRequest request) {
entity = boardService.selectDetail(entity.getBoard_id());
if ("U".equals(request.getParameter("jCode"))) {
model.addAttribute("boardDetail", entity);
return "board/boardUpdate";
} else {
entity.setBoard_views(entity.getBoard_views() + 1);
model.addAttribute("boardDetail", entity);
boardService.save(entity);
return "board/boardDetail";
}
} // getBoardDetail()
그리고 이어서 좋아요를 구현하려고 했는데
테이블 없이 구현하려고 보니.... 이걸 어떻게 구분해야 될 지 막막하
좋아요를 관리하는 테이블을 추가하게 되었다.
좋아요에 대한 내용은 다음 게시글에서 쓰도록 하겠다.
728x90