코딩
[Spring] Interceptor 정리 본문
Interceptor 등록하기
servlet-context.xml
<beans:bean id="confirm" class="com.abcd.interceptor.ConfirmInterceptor"/>
<interceptors>
<interceptor>
<!-- <mapping path="/guestbook/*"/> -->
<mapping path="/guestbook/register"/>
<mapping path="/guestbook/modify"/>
<mapping path="/guestbook/delete"/>
<!-- <exclude-mapping path="/user/log*"/> -->
<beans:bean class="com.abcd.interceptor.ConfirmInterceptor"/>
<beans:ref bean="confirm"/>
</interceptor>
</interceptors>
위와 같이 servlet-context.xml에서 bean으로 Interceptor가 있는 경로를 지정하여 저장해줍니다.
그리고 그 아래에 Interceptor가 관여할 메소드들이 있는 경로를 mapping해주고 참조할(ref) Interceptor클래스의 id를 지정해줍니다.
Interceptor 순서정하기
<beans:bean id="Interceptor1" class="com.abcd.interceptor.ConfirmInterceptor"/>
<beans:bean id="Interceptor2" class="com.abcd.interceptor.TestInterceptor"/>
<interceptors>
<interceptor>
<mapping path="/guestbook/register"/>
<beans:ref bean="Interceptor1"/>
</interceptor>
<interceptor>
<mapping path="/guestbook/list"/>
<beans:ref bean="Interceptor2"/>
</interceptor>
</interceptors>
인터셉트는 여러 클래스를 등록하는것이 가능합니다.
인터셉트가 실행되는 순서도 servlet-context.xml에서 정할 수 있습니다.
servlet-context.xml에서 위와같이 Interceptor를 등록했다면 진행 순서는 아래와 같습니다.
Interceptor 클래스 만들기
@SuppressWarnings("deprecation")
public class Interceptor1 extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session = request.getSession();
System.out.println("#1 Interceptor1 preHandler");
return true; //false를 반환하면 바로 Interceptor가 종료됩니다.
}
@Override //컨트롤러 수행 후 호출 됩니다.
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("#1 Interceptor1 postHandler");
}
@Override // view를 통해 클라이언트에게 응답을 전송한 뒤 실행됩니다.
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("#1 Interceptor1 afterHandler");
}
}
여기서 조심해야 할 것은 afterCompletion메소드는 에러가 발생하여도 실행된다는 점입니다.
'Spring' 카테고리의 다른 글
[SpringBoot] Postman으로하는 restAPI 테스트(+ 공지사항 CRUD) (0) | 2022.05.05 |
---|---|
Spring Error 정리 (0) | 2022.04.30 |
[Spring] FileUpload하기(+다중파일업로드) (0) | 2022.04.22 |
[Spring] 오류정리 (0) | 2022.04.17 |
Mac에서 Spring web서버 터미널로 종료하기 (0) | 2021.09.09 |
Comments