Legacy/JAVA

[JSP] <dispatcher>엘리먼트를 이용하여 경우에 맞는 필터 호출하는 방법

Foo 2015. 10. 13. 20:56
728x90

출처 - 뇌를 자극하는 JSP&Servlet p.600 - <dispatcher> 엘리먼트에 대하여


웹 컴포넌트를 호출하는 방법은 크게 네 가지입니다. 첫째는 웹 브라우저를 이용하는 방법이고, 둘때는 forward 메소드를 통해서 호출하는 방법이고, 셋째는 include 메소드를 통해 호출하는 방법이며, 넷째는 익셉션이 발생했을 때 웹 컨테이너가 자동으로 호출하는 방법입니다. 그런데 이 네 가지 방법에 따라 필터를 선택적으로 적용할 수 있습니다. 그렇게 하려면 <dispatcher> 엘리먼트를 사용하면 됩니다.

web.xml 파일의 <filter-mapping> 엘리먼트 안에 <dispatcher>라는 엘리먼트를 추가하고, 거기에 REQUEST, FORWARD, INCLUDE, ERROR 중에 한 값을 쓰면 위에 기술한 네 가지 경우에 맞추어 웹 컴포넌트를 호출에 대응하게 됩니다. 다음과 같이.

1
2
3
4
5
<filter-mapping>
    <filter-name>log-filter</filter-name>
    <url-pattern>/sub2/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
cs

위 방법과 같이 FORWARD에 대해 디스패처를 등록하면 forward 메소드에 대해서만 log-filter가 동작될 것입니다.

여러개의 <dispatcher> 엘리먼트를 등록하는 것도 가능합니다.