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] Bank App (9) 계좌 상세보기
·
Java | Spring
이번에는 계좌 상세 보기 기능을 단계별로 구현하는 방법을 설명하겠습니다.계좌 상세 보기를 통해 특정 계좌의 입금, 출금, 이체 내역을 확인할 수 있습니다.사용자는 전체 거래 내역 또는 특정 유형(입금, 출금)만 필터링할 수도 있습니다. 계좌 상세 보기: 특정 계좌의 거래 내역을 확인하는 기능입니다.유형별 조회: 모든 거래, 입금만, 출금만 보기 기능을 제공합니다.목표: 계좌 번호와 사용자의 인증 상태를 확인하고, DB에서 내역을 조회하여 화면에 출력합니다.1. 데이터베이스 테이블 생성테이블 구조 create table user_tb( id int auto_increment primary key, username varchar(50) not null unique, password varchar(1..
[Spring Boot] Bank App (8) 계좌 입금 & 이체
·
Java | Spring
입금 (Deposit): 사용자가 자신의 은행 계좌에 돈을 추가하는 기능입니다.이체 (Transfer): 한 계좌에서 다른 계좌로 돈을 옮기는 기능으로, 출금 계좌의 잔액이 충분해야만 이체가 성공합니다.이 기능들은 실제 은행 애플리케이션의 핵심 기능으로, 안전하고 신뢰할 수 있는 데이터 처리가 중요합니다.인증: 로그인된 사용자만 기능을 사용할 수 있도록 보장합니다.유효성 검사: 입력한 값(계좌 번호, 금액 등)이 유효한지 확인합니다.계좌 검증: 계좌가 실제로 존재하는지, 그리고 사용자의 계좌인지 확인합니다.비즈니스 로직 처리: 계좌의 잔액을 업데이트하고, 거래 내역을 저장합니다.DB 업데이트: 계좌 정보를 데이터베이스에 반영하고 거래 내역을 기록합니다.입금1. DTO (Data Transfer Objec..
[Spring Boot] Bank App (7) 계좌 목록 & 출금
·
Java | Spring
1. 계좌 목록 조회 기능작업 순서1️⃣ AccountRepository 및 account.xml 쿼리 수정2️⃣ AccountService에서 계좌 목록 조회 기능 추가3️⃣ AccountController에서 계좌 목록 페이지 처리4️⃣ account/list.jsp에서 계좌 목록 출력계좌 목록 조회를 위한 Repository 코드 수정AccountRepository.javapackage com.tenco.bank.repository.interfaces;import java.util.List;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import com.tenco.bank.repositor..
[Spring Boot] Bank App (6) 계좌 생성
·
Java | Spring
1. 계좌 생성 과정 개요웹 애플리케이션에서 계좌 생성 기능을 구현하려면 다음과 같은 흐름이 필요합니다.기본 흐름1️⃣ 사용자가 계좌 생성 페이지로 이동2️⃣ 계좌 정보를 입력하고 제출3️⃣ 서버에서 인증 검사 (로그인 확인)4️⃣ 입력 값 검증 (유효성 검사)5️⃣ DB에 계좌 정보 저장6️⃣ 성공 시 다음 페이지로 리다이렉트2. 계좌 생성 화면 만들기JSP 파일 (account/save.jsp)사용자가 계좌 정보를 입력할 수 있는 페이지입니다. 계좌 생성 🏦 Bank App에 오신 걸 환영합니다. 계좌 번호: 계좌 비밀번호: 입금 금액: 계좌 생성 사용자가 계좌 번호, 비밀번호, 입금 금액을 입력하고 ..