[Spring Framework] 22강 - 인터셉터와 로그인 처리

seb Incode·2022년 4월 26일
0

Spring Framework

목록 보기
22/22

학습 내용

  • 스프링 인터셉터
  • 인터셉터 활용 사례

학습 목표

  • 인터셉터의 개념과 서블릿 필터와 차이점을 이해한다.
  • 인터셉터를 활용한 사례를 통해 인터셉터를 구현한다.

Spring Interceptors

모든 요청에서 반드시 거쳐야 하는 서블릿 필터와 유사하다

  • Servlet Filter와는 다름
  • 인터셉터는 컨트롤러 요청에만 적용됨
  • Bean Contrainer 로딩 후에 적용되기 때문에 빈을 사용할 수 있음

모든 요청과 응답이 반드시 거쳐야 하는 구간이 인터셉터입니다. 서블릿 필터와의 공통점이기도 합니다. 차이점은 인터셉터는 빈을 사용할 수 있다는 것입니다.

사례 : 로그인 처리

  • 요청 경로마다 별도의 접근제어
  • 접근내용 기록

왼쪽 주황색 선이 DispatcherServlet이라고 보시면 됩니다.
그래서 모든 요청은 DispatcherServlet을 거치고 인터셉터를 거칩니다.

인터셉터는 총 3부분에 대해서 공통 기능을 넣을 수 있음

  • preHandle : 컨트롤러(핸들러) 실행 전
  • postHandle : 컨트롤러(핸들러) 실행 후, 아직 뷰를 실행하기 전
  • afterConpletion : 뷰를 실행한 이후

Interceptor 사례 : 웹 요청 처리시간 측정기

웹 요청 처리 시간을 측정하는 Interceptor 만들기

  • preHandle과 afterCompletion을 이용한 웹 요청 처리 시간 측정기
  • 웹 사이트에서 어떤 URL이 가장 많이 호출되고, 얼마나 많은 시간이 걸리는지 알 수 있는 방법

인터셉터 생성

public class 인터셉터명 extends HandlerInterceptorAdapter {
	@Override
    public boolean preHandle(...){
    	//내용
    }
    @Override
    public void afterCompletion(...){
    	//내용
    }
}

Servlet-context.xml 설정

<mvc:interceptors>
  <bean id="measuringInterceptor"
        class="kr.co.acompp.hello.interceptor.MeasuringInterceptor" />
</mvc:interceptors>

특정 URL만 인터셉터 설정하기

<mvc:interceptors>
  <mvc:mapping path="/test/**/" />
  <mvc:mapping path="/event/**/" />
  <bean id="measuringInterceptors"
        class="kr.co.acompp.hello.interceptors.MeasuringInterceptors" />
</mvc:interceptors>
  • /test/로 시작하는 모든 URL, /event/로 시작하는 모든 URL에 MeasuringInterceptors를 적용하고 그 외에는 적용하지 않는다

사례 2 : 로그인 체크하는 로그인 Interceptor 만들기

  • preHandle를 이용한 로그인 체크기 제작
  • 컨트롤러마다 로그인을 체크하는 중복 코드를 만들지 않고 로그인 체크하기

인터셉터가 여러 개 설정되어 있는 경우, 선언된 순서대로 실행된다.

0개의 댓글