본문 바로가기

SpringBoot

(26)
[Do it] 3장 스프링 부트 고급 기능 익히기(3) 1. 회원 가입 기능 구현하기 1) 회원 가입 기능 구성하기 - 회원 정보와 관련된 데이터를 저장하고 이를 관리하는 엔티티와 리포지터리 - 폼과 컨트롤러와 같은 요소를 생성해 사용자로부터 입력받은 데이터를 웹 프로그램에서 사용할 수 있도록 회원 엔티티 생성 속성 이름 설명 username 사용자 이름(또는 사용자 ID) password 비밀번호 email 이메일 user/SiteUser.java package com.example.demo.user; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Gene..
[Do it] 3장 스프링 부트 고급 기능 익히기(2) 1. 게시물에 번호 지정하기 1) 게시물 번호 공식 만들기 게시물 번호 = 전체 게시물 개수 - (현재 페이지 * 페이지당 게시물 개수) - 나열 인덱스 게시물 번호 - 최종 표시될 게시물 번호 전체 게시물 개수 - 데이터베이스에 저장된 게시물 전체 개수 현재 페이지 - 페이징에서 현재 선택한 페이지 페이지당 게시물 개수 - 한 페이지당 보여 줄 게시물의 개수 나열 인덱스 - for 문 안의 게시물 순서 - 현재 페이지에서 표시할 수 있는 게시물의 인덱스 - ex) 10개를 표시하는 페이지에서는 0~9, 2개를 표시하는 페이지에서는 0~1로 반복 2) 게시물 번호 공식 적용하기 templates/question_list.html 항목 설명 paging.getTotalElements 전체 게시물 개수 pa..
[Do it] 3장 스프링 부트 고급 기능 익히기(1) 1. 내비게이션 바 추가 1) 내비게이션 바 만들기 내비게이션 바 - 모든 화면 위쪽에 고정되어 있는 부트스트랩의 컴포넌트 중 하나 templates/layout.html - 태그를 활용하여 내비게이션 바에 메뉴 추가 가능 ... SBB 로그인 ... 2) 햄버거 메뉴 - 브라우저의 가로 사이즈를 마우스를 이용해 점점 줄이면 햄버거 메뉴 버튼이 생김 - 로그인 링크는 사라짐 - 부트스트랩은 브라우저의 크기가 작아지면 자동으로 내비게이션 바에 있는 링크들을 햄버거 메뉴 버튼으로 숨김 - 햄버거 메뉴 버튼을 활용할 수 있도록 부트스트랩 자바스크립트 파일(bootstrap.map.js)을 static 디렉터리로 복사 - 자바스크립트 파일을 사용할 수 있도록 layout.html 수정 3) 내비게이션 바 분리하..
[Do it] 스프링 부트 기본 기능 익히기(6) 1. 부트스트랩으로 화면 꾸미기 부트스트랩(bootstrap) - 트위터에서 개발하면서 만들어진 프론트엔드 라이브러리 1) 부트스트랩 설치하기 Download · Bootstrap v5.3 (getbootstrap.com) Download Download Bootstrap to get the compiled CSS and JavaScript, source code, or include it with your favorite package managers like npm, RubyGems, and more. getbootstrap.com - 압축 파일 안에 bootstrap.min.css 파일을 복사하여 스태틱 디렉터리에 저장 2) 부트스트랩 적용하기 templates/question_list.html 번..
[Do it] 2장 스프링 부트 기본 기능 익히기(5) 1. URL 프리픽스 - 프리픽스(preifx)란 URL의 접두사 또는 시작 부분을 가리키는 말로, QuestionController에 속하는 URL 매핑은 항상 /question 프리픽스로 시작하도록 설정 가능 QuestionController.java package com.example.demo.question; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.Path..
[Do it] 2장 스프링 부트 기본 기능 익히기 (4) 1. 서비스 활용하기 - 대부분의 규모 있는 스프링 부트 프로젝트는 컨트롤러에서 리포지터리를 직접 호출하지 않고 중간에 서비스를 두어 데이터를 처리 1) 서비스가 필요한 이유 1-1) 복잡한 코드 모듈화 가능 - A,B 컨트롤러가 C 리포지터리의 메서드 a,b,c를 호출해 사용하는 중복된 코드를 가지게 되는 경우 - C 리포지터리의 a,b,c 메서드를 호출하는 기능을 서비스로 만들고 컨트롤러에서 이 서비스를 호출하여 사용할 수 있음 1-2) 엔티티 객체를 DTO 객체로 변환 가능 - 엔티티 클래스는 컨트롤러에서 사용하지 않도록 설계 - 엔티티 클래스를 대신해 사용할 DTO(Data Transfer Obejct) 클래스 필요 - 서비스는 컨트롤러와 리포지터리의 중간에서 엔티티 객체와 DTO 객체를 서로 변..
[Do it] 2장 스프링 부트 기본 익히기(3) 1. 질문 목록 만들기 - 질문 목록이 담긴 페이지 1) 질문 목록 URL 매핑하기 QuestionController.java - /question/list URL을 매핑하기 위한 컨트롤러 package com.example.demo.question; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class QuestionController{ @GetMapping("/question/list") @ResponseBod..
[Do it] 2장 스프링 부트 기본 기능 익히기(2) 1. 리포지터리로 데이터베이스 관리하기 1) 리포지터리 생성 JPA 리포지터리 - 데이터베이스 테이블의 데이터들을 저장, 조회, 수정, 삭제 등을 할 수 있도록 도와주는 인터페이스 - 테이블에 접근하고, 데이터를 관리하는 메서드를 제공 - CRUD 작업을 처리하는 메서드들을 이미 내장하고 있어 데이터 관리 작업을 좀 더 편리하게 처리할 수 있음 QuestionRepository.java package com.example.demo; import org.springframework.data.jpa.repository.JpaRepository; public interface QuestionRepository extends JpaRepository { } - 생성한 QuestionRepository 인터페이스..