Spring boot 60

스프링 부트의 간단한 요청과 응답 동작 방식

그림으로 요약한 요청과 응답의 흐름클라이언트 측에서 /user로 GET 요청을 한다. 이 요청은 톰캣을 거쳐 스프링 부트 애플리케이션으로 전달된다.이때, 스프링 부트의 디스패처 서블릿(DispatcherServlet)이 요청을 받는다. 디스패처 서블릿은 요청된 URL을 분석하고, 이를 처리할 수 있는 컨트롤러와 해당 메서드를 찾는다.컨트롤러에서 비즈니스 로직이 필요한 경우, 비즈니스 계층(Service) 및 퍼시스턴스 계층(Repository)을 통해 데이터를 처리한다.응답 과정에서 MIME 타입(예: JSON, HTML, XML 등)에 따라 다음과 같이 응답 방식이 달라진다.JSON, XML 등 데이터 포맷으로 응답해야 하는 경우, 메시지 컨버터가 작동한다. 예를 들어, @RespponseBody가 붙..

Spring boot 2024.09.27

스프링 부트의 웹 애플리케이션 구조

1. MVC 패턴MVC 패턴은 애플리케이션의 기능을 세 가지 역할로 분리하는 구조이다.Model(모델) : 데이터와 비즈니스 로직을 관리한다.View(뷰) : 사용자에게 데이터를 시각적으로 보여준다.Controller(컨트롤러) : 사용자의 요청을 받아 모델을 처리하고, 결과를 뷰에 전달한다.이 패턴은 애플리케이션의 UI 로직과 데이터 처리 로직을 분리하여 코드의 가독성을 높이고, 유지보수를 쉽게 한다. 2. 레이어드 아키텍처(계층 구조)레이어드 아키텍처는 애플리케이션을 세 가지 주요 계층으로 나누어 각각의 책임을 명확히 하는 구조를 말한다. 1. 프레젠테이션 계층(Presentaion Layer)역할 : 사용자와 상호작용하는 계층으로, HTTP 요청을 받아 이를 비즈니스 계층으로 전달하고, 비즈니스 계..

Spring boot 2024.09.27

스프링 부트 핵심 콘셉트

