본문 바로가기

Spring/스프링 MVC 활용12

Spring ArgumentResolver Spring ArgumentResolver 1. Servlet HTTP 요청 시 WAS는 Request, Response 객체를 새로 생성하고, 서블릿 객체를 호출한다. [Servlet 생성] 개발자는 Request 객체에서 HTTP 요청 정보를 사용하고 Response 객체에 HTTP 응답 정보를 입력한다. 서블릿이 종료되면 WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성한다. 즉, 생성된 Request, Response 객체를 받아 하나의 스레드에서 서블릿 객체가 실행되면, 그 시점부터 개발자는 Request의 정보를 사용해 Response에 적절한 응답을 담아 서블릿을 종료하는 것으로 요청을 처리할 수 있다. ※ 서블릿 컨테이너는 서블릿을 지원하는 WAS를 뜻한다. 2... 2022. 8. 19.
#11 파일 업로드 파일 업로드 HTML Form 으로 파일을 서버에 전송하기 위해서는 문자가 아니라 바이너리 데이터를 전송해야 한다. 게다가 보통 파일을 업로드할 때는 파일만 전송하는 것이 아니라 다른 추가적인 정보도 전송해야 한다. 이 문제를 해결하기 위해 HTTP는 mutipart/form-data라는 전송 방식을 제공한다. [mutipart/form-data] mutipart/form-data 방식은 다른 종류의 여러 파일과 폼의 내용을 함께 전송할 수 있다. 각 항목은 Content-Disposition이라는 항목별 헤더로 구분되어있다. 1. mutipart 설정 스프링에서 multipart 데이터를 사용할 때 application.properties에서 여러 설정을 적용할 수 있다. [업로드 사이즈 제한] spr.. 2021. 8. 3.
#10 스프링 타입 컨버터 스프링 타입 컨버터 개발을 하다 보면, 타입을 변환해야 하는 경우가 상당히 많다. 개발자가 이런 타입 변환 작업을 하나하나 해야 한다면, 매우 힘들 것이다. 스프링은 타입 변환이 필요하면 스프링 타입 컨버터를 이용해서 타입 변환을 필요한 곳에 자동으로 처리해준다. 스프링 타입 컨버터에 의한 변환은 다음과 같은 경우에 적용된다. ● 스프링 MVC 요청 파라미터 ◎ @RequestParam, @ModelAttribute, @PathVariable ● 뷰 렌더링 ● @Value 등으로 YML 정보 읽기 생각해보면 @ModelAttribute 같은 애노테이션을 사용하면 파라미터가 자동으로 내가 지정한 객체의 필드의 타입에 맞춰서 넣어진다. 이처럼 문자 → 특정 타입의 변환 과정이 자동으로 이루어지는 것은 스프링.. 2021. 8. 3.
#9 API 예외 처리 API 예외 처리 HTML 페이지의 경우 BasicErrorController에 의해서 4xx, 5xx와 같은 오류 페이지만 있으면 대부분의 문제를 해결할 수 있었다. 하지만 API의 경우 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. BasicErrorController는 클라이언트 요청의 Accept 헤더 값에 따라 에러를 다르게 처리한다. [BasicErrorController 코드] @RequestMapping(produces = MediaType.TEXT_HTML_VALUE) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {} @RequestMa.. 2021. 8. 3.