Backend/Spring | SpringBoot28 [SpringBoot] 파일 업로드 목차 HTML Form 전송 방식 HTML에서 Form을 통한 데이터 전송방식에는 2가지가 있습니다. application/x-www-form-urlencoded mulipart/form-data application/x-www-form-urlencoded 일반적으로 데이터들을 문자타입으로 전송할 때 HTTP Body에 & 구분자를 사용하여 전송하는 가장 기본적인 방식입니다. Content-Type: application/x-www-form-urlencoded 하지만, 파일은 문자가 아니라 바이너리 데이터를 전송해야 합니다. 문자를 전송하는 방식으로 파일을 전송하지 못합니다. 또한, 파일만 전송하는 것이 아니라 다음과 같이 다른 타입의 데이터들도 함께 전송합니다. - 이름 - 나이 - 첨부파일 이름과 나.. 2023. 10. 2. [SpringBoot] 예외 처리 - API 목차 서론 예외가 발생했을 때 HTML 페이지를 반환하는 경우 이외에 JSON으로 오류와 관련된 정보를 반환해야하는 경우가 있습니다. 오류 페이지의 경우 4xx, 5xx와 같은 오류 페이지를 단순히 고객에게 전달하면 끝이지만, API는 각 오류 상황에 맞는 오류 응답 스펙을 정의하고, 해당 데이터를 JSON으로 내려주어야 합니다. 지금부터 API의 경우 어떻게 예외를 처리하는지 알아보겠습니다. 먼저 서블릿이 어떻게 처리하는지 알아본 후, 스프링부트가 처리하는 방법에 대해 알아보겠습니다. 서블릿 - API 예외 처리 WebServerCustomizer - 에러 페이지 등록 @Component public class WebServerCustomizer implements WebServerFactoryCust.. 2023. 9. 30. [SpringBoot] 예외 처리 - 오류 페이지 목차 서론 서블릿과 스프링에서 각각 예외를 처리하는 방법에 대해 알아보겠습니다. 예외 발생에는 다음과 같이 2가지 방식이 있습니다. Exception (예외) response.sendError(HTTP 상태 코드, 오류 메시지) Exception (예외) 웹 애플리케이션은 사용자 요청별로 쓰레드가 할당이 되고, 서블릿 컨테이너 안에서 실행이 됩니다. 만약, 애플리케이션에서 예외가 발생했을 때, try~catch로 예외를 잡아서 처리하지 않는다면 다음과 같은 방향으로 예외가 전파됩니다. WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러 (예외발생) 우선 톰캣과 같은 WAS는 예외를 어떻게 처리할까요? 이를 확인하기 위해선 우선, 스프링 부트가 제공하는 기본 예외 페이지 설정을 false로.. 2023. 9. 26. [SpringBoot] 필터와 인터셉터 (ArgumentResolver + @Login 활용) 목차 서론: 공통 관심 사항 애플리케이션을 만들면, 로그인한 사용자만 서비스를 이용하도록 접근 제한 요구사항이 있을 수 있습니다. 그럴려면 모든 HTTP 요청마다 로그인을 한 사용자인지 검증하는 로직이 들어가야 합니다. 로그인한 사용자에게만 서비스에 접근할 수 있는 버튼을 제공함으로써 해결했다고 할 수 있지만, 버튼 없이도 직접 URL 창에 다음과 같은 URL을 쳐서 해당 서비스를 이용할 수 있습니다. http://localhost:8080/items (상품 목록 조회 URL) 구현 방법으로 상품 관리 컨트롤러에서 로그인 여부를 체크하는 로직을 하나하나 작성할 수 있지만, 똑같은 작업을 반복해야 합니다. 더 큰 문제는 향후 로그인과 관련된 로직이 변경된다면 작성한 모든 로직을 하나하나 수정해야 합니다. .. 2023. 9. 21. [SpringBoot] 쿠키와 세션(HttpSession) 목차 서론 현재 간단한 회원가입, 로그인, 상품 목록 관리 애플리케이션을 만들었다고 가정해 봅시다. 상품 목록 관리 같은 기능을 이용하기 위해선 반드시 그 전에 로그인을 해야 합니다. 하지만, HTTP는 비연결성(Connectionless)이기 때문에 클라이언트는 사용자의 아이디와 비밀번호를 요청 시마다 매번 서버에게 넘겨주어야 합니다. 이 번거로운 작업을 쿠키와 세션을 통해 해결할 수 있습니다. 화면 예시 쿠키? 어떻게 클라이언트에서 매번 일일이 아이디와 비밀번호를 넘겨주지 않아도 로그인한 사용자인 것을 판단하고 해당 정보를 가져올 수 있을까요? 로직은 간단합니다. 쿠키에 관련 정보를 저장하면, 웹 브라우저가 쿠키를 매 요청마다 지속적으로 보내줍니다. 쿠키 생성 사용자가 아이디와 비밀번호를 입력해 로그.. 2023. 9. 19. [SpringBoot] HTTP 메시지 컨버터 (+ArugumentResolver, ReturnValueHandler) 목차 HTTP API처럼 뷰가 아닌 JSON 데이터를 HTTP 메시지 바디에서 직접 읽거나 쓰는 경우, HTTP 메시지 컨버터를 사용합니다. HttpMessageConverter @ResponseBody 사용 원리 HTTP의 Body에 문자 내용을 직접 반환합니다. viewResolver 대신 HttpMessageConverter가 동작합니다. 기본 문자 처리 : StringHttpMessageConverter 기본 객체 처리 : MappingJackson2HttpMessageConverter 이외에도, byte 처리 등 기타 여러 HttpMessageConverter가 등록되어 있습니다. 응답의 경우, 클라이언트의 Http Accept 헤더와 서버의 컨트롤러 반환 타입 둘을 조합해 HttpMessage.. 2023. 9. 1. 이전 1 2 3 4 5 다음