[스프링부트]_게시판_4

Kingyj·2024년 12월 27일

JSB게시판 프로젝트 게시판만들기_4

정리 할 내용

  1. 맵핑 정리
  2. 진행 과정 정리
  3. 오류/애러 정리
  4. 해결 과정 정리

지난 진행 과정

  1. Entity로 테이블 매핑
  2. 리포지터리로 데이터베이스 관리
  3. 도메인별로 폴더 분류
  4. 질문 목록 만들기

이번포스팅 진행 과정

  1. 서비스 활용
  2. 세부 페이지 제작
  3. 댓글 기능 제작
  4. 웹 꾸미기
  5. 게시글 등록 기능 제작

  1. 서비스 활용

서비스(service)는 간단히 말해 스프링에서 데이터 처리를 위해 작성하는 클래스이다. 우리는 그동안 서비스 없이도 웹 프로그램을 동작시키는 데 문제가 없었다. 그런데 굳이 서비스를 사용해야 할까? 서비스가 필요한 이유를 좀 더 자세히 알아보자.

  • 복잡한 코드를 모듈화할 수 있다
    • 예를 들어 A라는 컨트롤러가 어떤 기능을 수행하기 위해 C라는 리포지터리의 메서드 a, b, c를 순서대로 실행해야 한다고 가정해 보자. 그리고 B라는 컨트롤러도 A 컨트롤러와 동일한 기능을 수행해야 한다면 A, B 컨트롤러가 C 리포지터리의 메서드 a, b, c를 호출해 사용하는 중복된 코드를 가지게 된다. 이런 경우 C 리포지터리의 a, b, c 메서드를 호출하는 기능을 서비스로 만들고 컨트롤러에서 이 서비스를 호출하여 사용할 수 있다. 즉, 서비스를 사용하면 이와 같은 모듈화가 가능하다.

@Service

[ 설명 ]

  • Spring 프레임워크에서 제공하는 어노테이션으로, 서비스 계층의 클래스를 명시할 때 사용됩니다. 이를 통해 해당 클래스가 서비스 역할을 한다는 것을 나타내고, Spring이 이 클래스를 스캔하여 Bean으로 등록할 수 있도록 합니다.

[ 역할 ]

  • 서비스 계층은 일반적으로 비즈니스 로직을 처리하는 데 사용됩니다.
  • @Service를 사용하면 코드를 읽는 사람에게 이 클래스가 서비스 레이어라는 것을 명확히 알릴 수 있습니다.
  • @Component와 동일한 역할을 하지만, 더 명확한 계층 구분을 위해 사용됩니다.
import org.springframework.stereotype.Service;

@Service
public class UserService {
    public String getUserName(Long userId) {
        // 비즈니스 로직 처리
        return "User" + userId;
    }
}
  • @ComponentScan에 의해 @Service로 마킹된 클래스는 자동으로 스캔됩니다.

  1. 세부 페이지 제작

기본 페이지에서 제목을 클릭하면 그 안의 내용을 보여주는 것.
쉽게 설명해서 페이지안에 특정 하이퍼링크를 클릭하면 다른 페이지로 이동시켜주는 기능이다.
게시판 메인 페이지 여러 게시글들이 있다. 제목을보면 파랑색으로 표기되는게 보인다. 이것이 하이퍼링크가 걸려있다는 뜻이다. 번호1번 반갑습니다를 눌러보겠다.
그 안에 표기 된 페이지로 이동하게된다.


  1. 댓글 기능 제작

개인적인 생각이지만, 사실 웹의 기능은 아주 간단한 로직으로 이루어져있다.

" 버튼이 있다. 그것을 클릭하면 알맞는 페이지로 이동 / 상응하는 결과를 표기한다. "

그렇다면 내부적으로 어떻게 이뤄지는가?
이또한 아주 간단한 로직이다.

  1. 사용자의 화면에 표기될 페이지를 만든다.
  2. 사용자가 특정 버튼이나 값을 입력하면 그 값을 받아 상응하는 페이지 / 값을 제공한다.

이를 기억하고 댓글 기능을 만들어보자.

  1. 사용자 화면에 표기
  • 댓글을 넣을 칸 - Form
  • 그 칸 안에 글을 쓸 수 있게 한다. - Textarea
  • 버튼을 누르면 답변이 달리게 한다. - Input
  1. 사용자가 입력한 값을 받는다.
  • 사용자가 버튼을 누르면 서버에 저장한다.
  • 그 값을 특정 페이지에 표기한다.


  1. 웹 꾸미기

본인이 HTML, CSS 그리고 JavaScript 스택이 있다면 직접 만들어도 된다. 하지만 지금은 기존에 완성된 부트스트랩을 이용 할 것이다.

완성되어있어 따로 작업할 필요가 없는 장점이 있지만 반대로 단점으로는 내 마음대로 자유도 100%로 변형하기에는 어려움이 있다.

위에서 이미 보여줬지만 부트스랩을 적용한 게시판이다.
제공되는 부트스트랩을 다운받아 Static안에 넣어주고 Templates를 통해 연결만 해주면 된다.


  1. 게시글 등록 기능 제작

위에 설명한 댓글 기능과 똑같은 로직이다. 게시글 등록버튼을 만들고 그 버튼을 누르면 게시글 작성페이지로 연결시켜준다. 그 페이지에서 사용자가 내용을 적고 버튼을 누르면 게시글이 등록되는 것이다.

게시글 등록 버튼을 누르면 해당 페이지로 이동한다.
제목과 내용을 적고 저장하기를 누르면 게시글이 등록된다.

하지만. 제목이나 내용을 적지 않아도 게시글이 작성되면 안되지않나? 그래서 이또한 작업했다.


0개의 댓글