메뉴 닫기

Spring Boot를 이용한 게시판과 상품등록 테이블 생성

이번 블로그는 https://wikidocs.net/book/7601 와 AI 챗지피티의 도움을 받아 게시판을 생성하고, 앞 내용들을 응용하여

상품등록 페이지를 생성해보았습니다.                                                                                                                                   

 (게시판 부분은 위 참고자료에 자세하게 나와있으므로 간단하게 요약해서 작성하였습니다.)

  • 기본 설명

스프링부트란 자바 기반의 웹 애플리케이션을 쉽고 빠르게 개발할 수 있도록 도와주는 프레임워크입니다.

기존 스프링(Spring)은 설정이 복잡하고 초기 환경 구축에 많은 시간이 필요했지만, 스프링부트는 이러한 복잡한 설정을 자동화하여 개발자가 핵심 기능 구현에 집중할 수 있도록 만들어졌습니다.

특히 게시판, 쇼핑몰, 블로그, 회원관리 같은 웹 프로젝트를 개발할 때 많이 사용되며, 최근에는 기업 실무에서도 가장 많이 사용되는 자바 웹 프레임워크 중 하나입니다.

 

  • 1. 게시판 생성

  • 1-1) 메인 페이지와 질문 테이블 생성

MainController.java는 홈페이지의 첫 화면을 처리합니다. 사용자가 URL을 입력하면 게시글 목록 페이지로 이동합니다.

SecurityConfig.java는 시큐리티 설정으로 로그인과 권한 설정을 담당합니다.

로그인 설정과 비밀번호 암호화로 보안처리를 담당합니다.

Question.java에서는 게시글 데이터 구조를 정의합니다. Question.java안에 데이터를 입력하면 

이런 테이블이 자동으로 생성됩니다.

id subject content create_date
1 질문 제목 질문 내용 2025-01-01

 

QuestionController.java는 사용자의 요청을 받는 곳입니다. 사용자가 페이지 들어오면 가장 먼저 실행되는 곳이라고 생각하면 됩니다. 

QuestionForm.java는 사용자 입력값 검증용 클래스입니다.제목 비어있나? 글자 수 초과했나?를 검사하고 에러메시지를 처리해줍니다.

QuestionRepository.java는 DB와 직접 연결되는 곳입니다. 데이터를 저장/조회하는 인터페이스입니다.

리파지토리는 일반 클래스가 아닌 리파지토리 클래스로 생성해야합니다.

QuestionService.java는 실제 핵심 기능(비즈니스 로직)을 담당합니다.

Controller는 “지시만” 하고 실제 일은 Service가 합니다.

하는 일로는 글 저장, 글 조회, 글 수정, 글 삭제, 추천 기능, 검색 기능 등 많은 것들을 수행하고 있습니다.

 

  • 1-2) 답변 테이블 생성

질문 테이블과 같이 설정해줍니다.

 

  • 1-3) 회원 테이블  생성 및 로그인, 회원가입 페이지 생성

SiteUser.java는 회원 테이블의 구조를 정의합니다. 회원 번호, 로그인 아이디, 비밀번호, 이메일 등 설정할 수 있습니다.

UserCreateForm.java는 회원가입 입력값을 저장하고 검증합니다. 회원가입을 할 때 빈칸이 있는지, 비밀번호가 일치하는지, 이메일 형식에 맞는지를 검사하여 에러 메시지를 출력하게 해줍니다.

UserSecurityService.java는 Spring Security 로그인 인증 처리 클래스로, 사용자가 로그인 할 시 입력한 정보와 일치한 회원이 있는지 확인합니다.

 

 

  • 1-4) HTML설정

question_list.html은 게시글의 목록 페이지를 생성합니다.

question_detail.html은 게시글의 상세 페이지를 보여줍니다.

question_form.html은 글 작성 페이지를 생성합니다. 사용자가 글을 쓰는 화면입니다.

그 외에도 form_errors.html: 에러 메시지 출력 signup_form.html: 회원가입 화면 navbar.html: 메뉴바 화면 등 여러 설정들을 할 수 있습니다.

 

  • 1-4) 동작

localhost:8080/question/list로 이동하여 메인 페이지에 접속한 화면입니다.

질문 등록하기를 누르면 아래의 페이지가 보이게 되고 내용을 제외한 제목만 입력해 보겠습니다.

위에서 설정한 것과 같이 에러 메시지와 함께 제목과 내용을 모두 입력해야 저장이 된다는 것을 알 수 있습니다.

내용까지 입력하여 저장하기를 누르면 아래의 사진처럼 게시판에 글이 올라온 것을 확인할 수 있습니다.

스마일서브의 글을 클릭하여 들어가 답변을 입력해보겠습니다.

글 옆에 숫자 1이 표시되어 답변이 한 개가 입력된 것을 알 수 있습니다. 다음으로 우측 상단에 보이는 바를 눌러 로그인과 회원가입 버튼을 눌러 보겠습니다.

아래 사진처럼 양식에 맞춰지지 않으면 에러 메시지가 나옵니다.

전화번호 또한 010-xxxx-xxxx 의 양식에 맞춰지지 않아 에러 메시지가 출력된 것을 확인할 수 있습니다.

 

 

  • 2. 상품등록 테이블 생성

위에 내용을 응용하여 상품 등록 테이블을 생성해보겠습니다.

  • 2-1) 상품 등록 테이블 생성

Product.java는 상품 테이블의 구조를 정의합니다. 상품 번호, 상품 이름, 가격, 설명, 등록일을 만들어보았습니다.

컨트롤러를 설정합니다.

 

ProductForm.java는 사용자가 입력한 상품 데이터를 저장하고 검증하는 클래스이므로 각 항목을 입력하지 않았을 경우 에러

메시지가 출력되게 설정해보았습니다.

ProductRepository.java는 DB의 접근을 담당하기 때문에 일반 클래스가 아닌 리파지토리 클래스로 설정해줘야합니다.

 

  • 2-2) HTML 설정

product_detail.html은 상품 하나하나 자세하게 보여줍니다.

예시) 상품명: 삼성 노트북
가격: 100만원
설명: 고성능 노트북

product_form.html은 상품 등록/수정 페이지이므로 상품 등록할 때 보게 되는 페이지입니다.

product_list.html은 상품 전체 목록을 화면에 출력하는 페이지입니다. 등록한 상품들을 보여주는 페이지입니다. 

  • 2-3) 동작

localhost:8080/product/list에 들어오면 컨트롤러에서 URL을 처리해 메인 화면이 생성됩니다.

상품을 등록 할 때 양식에 맞지 않는다면 에러 메시지가 출력됩니다.

상품을 등록할 때 가격을 숫자로만 입력해도

 

,가 자동으로 수정되는 것을 확인할 수 있습니다.

 

상품이 정상적으로 등록된 것을 확인하였습니다.

  • 마무리

이번 블로그에서는 스프링부트를 이용하여 게시판 기능과 상품 등록 기능을 구현해보았습니다.

스프링부트는 복잡한 설정 없이 빠르게 웹 애플리케이션을 개발할 수 있다는 점에서 매우 효율적인 프레임워크라는 것을 알 수 있었으며,

처음에는 클래스 구조와 데이터 흐름이 어렵게 느껴질 수 있지만, Controller → Repository → Database → HTML로 이어지는 전체 흐름을 이해하면 스프링부트 프로젝트 구조를 훨씬 쉽게 이해할 수 있습니다.

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다