본문 바로가기

Spring/MVC

(4)
요청 파라미터 검증 요청 파라미터의 검증은 1차적으로 클라이언트 영역에서 하지만 데이터를 다루는 서버 영역에서도 반드시 체크가 필요하다. 스프링을 사용하면 보통은 Validator와 BeanValidator 두가지를 통해 검증한다. 두가지의 사용 용도는 경우의 따라 달라지기도 하지만 보통은 요청 파라미터만을 검증할 때는 BeanValidator를 적용하고, 파라미터를 이용해 계산을 하거나 별도의 조건이 있다면 Validator 를 사용한다. BeanValidator BeanValidator 는 데이터를 담는 객체의 필드마다 검증하고 싶은 애노테이션을 붙여 적용하는 방식이다. 애노테이션만 적용하면 되므로 if문을 사용해 코드가 지저분해지지도 않는다. BeanValidator 는 널을 허용하지 않는 것부터 숫자 제한, 이메..
HandlerExceptionResolver - API 예외처리 RESTful API를 개발할 때 고려해야 할 사항 중 Response Status를 잘 남겨야 하는 사항이 있다. 일반적으로 성공한 요청에 대해서는 적절한 상태를 나타내지만 예외가 발생하면 그렇지 않은 경우가 있다. 따라서 스프링 MVC는 HandlerExceptionResolver 인터페이스를 제공하는데 상속받아 직접 구현하거나 애너테이션을 적용해 예외를 해결하면서 적절한 Response Status를 지정해줄 수 있다. HandlerExceptionResolver 호출 시점 HandlerExceptionResolver는 이름에서 유추할 수 있듯이 Handler 밖으로 예외가 던져진 경우 호출되어 처리한다. 따라서 예외가 발생해도 서블릿 컨테이너까지 예외가 전달되지 않고, 스프링 MVC에서 예외 처리..
스프링 인터셉터 스프링 인터셉터는 웹과 관련된 공통 관심사를 처리를 할 때 사용한다. AOP도 공통 관심사에 대한 처리를 하지만 AOP는 주로 메서드를 중심으로 처리하는 반면 인터셉터는 주로 HTTP 헤더 정보나 URL 정보, 세션 정보, 쿠키 정보, 핸들러 정보 등을 이용해서 웹 요청 자체에 초점을 맞춰서 처리한다. HandlerInterceptor public interface HandlerInterceptor { default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } default void postHandle(HttpServletRe..
스프링 MVC 예전 스프링 프레임워크를 사용하기 전에는 클라이언트의 요청을 처리하기 위해 각 요청마다 1:1 구조로 서블릿을 구현해야만 했다. 규모가 작은 사이트라면 문제가 적겠지만 규모가 큰 사이트라면 수많은 서블릿을 관리해야 하는 수고로움이 있었다. 그래서 이러한 문제점을 해결하기 위해 스프링 MVC를 구현하게 되었고, 물론 다른 요구사항에 맞춰서도 기능을 확장시켜왔다. 스프링을 사용한다는 것은 스프링 컨테이너(IoC, DI...)를 사용한다는 의미도 있지만 스프링 MVC를 사용한다고 봐도 무방하다. MVC 용어 Model : 도메인 객체 또는 DTO로 화면에 전달할 또는 화면에서 전달 받은 데이터를 담고 있는 객체이다. View : 데이터를 보여주는 화면으로 클라이언트가 서비스를 요청을 하게 되면 결괏값을 확인할..