Spring RoadMap/Spring MVC(16)
-
스프링 MVC 2편 (11 - 마지막), 파일 업로드
백엔드 웹 개발 핵심 기술, 스프링 MVC - 파일 업로드프로필 사진 변경, 상품 이미지 등록, 엑셀 파일 첨부 등 웹 애플리케이션에서 파일 업로드는 필수 기능이다. 하지만 HTTP는 기본적으로 문자열 데이터를 전송하기 위해 설계되었기 때문에, 바이너리 데이터(파일)를 전송하려면 특별한 규약이 필요하다.이번 글에서는 HTTP의 Multipart 전송 방식의 원리부터, 서블릿이 제공하는 방식, 그리고 스프링이 제공하는 편리한 MultipartFile 사용법, 마지막으로 파일 저장과 다운로드 구현까지 상세히 다룬다.1. HTTP와 파일 업로드의 원리1-1. application/x-www-form-urlencodedHTML 폼 데이터를 서버로 전송하는 가장 기본적인 방식이다.이름=김영한&나이=20&로 구분해..
2025.12.23 -
스프링 MVC 2편 (10), 스프링 타입 컨버터
백엔드 웹 개발 핵심 기술, 스프링 MVC - 타입 컨버터 (Type Converter) HTTP 요청 파라미터는 모두 문자열(String)이다. ?age=10이라고 보내도 서버 입장에서는 문자열 "10"이 넘어온다. 하지만 우리는 컨트롤러에서 @RequestParam Integer age라고 적기만 하면 숫자 10을 받는다.누군가가 중간에서 타입을 변환해주고 있다는 뜻이다. 스프링이 제공하는 타입 컨버터가 그 역할을 한다.1. 스프링의 기본 타입 변환스프링은 이미 수많은 컨버터를 내장하고 있다.String Integer, Long, DoubleString BooleanString EnumString IpPort (직접 만들 예제)1-1. 과거의 방식: PropertyEditor스프링 초기에는..
2025.12.23 -
스프링 MVC 2편 (9), API 예외 처리
백엔드 웹 개발 핵심 기술, 스프링 MVC - API 예외 처리HTML 페이지 요청 시 오류가 나면 오류 페이지만 보여주면 된다. 하지만 API는 다르다. 클라이언트는 오류가 발생해도 JSON 데이터를 원한다.HTML: 500 Error Page (사람이 봄)API: {"code": "BAD_REQUEST", "message": "잘못된 입력입니다."} (기계/JS가 처리함)이번 글에서는 스프링이 제공하는 강력한 API 예외 처리 메커니즘인 HandlerExceptionResolver와 @ExceptionHandler를 상세히 알아본다.1. BasicErrorController의 한계이전 섹션에서 배운 BasicErrorController는 API 예외 처리에도 사용할 수 있다. 요청 헤더(Accept)..
2025.12.23 -
스프링 MVC 2편 (8), 예외 처리와 오류 페이지
백엔드 웹 개발 핵심 기술, 스프링 MVC - 예외 처리와 오류 페이지웹 애플리케이션을 운영하다 보면 수많은 예외와 마주하게 된다. 사용자가 이상한 URL을 입력할 수도 있고(404), 서버 로직에서 NullPointerException이 터질 수도 있다(500). 이때 사용자에게 하얀색 톰캣 오류 페이지나, 알 수 없는 스택 트레이스를 보여주는 것은 최악의 경험이다. 우리는 우아하게 "죄송합니다. 오류가 발생했습니다."라는 예쁜 페이지를 보여줘야 한다.1. 서블릿의 예외 처리 방식 (기본 원리)스프링 부트가 제공하는 마법을 부 리기 전에, 순수 서블릿 컨테이너(Tomcat)는 예외를 어떻게 처리하는지 알아보자.1-1. 예외 발생시키는 2가지 방법Exception: 애플리케이션에서 예외를 잡지 못하고 서..
2025.12.23 -
스프링 MVC 2편 (7), 로그인 2 - 필터, 인터셉터
백엔드 웹 개발 핵심 기술, 스프링 MVC - 로그인 처리 2 (필터, 인터셉터)로그인 여부를 체크하는 로직은 모든 컨트롤러에 공통적으로 적용되어야 한다. 웹과 관련된 공통 관심사(cross-cutting concern)를 처리할 때는 AOP보다는 웹 기술인 서블릿 필터나 스프링 인터셉터를 사용하는 것이 훨씬 효율적이다. HTTP 헤더나 URL 정보가 필요하기 때문이다.1. 서블릿 필터 (Servlet Filter)필터는 서블릿(DispatcherServlet)이 지원되기 전에 먼저 실행되는 수문장이다. 필터 흐름HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 필터는 특정 URL 패턴에 적용할 수 있다, 스프링을 사용하는 경우 여기서 사용하는 서블릿은 스프링의 Dispatcher Serv..
2025.12.23 -
스프링 MVC 2편 (6), 로그인 1 - 쿠키, 세션
백엔드 웹 개발 핵심 기술, 스프링 MVC - 로그인 처리 1 (쿠키, 세션)검증(Validation)을 통해 데이터의 무결성을 지켰다면, 이제는 "누가 이 요청을 보냈는가?"를 식별할 차례다. 로그인 기능을 구현해보자.1. 로그인 요구사항 및 도메인 설계가장 먼저 회원을 가입시키고, 로그인하는 핵심 비즈니스 로직이 필요하다. Member 도메인@Datapublic class Member { private Long id; @NotEmpty private String loginId; // 로그인 ID @NotEmpty private String name; // 사용자 이름 @NotEmpty private String password;} LoginService (..
2025.12.21