2) 아규먼트 리졸버를 이용해 HTTP Header정보를 Map객체에 담아서 Controller에게 전달하기 참고로 Map이나 Map을 상속받고 있는 객체는 스프링에서 내부적으로 사용하고 있는 아규먼트 리졸버가 선처리하고 있기 때문에 직접 사용할 수 없다고 그랬습니다. 그래서 Map객체를 전달하려면 Map을 필드로 가지고 있는 별도의 객체를 선언한 후 사용해야 합니다. 그렇기 때문에 Map을 필드로 가지고 있는 HeaderInfo라는 클래스를 작성하겠습니다. 그 전에 해당 클래스랑 아규먼트 리졸버를 모아둔 패키지를 생성하겠습니다. argumentresolver 라는 이름의 패키지를 생성합니다. 그리고 해당 패키지에 헤더의 정보를 담을 HeaderInfo.java 클래스를 생성합니다. 이러한 HeaderI..
1) 아규먼트 리졸버란? 아규먼트 리졸버란? 컨트롤러의 메소드의 인자로 사용자가 임의의 값을 전달하는 방법을 제공하고자 할 때 사용됩니다. 예를 들어, 세션에 저장되어 있는 값 중 특정 이름의 값을 메소드 인자로 전달합니다. 아규먼트 리졸버 작성방법 1/2 org.springframework.web.method.support.HandlerMethodArgumentResolver를 구현한 클래스를 작성합니다. supportsParameter메소드를 오버라이딩 한 후, 원하는 타입의 인자가 있는지 검사한 후 있을 경우 true가 리턴되도록 합니다. resolveArgument메소드를 오버라이딩 한 후, 메소드의 인자로 전달할 값을 리턴합니다. 아규먼트 리졸버 작성방법 2/2 Java Config에 설정하는 ..
2) 인터셉터를 이용해 Controller 공통 로직 처리하기 guestbook에다가 인터셉터를 담기 위한 kr.or.connect.guestbook.interceptor 패키지를 만듭니다. 그리고 LogInterceptor.java를 만듭니다. 이 클래스는 HandlerInterceptorAdapter 클래스를 상속받도록 합니다. 그리고 preHandle과 postHandle이라는 메서드를 오버라이딩합니다. preHandle이라는 메서드는 Controller 메서드가 실행되기 전에 실행이 되고 postHandle 메서드의 내용은 Controller의 메서드가 실행된 후에 실행되게 됩니다. 각각의 메서드에 sysout을 달아 콘솔에 출력할 내용을 입력합니다. 인터셉터를 만들면 해당 인터셉터를 등록합니다...
1) 인터셉터란? 스프링 DispatherServlet의 내부 동작에 대해서 다시 한번 살펴보겠습니다. 스프링이 동작될 때 클라이언트로부터 요청이 들어오고 만약 필터가 존재한다면 필터가 작업을 수행을 합니다. 예시로는 charset을 지정하는 필터가 있습니다. 스프링이 제공하는 필터를 사용할 수 있고 web.xml이나 그와 같은 일을 하는 부분에다가 이 필터를 등록을 하면 됩니다. 그러면 필터라고 하는 것은 요청이 들어왔을 때 요청을 받아내기 전, 응답이 나가기 전, 이때마다 수행되는 것입니다. 필터가 있다면 수행을 하고, 없다면 DispatcherServlet이 받아서 수행을 하게 될 겁니다. DispatcherServlet은 선처리 작업할 것들이 존재했다면 먼저 선처리 작업을 해주고 HandlerMa..