전체 글 76

[Spring] MVC 5편 - 프론트 컨트롤러 v1

이번 편에서는 프론트 컨트롤러 패턴을 도입해보며, 스프링 MVC의 핵심 구조가 어떻게 만들어지는지 기초부터 살펴본다. 1. 프론트 컨트롤러란?입구를 하나로: 하나의 서블릿(FrontControllerServlet)이 모든 요청을 받는다.요청을 분석하여 알맞은 컨트롤러를 찾아 호출한다.공통 로직(로그, 인증, 예외처리 등)을 한 곳에서 처리할 수 있다.스프링 MVC의 DispatcherServlet이 이 패턴을 구현하고 있다.2. V1 구조ControllerV1 인터페이스를 만들어 모든 컨트롤러가 이를 구현하도록 한다.각 컨트롤러는 서블릿과 비슷하게 HttpServletRequest, HttpServletResponse를 받아 처리.프론트 컨트롤러는 URL 매핑(controllerMap)으로 어떤 요청이 ..

Spring 2025.08.12

[Spring 완전 정복 시리즈 - MVC편] 4편 - 서블릿에서 JSP, 그리고 MVC로

이번 편에서는 서블릿 → JSP → MVC로 이어지는 흐름을 실제 회원 관리 웹 애플리케이션 예제를 통해 단계별로 살펴본다.서블릿과 JSP를 비교하며, 왜 MVC 패턴이 등장하게 되었는지, 그리고 이를 적용하면 어떤 구조적 장점이 생기는지를 알아본다.1. 회원 관리 웹 애플리케이션 요구사항기능 요구사항회원 저장회원 목록 조회도메인 모델public class Member { private Long id; private String username; private int age; // 기본 생성자, getter/setter, 생성자...}회원 저장소 (싱글톤)public class MemberRepository { private static Map store = new HashMa..

Spring 2025.08.11

[Spring 완전 정복 시리즈 - MVC편] 3편 - 서블릿 응답의 모든 것

이전 편에서 서블릿을 통해 클라이언트의 요청을 처리하는 방법을 정리했다면, 이번에는 서버가 클라이언트에게 응답을 보내는 방식에 대해 자세히 알아본다. 서블릿은 HttpServletResponse 객체를 통해 HTTP 응답 메시지를 직접 구성할 수 있게 해준다.1. HttpServletResponse란?HttpServletResponse는 서버가 클라이언트에게 응답을 보낼 때 사용하는 객체로, 다음과 같은 기능을 제공한다:HTTP 응답 코드 설정응답 헤더 설정응답 바디 작성쿠키 추가리다이렉트 처리이 객체를 활용하면 개발자가 응답을 원하는 방식으로 조작할 수 있다.2. 상태 코드, 헤더, 바디 직접 설정하기@WebServlet(name = "responseHeaderServlet", urlPatterns =..

Spring 2025.08.07

[Spring 완전 정복 시리즈 - MVC편] 2편 - 서블릿의 기본 개념과 동작 원리

이번 편에서는 스프링 MVC의 기반이 되는 서블릿(Servlet) 개념을 실제 코드와 함께 정리해본다. 서블릿을 학습하는 이유는 명확하다.“스프링 MVC는 서블릿 위에 구현된 프레임워크”이기 때문에, 서블릿의 원리를 이해하지 못하면 결국 스프링 MVC의 핵심을 놓칠 수밖에 없다.1. 서블릿이란?서블릿은 자바에서 웹 프로그래밍을 가능하게 하는 표준 기술이다.HTTP 요청을 받아 응답을 생성하는 역할을 수행하며, HTML을 동적으로 생성할 수 있다.자바 EE(Jakarta EE)의 일부이며, 스프링 MVC, JSP, Struts 등의 기반이 된다.2. 서블릿 등록하기 스프링 부트를 사용하면 서블릿을 간단히 등록할 수 있다.@ServletComponentScan // 서블릿 자동 등록@SpringBootApp..

Spring 2025.08.07

[Spring 완전 정복 시리즈 - MVC편] 1편 - 웹 애플리케이션의 이해

이번 편에서는 스프링 MVC의 시작점인 웹 애플리케이션의 기본 구조와 개념을 살펴본다.서블릿, WAS, 스레드, SSR과 CSR까지, 우리가 백엔드 개발자로서 반드시 알고 있어야 할 기반 지식을 먼저 짚고 넘어가자.1. 웹 서버 vs 웹 애플리케이션 서버(WAS)웹 서버: 정적인 HTML, CSS, JS, 이미지 같은 리소스를 클라이언트에게 그대로 전달WAS (Web Application Server): 클라이언트 요청에 따라 동적으로 비즈니스 로직을 실행하고 결과 데이터를 만들어 전달⟶ 둘을 함께 사용하면웹 서버는 정적인 리소스를 처리하고, WAS는 복잡한 비즈니스 로직을 전담하여 시스템 효율을 높일 수 있다.2. 서블릿(Servlet)의 등장과 역할HTTP 요청/응답의 처리 과정을 보면 다음과 같은 ..

Spring 2025.08.02

[Spring 완전 정복 시리즈] 마지막편 - 기본편 완강 회고 및 마무리

항상 물심양면 지원해주신 멘토님, 깊은 인사이트와 학습 기회를 주셔서 진심으로 감사합니다. 스프링을 처음 접했을 때는 단순히 “자바 웹 프레임워크”라는 정도의 인식만 가지고 있었다.하지만 김영한님의 스프링 핵심 원리 - 기본편 강의를 완강하고 나니, 단순히 기술을 사용하는 것을 넘어스프링의 철학과 아키텍처, 그리고 객체 지향 설계 원칙까지 깊이 이해하게 되었다.어떤 내용을 공부했는가?1. 스프링의 탄생과 철학스프링이 왜 등장하게 되었는지, 그리고 기존 EJB의 문제점을 어떻게 개선했는지부터 시작했다.스프링은 단순히 프레임워크가 아니라, 객체지향 프로그래밍을 실현하기 위한 도구라는 본질을 알게 됐다.2. 스프링 컨테이너와 DI (의존관계 주입)ApplicationContext의 개념부터 빈 등록 방식, 자..

Spring 2025.08.02

[Spring 완전 정복 시리즈] 23편 - 빈 스코프 완전 정복 (3): Provider vs 프록시, 그리고 정리

이번 편에서는 웹 스코프 빈을 싱글톤 빈에서 안전하게 사용하는 두 가지 대표적인 방식인Provider 방식과 프록시 방식을 비교하며 각각의 작동 원리와 장단점을 정리한다.마지막으로 지금까지 학습한 빈 스코프의 핵심 포인트를 복습 퀴즈와 함께 정리해보자.1. 싱글톤 빈에서 웹 스코프 빈을 사용하는 문제@Scope(value = "request")@Componentpublic class MyLogger { ... }@Controller@RequiredArgsConstructorpublic class LogDemoController { private final MyLogger myLogger; // X 오류 발생 가능} MyLogger는 요청 스코프이지만, LogDemoController는 싱글톤 스코프..

Spring 2025.08.01

[Spring 완전 정복 시리즈] 22편 - 빈 스코프 완전 정복 (2): 웹 스코프와 Provider/프록시 패턴

이전 편에서는 싱글톤과 프로토타입 스코프에 대해 정리했다.이번 편에서는 실제 웹 애플리케이션에서 자주 사용되는 웹 스코프(Request, Session 등)의 개념과스프링에서 이를 안전하게 사용하는 방법을 알아본다. 웹 스코프란?웹 스코프는 웹 요청(Request)과 세션(Session)의 생명주기에 따라 빈의 생존 범위를 지정한다.스코프 이름생존 범위request하나의 HTTP 요청이 들어와서 나갈 때까지session하나의 HTTP 세션이 생성되어 종료될 때까지application서블릿 컨텍스트(ServletContext) 범위websocket웹소켓 연결이 유지되는 동안 Request 스코프 사용 예시@Component@Scope(value = "request")public class MyLogger ..

Spring 2025.08.01

[Spring 완전 정복 시리즈] 21편 - 빈 스코프 완전 정복 (1): 싱글톤과 프로토타입

이번 편부터는 스프링 빈의 생존 범위를 제어하는 ‘스코프(scope)’에 대해 알아본다.특히 실무에서 잘못 이해하고 사용하면 큰 문제가 되는 프로토타입 스코프와 웹 스코프도 예제와 함께 꼼꼼히 정리해본다. 빈 스코프란? 스프링 컨테이너는 일반적으로 애플리케이션 시작 시점에 빈을 생성하고, 종료 시점에 함께 소멸시킨다.이는 기본적으로 빈이 싱글톤 스코프로 등록되기 때문이다. 여기서 스코프(Scope)란, “빈이 존재할 수 있는 생존 범위“를 의미한다.스프링이 지원하는 주요 스코프스코프 이름설명스코프 이름설명singleton기본 스코프. 컨테이너 시작~종료까지 같은 인스턴스 사용prototype요청할 때마다 새로운 빈 생성. 생성·의존 주입·초기화까지만 컨테이너가 관리request하나의 HTTP 요청 동안 ..

Spring 2025.08.01

[코딩 테스트 문제풀이 시리즈] 진법 변환 총정리 - 2진수, N진수, 역변환까지!

진법 변환 문제는 코딩 테스트에서 자주 출제되는 기본 알고리즘 유형입니다.이번 포스팅에서는 자바(Java)로 풀 수 있는 세 가지 진법 변환 문제를 단계적으로 정리해보았습니다. 1. 10진수를 2진수로 변환하기백준 10829 - 이진수 변환문제 설명주어진 10진수 N을 2진수로 바꿔 출력하는 문제입니다.입력으로는 long 범위의 수가 들어오므로 Scanner.nextLong()으로 받아야 하며,자릿수마다 % 2를 사용해 나머지를 구하고, 가장 뒤의 자리부터 채워야 하므로 StringBuilder.reverse()가 필요합니다. 자바 코드Scanner sc = new Scanner(System.in);long N = sc.nextLong();StringBuilder sb = new StringBuilder..

코딩테스트 2025.07.31