inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

downey님의 게시글

downey downey

@downey

수강평 작성수
-
평균평점
-

게시글 4

질문&답변

ExceptionResolver1 강의 error.bad

혹시 postman에서 request header에 캐릭터셋이 다른게 들어가있지는 않은지요?

좋아요수
0
댓글수
4
조회수
800

질문&답변

인터셉터 제한시 리다이렉트 처리하지 않는 경우

저도 궁금해서 chat gpt에 물어봤습니다. 비어있는 응답은 일반적으로 서블릿 컨테이너나 웹 서버가 처리합니다. Spring MVC를 사용할 때 내부적으로는 서블릿 컨테이너(예: Tomcat, Jetty 등)가 동작하여 HTTP 요청과 응답을 처리합니다. 인터셉터의 preHandle 메서드에서 false 를 반환하고 응답을 설정하지 않으면, 서블릿 컨테이너는 클라이언트에게 비어있는 응답을 보내게 됩니다. 이 비어있는 응답은 HTTP 상태 코드와 헤더는 있을 수 있지만, 본문(body)은 비어있는 상태로 전송될 것입니다. 이러한 상황을 방지하고 의도한 응답을 클라이언트에게 전달하기 위해 인터셉터에서 false 를 반환할 때는 적절한 상태 코드와 응답 메시지를 설정해 주어야 합니다.

좋아요수
0
댓글수
1
조회수
338

질문&답변

인터셉터 로그 순서 문의

첫번째 요청에서 LogInterceptor의 postHandle 로그가 안나온 이유는, 로그인이 안되어있기때문에 LoginCheckInterceptor의 preHandler에서 return false; 되었고 이후의 로직(Controller, 각 인터셉터의 postHandler 등)이 실행이 안되고 바로 LogInterceptor의 afterCompletion()이 실행되기 때문입니다. (참고) 만약 Interceptor2 의 preHandle 메소드에서 false 를 반환하면, 그 이후의 인터셉터 및 컨트롤러의 메소드는 실행되지 않습니다. 또한, 해당 인터셉터와 이전 인터셉터의 afterCompletion 메소드만 호출됩니다. postHandle 메소드 또한 호출되지 않습니다. 순서는 다음과 같이 됩니다: Interceptor1.preHandle() - true 반환 Interceptor2.preHandle() - false 반환 Interceptor2.afterCompletion() Interceptor1.afterCompletion() 이 경우, Controller.method() 와 postHandle 메소드는 호출되지 않으며, 원래 응답을 전송하는 대신 Interceptor2 의 preHandle 에서 정의된 응답이 클라이언트에 전송될 것입니다. 이를 통해 특정 조건에 따라 요청을 거부하고 클라이언트에게 에러 메시지를 전송하는 등의 로직을 구현할 수 있습니다.

좋아요수
0
댓글수
2
조회수
340

질문&답변

인터셉터 로그 순서 문의

Spring MVC에서 여러 개의 인터셉터가 있는 경우, preHandle , postHandle , 그리고 afterCompletion 메소드는 다음과 같은 순서로 실행됩니다: 1. preHandle 메소드 첫 번째 인터셉터의 preHandle 이 호출됩니다. 두 번째 인터셉터의 preHandle 이 호출됩니다. 그리고 나머지 인터셉터들의 preHandle 이 차례대로 호출됩니다. 2. Controller의 메소드 모든 preHandle 메소드가 호출된 후에 컨트롤러의 메소드가 실행됩니다. 3. postHandle 메소드 마지막 인터셉터의 postHandle 이 호출됩니다. 그 앞의 인터셉터의 postHandle 이 호출됩니다. 그리고 첫 번째 인터셉터의 postHandle 까지 역순으로 호출됩니다. 4. 뷰 렌더링 모든 postHandle 메소드가 호출된 후에 뷰가 렌더링됩니다. 5. afterCompletion 메소드 마지막 인터셉터의 afterCompletion 이 호출됩니다. 그 앞의 인터셉터의 afterCompletion 이 호출됩니다. 그리고 첫 번째 인터셉터의 afterCompletion 까지 역순으로 호출됩니다. 즉, preHandle 은 정방향(첫 번째에서 마지막 인터셉터 순서)으로, postHandle 과 afterCompletion 은 역방향(마지막에서 첫 번째 인터셉터 순서)으로 호출됩니다.

좋아요수
0
댓글수
2
조회수
340