티스토리

leem Achive
검색하기

블로그 홈

leem Achive

rxxm.tistory.com/m

Dev Notes

구독자
4
방명록 방문하기

주요 글 목록

  • [Spring Boot] JWT (1) JSON Web Token JWT(JSON Web Token)JWT는 사용자 인증을 위한 토큰 기반 방식입니다.기존의 세션 방식보다 가볍고 확장성이 뛰어나며, 서버 부하가 적습니다.1. 기존 세션 방식 vs JWT 방식웹에서 로그인 인증을 할 때, 기존의 세션 방식과 JWT 방식의 차이점을 먼저 살펴보겠습니다.기존 세션 방식 (Session-based Authentication)사용자가 로그인하면 서버가 세션을 생성하여 사용자 정보를 저장이후 요청마다 세션 ID를 포함하여 서버에서 인증 확인서버가 세션을 저장해야 하므로 확장성이 낮음 (부하 증가!)JWT 방식 (Token-based Authentication)사용자가 로그인하면 서버가 JWT(토큰)를 발급이후 요청마다 JWT를 포함하여 인증서버가 세션을 저장할 필요 없음 (확장성.. 공감수 0 댓글수 0 2025. 2. 25.
  • [Spring Boot] Bank App (14) 파일 업로드 2단계 Spring Boot에서 정적 리소스를 관리하는 방법 이해WebMvcConfig에서 addResourceHandlers()를 활용해 정적 파일 접근 경로 설정회원가입 시 업로드된 프로필 이미지를 웹 페이지에서 표시하는 방법 구현파일 업로드 경로를 application.yml을 이용해 동적으로 설정하는 방법 학습 1. Spring Boot에서 정적 리소스를 관리하는 방법 🔍웹 애플리케이션에서는 이미지, CSS, JS 등의 정적 리소스를 관리할 필요가 있습니다.Spring Boot에서는 기본적으로 static 폴더 내의 파일을 정적 리소스로 제공합니다.그러나 사용자가 직접 업로드한 이미지 파일을 웹 페이지에서 표시하려면 별도의 설정이 필요합니다.이를 위해 Spring의 WebMvcConfigurer를 활용.. 공감수 0 댓글수 0 2025. 2. 25.
  • [Spring Boot] Bank App (13) 파일 업로드 1단계 (Multipart) 멀티파트(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.. 공감수 0 댓글수 0 2025. 2. 25.
  • [Spring Boot] Bank App (12) 사용자 비밀번호 암호화 처리 SpringSecurityCrypto 의존성 추가 및 BCryptPasswordEncoder 빈 등록회원가입 시 비밀번호를 안전하게 암호화하여 저장로그인 시 암호화된 비밀번호를 검증하는 기능 추가전체 코드 확인 및 실행 흐름 이해🚨 주의비밀번호 암호화 후에는 기존 H2 데이터베이스에 저장된 유저로 로그인할 수 없습니다.비밀번호 검증 방식이 변경되었으므로, 반드시 새로운 유저를 가입한 후 테스트하세요.1. Spring Security 의존성 추가하기먼저, Spring Security의 암호화 기능을 사용하기 위해 Gradle에 의존성을 추가해야 합니다. Gradle 설정 (build.gradle)// Spring Security 암호화 기능 추가implementation 'org.springframewo.. 공감수 0 댓글수 0 2025. 2. 25.
  • [Spring Boot] Bank App (11) intercepter 활용(인증검사 공통 처리) 1. 인터셉터(Interceptor)란?Spring MVC의 핵심 기능 중 하나로, 웹 애플리케이션의 공통 처리 로직을 재사용할 수 있도록 돕는 기능입니다.인터셉터는 요청(Request)이 컨트롤러에 도달하기 전/후에 특정 로직을 실행할 수 있도록 합니다.이는 AOP(Aspect-Oriented Programming)의 한 형태로 볼 수 있습니다.인터셉터의 주요 목적1. 인증 및 권한 부여로그인한 사용자만 특정 요청을 수행할 수 있도록 제한2. 로깅 및 감사(Auditing)요청 및 응답에 대한 로깅을 수행하여 시스템 보안 강화3. 성능 모니터링요청 처리 시간을 측정하여 성능 최적화에 활용4. 공통 응답 데이터 추가모든 응답에 공통적인 데이터를 포함 (예: 헤더 설정)인터셉터의 동작 흐름1️⃣ preHa.. 공감수 1 댓글수 0 2025. 2. 21.
  • [Spring Boot] Bank App (10) 계좌 상세보기 페이징 처리 1. 개요웹 애플리케이션에서 많은 데이터를 한 번에 불러오면 속도 저하와 과부하가 발생할 수 있습니다.이를 해결하기 위해 페이징(Pagination) 기법을 사용하여 일정 개수의 데이터만 조회하고, 필요할 때 추가로 불러오도록 합니다.2. 부트스트랩의 그리드 시스템부트스트랩의 그리드 시스템은 화면을 12개의 컬럼으로 분할하여 반응형 웹 페이지를 쉽게 구성할 수 있도록 돕습니다.col-sm-8 → 작은 화면에서는 8개의 컬럼을 차지하는 레이아웃col-md-6 → 중간 화면에서는 6개의 컬럼을 차지하는 레이아웃 왼쪽 콘텐츠 오른쪽 콘텐츠 3. 플렉스박스(Flexbox)와 중앙 정렬플렉스박스(Flexbox)는 요소를 쉽게 정렬하고 배치할 수 있는 CSS 레이아웃 모델입니다.. 공감수 2 댓글수 1 2025. 2. 21.
  • [Spring Boot] 스프링 부트 동작 과정 다시 생각해보기 이번 포스팅에서는 스프링 부트가 어떻게 동작하는지 단계별로 차근차근 살펴보겠습니다.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) 생성 등이 이루어집니다. @.. 공감수 1 댓글수 0 2025. 2. 21.
  • [Spring Boot] Bank App (9) 계좌 상세보기 이번에는 계좌 상세 보기 기능을 단계별로 구현하는 방법을 설명하겠습니다.계좌 상세 보기를 통해 특정 계좌의 입금, 출금, 이체 내역을 확인할 수 있습니다.사용자는 전체 거래 내역 또는 특정 유형(입금, 출금)만 필터링할 수도 있습니다. 계좌 상세 보기: 특정 계좌의 거래 내역을 확인하는 기능입니다.유형별 조회: 모든 거래, 입금만, 출금만 보기 기능을 제공합니다.목표: 계좌 번호와 사용자의 인증 상태를 확인하고, DB에서 내역을 조회하여 화면에 출력합니다.1. 데이터베이스 테이블 생성테이블 구조 create table user_tb( id int auto_increment primary key, username varchar(50) not null unique, password varchar(1.. 공감수 0 댓글수 0 2025. 2. 19.
  • [Spring Boot] Bank App (8) 계좌 입금 & 이체 입금 (Deposit): 사용자가 자신의 은행 계좌에 돈을 추가하는 기능입니다.이체 (Transfer): 한 계좌에서 다른 계좌로 돈을 옮기는 기능으로, 출금 계좌의 잔액이 충분해야만 이체가 성공합니다.이 기능들은 실제 은행 애플리케이션의 핵심 기능으로, 안전하고 신뢰할 수 있는 데이터 처리가 중요합니다.인증: 로그인된 사용자만 기능을 사용할 수 있도록 보장합니다.유효성 검사: 입력한 값(계좌 번호, 금액 등)이 유효한지 확인합니다.계좌 검증: 계좌가 실제로 존재하는지, 그리고 사용자의 계좌인지 확인합니다.비즈니스 로직 처리: 계좌의 잔액을 업데이트하고, 거래 내역을 저장합니다.DB 업데이트: 계좌 정보를 데이터베이스에 반영하고 거래 내역을 기록합니다.입금1. DTO (Data Transfer Objec.. 공감수 0 댓글수 0 2025. 2. 19.
  • [Spring Boot] Bank App (7) 계좌 목록 & 출금 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.. 공감수 1 댓글수 0 2025. 2. 18.
  • [Spring Boot] Bank App (6) 계좌 생성 1. 계좌 생성 과정 개요웹 애플리케이션에서 계좌 생성 기능을 구현하려면 다음과 같은 흐름이 필요합니다.기본 흐름1️⃣ 사용자가 계좌 생성 페이지로 이동2️⃣ 계좌 정보를 입력하고 제출3️⃣ 서버에서 인증 검사 (로그인 확인)4️⃣ 입력 값 검증 (유효성 검사)5️⃣ DB에 계좌 정보 저장6️⃣ 성공 시 다음 페이지로 리다이렉트2. 계좌 생성 화면 만들기JSP 파일 (account/save.jsp)사용자가 계좌 정보를 입력할 수 있는 페이지입니다. 계좌 생성 🏦 Bank App에 오신 걸 환영합니다. 계좌 번호: 계좌 비밀번호: 입금 금액: 계좌 생성 사용자가 계좌 번호, 비밀번호, 입금 금액을 입력하고 .. 공감수 0 댓글수 0 2025. 2. 18.
  • [Spring Boot] Bank App (5) 회원 가입 및 로그인 코드 회원 가입 및 로그인 코드 정리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.. 공감수 0 댓글수 0 2025. 2. 18.
  • [Spring Boot] Bank App (4) MyBatis 설정 1. Spring 어노테이션 개념 정리@Autowired의존성 주입 (Dependency Injection) 수행@ControllerSpring MVC 컨트롤러를 정의@Service비즈니스 로직을 처리하는 서비스 계층을 정의@Repository데이터 액세스 계층을 정의@RestController@Controller + @ResponseBody (REST API 컨트롤러)@ConfigurationSpring 설정 클래스 지정@ComponentSpring에서 관리해야 하는 일반적인 클래스 지정@Configuration vs @Component 차이@Configuration: 스프링 빈을 설정하고 등록하는 클래스에 사용됨 (주로 @Bean과 함께 사용).@Component: 단순히 스프링이 관리해야 하는 일반.. 공감수 1 댓글수 0 2025. 2. 17.
  • [Spring Boot] Bank App (3) Exception Handler 처리 1. @ControllerAdvice, @RestControllerAdvice란?예외 처리의 필요성웹 애플리케이션에서 예외(Exception)는 필연적으로 발생합니다. 하지만 이를 적절하게 관리하지 않으면 애플리케이션이 비정상적으로 종료되거나, 클라이언트가 원치 않는 에러 페이지를 보게 될 수 있습니다.💡 Spring에서는 @ControllerAdvice와 @RestControllerAdvice를 사용하여 전역 예외 처리를 할 수 있습니다.@ControllerAdvice전통적인 웹 애플리케이션에서 사용되며, HTML 뷰를 반환하는 컨트롤러의 예외를 처리함@RestControllerAdviceRESTful 웹 서비스에서 사용되며, JSON 또는 XML 응답을 반환하는 컨트롤러의 예외를 처리함@Contro.. 공감수 0 댓글수 0 2025. 2. 17.
  • [Spring Boot] Bank App (2) 모델링, DB 설계 모델링모델링이란?모델링은 현실 세계의 개념을 컴퓨터 시스템에서 표현하는 과정이에요.중요한 정보를 정리하고, 관계를 정의하면서 데이터 구조와 알고리즘을 설계하는 작업이에요.특히, 데이터베이스 모델링은 정보 시스템의 데이터 구조를 설계하는 데 초점이 맞춰져 있어요.그런데 DB의 데이터 타입과 자바의 데이터 타입은 완전히 같지 않아요.그래서 DB의 개념을 자바에서 활용할 수 있도록 변환하는 과정이 필요합니다.ORM (Object-Relational Mapping)ORM은 객체와 관계형 데이터베이스를 매핑하는 기술이에요.쉽게 말하면, SQL을 직접 작성하지 않고도 객체의 속성과 메서드를 활용해 데이터를 조작할 수 있는 방법이에요.ORM을 사용하면 좋은 점✔ SQL을 직접 작성하지 않아도 돼서 코드가 간결해져요... 공감수 2 댓글수 0 2025. 2. 17.
  • [Spring Boot] Bank App (1) 초기 세팅과 환경 구축 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 설정 후 실행.. 공감수 2 댓글수 0 2025. 2. 17.
  • Java 배열과 메서드, 컬렉션: 프로그래밍 기초 이해하기 프로그래밍 입문자들을 위해 배열(Array), 메서드(Method), 컬렉션(Collection) 등 중요한 개념들을 알아보려 합니다. 비유와 예시를 통해 개념을 쉽게 이해할 수 있도록 써보았습니다. 1. 배열(Array) 배열: 같은 데이터 타입의 값들을 연속된 메모리 공간에 저장하는 고정 크기 자료구조입니다. 💡 영화관 좌석을 생각해 봅시다.각 좌석에는 고유한 번호(인덱스)가 있고, 각 자리에 손님(데이터)이 앉습니다.배열은 "같은 타입의 데이터"(예: 나이, 점수)만 저장할 수 있어요.인덱스는 0부터 시작합니다.영화관 1번 좌석 → 배열의 0번 인덱스.5번 좌석 → 배열의 4번 인덱스.특징크기가 고정: 배열은 처음에 공간 크기를 정하면 나중에 변경할 수 없어요.빠른 데이터 접근: 인덱스를 사용해 .. 공감수 1 댓글수 0 2025. 1. 14.
  • Java 객체지향 프로그래밍: 비유로 이해하는 기초 개념 이번 포스팅에서는 객체지향 프로그래밍(Object-Oriented Programming, OOP)을 붕어빵 틀에 비유해서 쉽게 정리 하여 저와 같은 초보자 분들도 이해할 수 있도록 설명해보겠습니다. 1. 객체지향 프로그래밍(OOP) 🖥️ OOP는 프로그램을 객체(Object) 중심으로 개발하는 프로그래밍 기법입니다. 클래스(Class): 객체를 생성하기 위한 설계도.객체(Object): 속성과 동작을 가진 독립적인 개체. 필요성코드 재사용성: 같은 설계를 반복할 필요 없이 재활용 가능.유지보수성: 각 객체를 독립적으로 관리해 수정이 용이.확장성: 기존 코드를 변경하지 않고도 새로운 기능 추가 가능.소프트웨어 품질 향상: 코드 가독성과 설계 구조가 개선.🍞 이해 OOP를 현실 세계에 비유하면 붕어빵 틀.. 공감수 1 댓글수 0 2025. 1. 14.
  • Java의 디자인 패턴: 싱글톤과 어댑터 패턴 싱글톤 패턴 (Singleton Pattern)싱글톤 패턴은 클래스의 인스턴스를 단 하나만 생성하도록 보장하는 디자인 패턴입니다.주로 공유 자원을 관리하거나, 글로벌 상태를 유지해야 하는 경우에 사용됩니다.메모리 절약: 하나의 인스턴스만 생성되므로 불필요한 메모리 사용을 방지.글로벌 접근: 애플리케이션 어디에서든 동일한 객체를 참조 가능.일관성 유지: 여러 인스턴스가 생성될 경우 발생할 수 있는 데이터 불일치 방지.싱글톤 패턴 구현 방법1. 정적 변수로 유일한 인스턴스 생성클래스 내부에 static 변수로 인스턴스를 저장합니다.static은 클래스당 하나만 존재하므로 유일성을 보장합니다.private static SingleTon instance;2. 생성자를 private으로 제한외부에서 new 키워드.. 공감수 1 댓글수 0 2025. 1. 9.
  • Java 콜백 메서드 이해와 구현 콜백 메서드콜백 메서드는 특정 작업이 완료되었을 때 호출되는 메서드입니다.예를 들어, "버튼이 눌리면 이 일을 해줘!"와 같이 이벤트와 함께 동작을 실행하는 방식을 말해요.콜백 메서드를 사용하면 코드를 재사용할 수 있고, 더 유연하게 설계할 수 있습니다.필요성이벤트 기반 동작: 버튼 클릭, 데이터 로드 완료 등 특정 이벤트가 발생했을 때 실행할 작업을 정의할 수 있어요.코드 재사용성: 한 번 만들어 놓으면 여러 상황에서 동일한 메서드를 재사용할 수 있습니다.유연성: 실행 동작을 나중에 정의하거나 변경할 수 있어요. 코드를 더 깔끔하고 확장성 있게 만듭니다.작동 원리콜백 메서드의 핵심은 인터페이스와 메서드 구현입니다.인터페이스로 메서드의 틀 정의: 어떤 작업을 할지 선언만 합니다.구현 클래스로 구체적인 동.. 공감수 1 댓글수 0 2025. 1. 9.
  • Java의 기본 문법: 조건문 (if문, else if문, switch문) 조건문조건문은 프로그램의 실행 흐름을 제어하는 데 사용됩니다. 특정 조건을 만족할 때만 코드를 실행하거나, 여러 조건 중 하나를 선택적으로 실행하고자 할 때 사용됩니다.조건문에는 if문, else if문, else문, 그리고 switch문이 포함됩니다.1. if문특정 조건이 참(true)일 경우, 해당 조건문 안의 코드를 실행합니다.조건이 거짓(false)이면 코드 블록을 실행하지 않습니다.if (condition) { // 조건이 참일 때 실행되는 코드} 단일 조건 검사를 수행합니다.조건이 참일 때만 실행되므로, 단순한 로직에 적합합니다.2. else문if문의 조건이 거짓(false)일 경우 실행되는 코드를 정의합니다.if (condition) { // 조건이 참일 때 실행되는 코드} els.. 공감수 1 댓글수 0 2025. 1. 6.
  • Java의 기본 문법: 변수와 자료형 Java는 정적 타입을 사용하는 언어로, 변수의 타입을 미리 선언해야 합니다. 이번 포스팅에서는 Java의 변수, 기본 자료형, 그리고 String 타입과 래퍼 클래스에 대해 다룹니다. 특히 기본 자료형과 래퍼 클래스의 차이점과 왜 래퍼 클래스가 필요한지를 중점적으로 살펴보겠습니다.1. 변수란?변수는 데이터를 저장하기 위한 메모리 공간입니다. Java에서는 변수를 선언할 때 자료형을 명시해야 합니다.자료형 변수명 = 값; 예를 들어:int age = 25; // 정수형 변수 age 선언String name = "Alice"; // 문자열 변수 name 선언 2. 기본 자료형(Primitive Types)Java는 8개의 기본 자료형을 제공합니다. 각각의 자료형은 특정한 크기와 용도를 가지고 있습니다.자료.. 공감수 1 댓글수 2 2024. 12. 28.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.