🚗 Backend Toy Project

    [스프링부트 게시판] 36. 관리자 페이지 - 게시글 통계

    이번에는 그래프를 통해 게시글 통계를 출력하여 사용자들의 게시글 작성 현황을 한 눈에 확인할 수 있도록 구현해보았습니다. 우선 해당 페이지의 구현은 아래와 같습니다. 해당 통계 페이지의 디자인은 티스토리 블로그의 방문 통계 페이지를 참고하였습니다. 그래프 구현 말고는 어려운 부분이 없기 때문에 그래프 구현에 대한 부분만 설명하겠습니다. 📝 Google Chart 먼저 그래프는 최근 7일간의 카테고리별 게시글 작성 통계를 나타내도록 할 것입니다. 저의 경우 검색을 통해 맘에드는 그래프 템플릿을 찾을 수 있었으며 해당 템플릿의 큰 틀에서 저의 입맛대로 조정해보았습니다. 제가 사용한 구글 차트 그래프 템플릿은 아래 블로그에서 확인하실 수 있습니다. 구글차트(Google Chart) 사용해서 그래프 생성하기 -..

    [스프링부트 게시판] 35. 관리자 페이지 - 회원 관리

    관리자 페이지를 구현하여 회원 및 게시판을 관리할 수 있도록 구현해보려고 합니다. 오늘은 우선 회원 관리 페이지를 구현하여 해당 사이트에 회원가입한 사용자들을 확인하고 해당 사용자가 작성한 게시글과 댓글을 확인할 수 있도록 하였습니다. 추가로 관리자의 권한으로 특정 사용자를 탈퇴시킬 수 있도록 구현해보았습니다. 📝 회원 관리 페이지 우선 관리자 페이지 경로를 요청받는 새로운 컨트롤러를 작성해주었습니다. package com.cos.blog.controller; ... @RequiredArgsConstructor @Controller public class AdminController { private final UserRepository userRepository; @GetMapping("/admin")..

    [스프링부트 게시판] JPA Specification을 통해 쿼리 조건 다루기

    이번에 게시판 카테고리를 구현하면서 기존에 Repository에 쿼리를 직접 만들어 사용하던 방식 대신 좀 더 편하고 가독성도 좋은 방식을 알게되어 해당 방식으로 코드를 수정하게 되었습니다. 우선 기존에 사용하던 코드는 아래와 같습니다. if(category.equals("screenshot")) { model.addAttribute("boards", boardRepository.findAllByCategory(CategoryType.SCREENSHOT, pageable)); return"index"; } if(searchKeyword == null || searchKeyword.isBlank()) { model.addAttribute("boards", boardRepository.findAll(page..

    [스프링부트 게시판] 34. 사용자 프로필 이미지 추가

    좀 더 블로그스러운 느낌을 추가하기 위해 사용자 프로필 이미지를 추가해보았습니다. 이를 위해 User 객체에 프로필 이미지 URL을 저장하기 위한 문자열 형식의 변수를 우선 추가해주었습니다. 📝 UserApiController 컨트롤러에는 아래와 같은 함수를 추가해주었습니다. package com.cos.blog.controller.api; ... @RestController @RequiredArgsConstructor public class UserApiController { private final UserService userService; ... @PutMapping("/api/user/{user_id}/profileImageUrl") public ResponseDto profileImageUpd..