Tiny Bunny
[Spring Boot] JWT (1) JSON Web Token
·
Java | Spring
JWT(JSON Web Token)JWT는 사용자 인증을 위한 토큰 기반 방식입니다.기존의 세션 방식보다 가볍고 확장성이 뛰어나며, 서버 부하가 적습니다.1. 기존 세션 방식 vs JWT 방식웹에서 로그인 인증을 할 때, 기존의 세션 방식과 JWT 방식의 차이점을 먼저 살펴보겠습니다.기존 세션 방식 (Session-based Authentication)사용자가 로그인하면 서버가 세션을 생성하여 사용자 정보를 저장이후 요청마다 세션 ID를 포함하여 서버에서 인증 확인서버가 세션을 저장해야 하므로 확장성이 낮음 (부하 증가!)JWT 방식 (Token-based Authentication)사용자가 로그인하면 서버가 JWT(토큰)를 발급이후 요청마다 JWT를 포함하여 인증서버가 세션을 저장할 필요 없음 (확장성..
[Spring Boot] Bank App (14) 파일 업로드 2단계
·
Java | Spring
Spring Boot에서 정적 리소스를 관리하는 방법 이해WebMvcConfig에서 addResourceHandlers()를 활용해 정적 파일 접근 경로 설정회원가입 시 업로드된 프로필 이미지를 웹 페이지에서 표시하는 방법 구현파일 업로드 경로를 application.yml을 이용해 동적으로 설정하는 방법 학습 1. Spring Boot에서 정적 리소스를 관리하는 방법 🔍웹 애플리케이션에서는 이미지, CSS, JS 등의 정적 리소스를 관리할 필요가 있습니다.Spring Boot에서는 기본적으로 static 폴더 내의 파일을 정적 리소스로 제공합니다.그러나 사용자가 직접 업로드한 이미지 파일을 웹 페이지에서 표시하려면 별도의 설정이 필요합니다.이를 위해 Spring의 WebMvcConfigurer를 활용..
[Spring Boot] Bank App (13) 파일 업로드 1단계 (Multipart)
·
Java | Spring
멀티파트(Multipart)의 개념과 HTTP 요청 방식 이해Spring Boot에서 멀티파트 요청 처리하기회원가입 시 파일 업로드 기능 구현전체 코드 흐름과 실행 과정 확인1. 멀티파트(Multipart)멀티파트(Multipart)는 웹에서 파일을 업로드할 때 사용하는 데이터 전송 방식입니다."멀티파트"라는 이름에서 알 수 있듯이, 하나의 HTTP 요청에 여러 개의 데이터를 포함할 수 있습니다.HTTP 요청의 기본 구조HTTP 요청은 크게 세 가지 부분으로 구성됩니다.[1] 시작 라인 (Start Line) [2] 헤더 (Headers) [3] 바디 (Body) 1.1 일반적인 HTTP 요청 예시✅ 텍스트 기반 요청 (단순 POST 요청) POST /example HTTP/1.1Host: examp..
[Spring Boot] Bank App (12) 사용자 비밀번호 암호화 처리
·
Java | Spring
SpringSecurityCrypto 의존성 추가 및 BCryptPasswordEncoder 빈 등록회원가입 시 비밀번호를 안전하게 암호화하여 저장로그인 시 암호화된 비밀번호를 검증하는 기능 추가전체 코드 확인 및 실행 흐름 이해🚨 주의비밀번호 암호화 후에는 기존 H2 데이터베이스에 저장된 유저로 로그인할 수 없습니다.비밀번호 검증 방식이 변경되었으므로, 반드시 새로운 유저를 가입한 후 테스트하세요.1. Spring Security 의존성 추가하기먼저, Spring Security의 암호화 기능을 사용하기 위해 Gradle에 의존성을 추가해야 합니다. Gradle 설정 (build.gradle)// Spring Security 암호화 기능 추가implementation 'org.springframewo..
[Spring Boot] Bank App (11) intercepter 활용(인증검사 공통 처리)
·
Java | Spring
1. 인터셉터(Interceptor)란?Spring MVC의 핵심 기능 중 하나로, 웹 애플리케이션의 공통 처리 로직을 재사용할 수 있도록 돕는 기능입니다.인터셉터는 요청(Request)이 컨트롤러에 도달하기 전/후에 특정 로직을 실행할 수 있도록 합니다.이는 AOP(Aspect-Oriented Programming)의 한 형태로 볼 수 있습니다.인터셉터의 주요 목적1. 인증 및 권한 부여로그인한 사용자만 특정 요청을 수행할 수 있도록 제한2. 로깅 및 감사(Auditing)요청 및 응답에 대한 로깅을 수행하여 시스템 보안 강화3. 성능 모니터링요청 처리 시간을 측정하여 성능 최적화에 활용4. 공통 응답 데이터 추가모든 응답에 공통적인 데이터를 포함 (예: 헤더 설정)인터셉터의 동작 흐름1️⃣ preHa..
[Spring Boot] Bank App (10) 계좌 상세보기 페이징 처리
·
Java | Spring
1. 개요웹 애플리케이션에서 많은 데이터를 한 번에 불러오면 속도 저하와 과부하가 발생할 수 있습니다.이를 해결하기 위해 페이징(Pagination) 기법을 사용하여 일정 개수의 데이터만 조회하고, 필요할 때 추가로 불러오도록 합니다.2. 부트스트랩의 그리드 시스템부트스트랩의 그리드 시스템은 화면을 12개의 컬럼으로 분할하여 반응형 웹 페이지를 쉽게 구성할 수 있도록 돕습니다.col-sm-8 → 작은 화면에서는 8개의 컬럼을 차지하는 레이아웃col-md-6 → 중간 화면에서는 6개의 컬럼을 차지하는 레이아웃 왼쪽 콘텐츠 오른쪽 콘텐츠 3. 플렉스박스(Flexbox)와 중앙 정렬플렉스박스(Flexbox)는 요소를 쉽게 정렬하고 배치할 수 있는 CSS 레이아웃 모델입니다..
[Spring Boot] 스프링 부트 동작 과정 다시 생각해보기
·
Java | Spring
이번 포스팅에서는 스프링 부트가 어떻게 동작하는지 단계별로 차근차근 살펴보겠습니다.1. JVM 실행 → Gradle 빌드된 .jar 실행우리가 만든 스프링 부트 애플리케이션은 .jar 파일로 빌드됩니다.이 .jar 파일이 실행되면, JVM(Java Virtual Machine)이 이를 읽고 애플리케이션을 시작합니다.2. 스프링 부트 초기화 (SpringApplication.run())main() 함수에서 SpringApplication.run(Application.class, args)를 호출하면 스프링 부트의 초기화 과정이 시작됩니다.이 과정에서 Spring Boot의 자동 설정(Auto Configuration), 애플리케이션 컨텍스트(Application Context) 생성 등이 이루어집니다. @..
[Spring Boot] Bank App (5) 회원 가입 및 로그인 코드
·
Java | Spring
회원 가입 및 로그인 코드 정리1. DTO(Data Transfer Object) 설계회원가입과 로그인을 처리하기 위해 DTO를 사용합니다.회원가입 DTO (SignUpDTO) package com.tenco.bank.dto;import com.tenco.bank.repository.model.User;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructor@Builderpublic class SignUpDTO { private String username; private String p..
[Spring Boot] Bank App (2) 모델링, DB 설계
·
Java | Spring
모델링모델링이란?모델링은 현실 세계의 개념을 컴퓨터 시스템에서 표현하는 과정이에요.중요한 정보를 정리하고, 관계를 정의하면서 데이터 구조와 알고리즘을 설계하는 작업이에요.특히, 데이터베이스 모델링은 정보 시스템의 데이터 구조를 설계하는 데 초점이 맞춰져 있어요.그런데 DB의 데이터 타입과 자바의 데이터 타입은 완전히 같지 않아요.그래서 DB의 개념을 자바에서 활용할 수 있도록 변환하는 과정이 필요합니다.ORM (Object-Relational Mapping)ORM은 객체와 관계형 데이터베이스를 매핑하는 기술이에요.쉽게 말하면, SQL을 직접 작성하지 않고도 객체의 속성과 메서드를 활용해 데이터를 조작할 수 있는 방법이에요.ORM을 사용하면 좋은 점✔ SQL을 직접 작성하지 않아도 돼서 코드가 간결해져요...
[Spring Boot] Bank App (1) 초기 세팅과 환경 구축
·
Java | Spring
Spring Boot 프로젝트를 실행하는 방법과 Gradle 설정, 그리고 application.yml 파일 관리에 대해 정리해볼게요.Project  SettingSpring Boot 프로젝트를 일반 Java 프로젝트처럼 실행 가능main() 함수가 있는 클래스를 실행IntelliJ에서 실행하는 방법프로젝트에서 ▶ Run 버튼을 눌러 실행Application 실행을 선택하면 바로 실행됨별도의 빌드 도구 없이 Java만 설치되어 있으면 실행 가능Gradle로 Spring Boot 프로젝트 실행하기Spring Boot 프로젝트는 일반 Java 프로젝트와 다르게 Gradle 또는 Maven을 사용해서 실행하는 게 일반적이에요.실행 방법Gradle Run Configuration에서 bootRun 설정 후 실행..