Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSP에서 여러 필터를 정의하는 방법

웹 애플리케이션에서는 특정 목적을 가진 여러 개의 서로 다른 필터를 정의할 수 있습니다. 예를 들어 AuthenFilterLogFilter라는 두 개의 필터를 정의한다고 가정해 보겠습니다. 이 경우 나머지 과정은 앞서 설명한 방식과 동일하며, 아래와 같이 각 필터에 대한 매핑만 추가로 작성하면 됩니다.

web.xml에 여러 필터 등록하기

web.xml 파일에는 여러 개의 <filter> 요소와 <filter-mapping> 요소를 나열하여 각 필터를 등록하고 URL 패턴과 연결할 수 있습니다.

<filter>
   <filter-name>LogFilter</filter-name>
   <filter-class>LogFilter</filter-class>
   <init-param>
      <param-name>test-param</param-name>
      <param-value>Initialization Paramter</param-value>
   </init-param>
</filter>
<filter>
   <filter-name>AuthenFilter</filter-name>
   <filter-class>AuthenFilter</filter-class>
   <init-param>
      <param-name>test-param</param-name>
      <param-value>Initialization Paramter</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>LogFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
   <filter-name>AuthenFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

필터 적용 순서(Filter Application Order)

웹 컨테이너가 필터를 서블릿이나 JSP에 적용하는 순서는 web.xml 파일 내 <filter-mapping> 요소들이 배치된 순서에 따라 결정됩니다. 따라서 필터의 적용 순서를 바꾸고 싶다면 web.xml 파일에서 해당 <filter-mapping> 요소들의 위치만 서로 바꿔주면 됩니다.

예를 들어 위의 설정에서는 모든 서블릿과 JSP에 대해 먼저 LogFilter가 적용된 후 AuthenFilter가 적용됩니다. 만약 이 순서를 반대로 바꾸고 싶다면 아래와 같이 작성하면 됩니다.

<filter-mapping>
   <filter-name>AuthenFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
   <filter-name>LogFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

이처럼 web.xml에서 <filter-mapping>의 선언 순서를 조절함으로써 인증(Authentication), 로깅(Logging) 등 다양한 목적의 필터를 원하는 순서대로 체인 형태로 구성할 수 있으며, 이는 요청 처리 전후에 공통 기능을 유연하게 삽입하는 강력한 방법입니다.