사전 기반 지식1. 스프링 프레임 워크(Spring Framework)일반적인 정의 : 스프링 프레임 워크는 자바 플랫폼을 위한 강력한 애플리케이션 프레임워크이다. 객체 지향 프로그래밍의 원칙에 기반하여 애플리케이션을 구성하고 관리하는 방식으로, 주로 엔터프라이즈급 애플리케이션을 구축할 때 사용된다.설정 방식 : 스프링은 초기 설정이 복잡할 수 있다. xml 설정 파일이나 자바 기반의 설정 클래스를 통해 다양한 기능을 직접 구성해야 한다.기능 : 스프링은 의존성 주입(DI), AOP(관점 지향 프로그래밍), 트랜잭션 관리, 데이터 액세스, 웹 애플리케이션 개발, 보안 등 광범위한 기능을 제공한다. 그러나 이 모든 기능을 사용하기 위해서는 상당한 양의 설정 작업이 필요하다.2. 스프링 부트(Spring B..

Spring boot 2024.09.26

Bank App 만들기 - 사용자 비밀번호 암호화 처리

1. SpringSecurityCrypto 의존성 추가 및 BCryptPasswordEncoder 빈 클래스로 등록 2. 회원가입 시 회원 비밀번호 암호화 처리 3. 로그인 시 암호호 된 비밀번호 확인 및 기능 추가 4. 코드 확인* 암호화 처리 후 H2 초기 데이터로 들어간 유저로는 로그인이 안됨패스워드 확인 로직인 변경 됨, 신규 유저 가입 후 테스트 하자  마이그레이션이란 데이터베이스 스키마의 변경 내역을 버전 관리하여, 변경에 대한 이력을 남기고, 데이터베이스를 이전 버전에서 최신 버전으로 옮기는 일련에 과정들을 의미한다. 즉, 일반적으로 마이그레이션은 스키마를 변경하거나 새로운 테이블이나 컬럼을 추가하는 등에 작업을 포함하고 따라서 우리가 할 작업 H2 데이터베이스에서 MySQL 로 변경할 때도..

Spring boot 2024.08.16

Bank App 만들기 - intercepter 활용(인증검사 공통 처리)

intercepter인터셉터는 Spring MVC의 핵심 기능 중 하나로, 웹 애플리케이션에서 공통적인 처리를 재사용할 수 있게 해주는 강력한 도구이다.인터셉터(Interceptor)는 들어오는 요청과 나가는 응답을 가로채어 특정 로직을 수행할 수 있게 해주는 매커니즘을 제공한다. 이는 AOP(Aspect-Oriented Programming)의 일종으로 볼 수 있으며, 컨트롤러(Controller)로 요청이 도달하기 전, 후 또는 완료된 후에 추가적인 처리를 하기 위해 사용된다.대표적인 활용 사례인증 및 권한 부여 : 사용자의 인증 정보를 검사하여 요청이 유효한 사용자로부터 온 것인지 확인하고, 특정 자원에 대한 접근 권한을 확인한다.로깅 및 감사 : 요청의 처리 과정에 대한 로깅을 수행하거나 감사 로..

Spring boot 2024.08.16

Bank App 만들기 - 계좌 상세보기 페이징 처리

사전 기반 지식  - 부트 스트랩의 그리드 시스템 개념 : 부트스트랩은 화면을 12개의 컬럼으로 나누어 레이아웃을 구성할 수 있도록 돕는 그리드 시스템을 제공한다. col-sm-8은 작은 화면에서 8개의 컬럼을 차지하는 레이아웃을 의미한다. 사용 방법 : col-sm-8, col-md-6 등의 클래스를 사용해 반응형 레이아웃을 쉽게 구성할 수 있다. 예제 : col-sm-8은 12개의 그리드 중 8개를 차지하며, 이는 전체 화면의 약 66.67% 이다.- 플렉스박스(Flexbox)와 중앙 정렬 개념 : 플렉스박스는 CSS의 레이아웃 모델로, 요소를 쉽게 정렬하고 배치하는 데 사용된다. 부트스트랩의 d-flex와 justify-content-center는 플렉스박스를 활용해 자식 요소를 수평 중앙에 정렬..

Spring boot 2024.08.16

Bank App 만들기 - 간단한 유틸 클래스 만들기

시간, 금액에 대한 포맷 적용하기 package com.tenco.bank.utils;import java.sql.Timestamp;import java.text.DecimalFormat;import java.text.SimpleDateFormat;public abstract class ValueFormatter { // 시간 포맷 public String timestampToString(Timestamp timestamp) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(timestamp); } public String formatKoreanWon(Long amount) { Decimal..

Spring boot 2024.08.16

Bank App 만들기 - 계좌 상세보기(기능, 동적쿼리 구현)

detail.jsp 만들기 계좌 상세 보기 화면은 계좌 목록 페이지에서 존재하는 하나의 계좌 번호를 선택했을 때 DB에서 데이터를 조회하고 결과를 화면에 출력해야 한다. 한 번에 작업을 하면 어려움이 있을 수 있으니 기본 화면부터 만들고 기능을 추가하도록 하자. - list로 시작 샘플 화면 확인 Table 태그와 부트스트랩4 을 활용하여 약간의 CSS 추가  account/list.jsp 파일에 링크 추가 하기 ${account.number} ${account.balance} ${account.number}   AccountController /** * 계좌 상세 보기 페이지 * 주소설계 - http://localhost:8..

Spring boot 2024.08.16

Bank App 만들기 - 계좌 상세보기(쿼리학습)

계좌 상세보기 쿼리를 만들기 위한 단계 별 학습1. 출금, 이체(출금) 또는 입금, 이체(입금)2. 계좌 번호 함께 출력하기3. COALESCE 함수와 CAST 함수 사용하기4. 입, 출금에 대한 모든 정보 출력하기 (CASE 구문의 활용)5. 코드 상에서 사용할 쿼리 확인위 내용은 마이바티스에서 동적 쿼리(사용자 선택)를 생성하는 활동이다. 1. 출금, 이체(출금) 또는 입금, 이체(입금)select * from history_tb;-- 1번계좌에서 출금 내역 select * from history_tb where w_account_id = 1; -- 1번계좌에서 입금 내역 select * from history_tb where d_account_id = 1;위 그림은 1번 계좌에서 출금 내역의 결과 ..

Spring boot 2024.08.16

Bank App 만들기 - 이체 기능

화면 확인 하기  transfer.jsp 계좌 이체(인증) Bank App에 오신걸 환영합니다. 이체 금액: 출금 계좌 번호: 출금 계좌 비밀번호: 입금(이체) 계좌 번호: 이체 요청   TransferDTO package com.tenco.bank.dto;import lombok.Data;@Datapublic class TransferDTO { private Long amount; // 거래 금액 private String wAccountNumber; // 출금계좌 번호 private String dAccountNumber; // 입금계좌 번호 private String password; // 출금 계좌 비밀번호 ..

Spring boot 2024.08.13