초코딩(chocoding)

[Project - 게시판 / spring boot] Board delete / 조회수 구현 본문

Project

[Project - 게시판 / spring boot] Board delete / 조회수 구현

sweetychocoding 2024. 2. 21. 11:56
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