필터와 리스너

 

필터(Filter)와 리스너(Listener)는 Java Servlet API에서 제공하는 기능으로, 웹 애플리케이션의 요청과 응답을 가로채거나 이벤트를 처리하는 데 사용됩니다.

 

1. 필터(Filter)

필터는 요청과 응답을 변경하거나 처리할 수 있는 자바 클래스입니다. 필터는 요청이 서블릿이나 JSP에 도달하기 전에 요청을 가로채고, 응답이 클라이언트에 전송되기 전에 응답을 가로챕니다.

필터의 특징

  • 요청과 응답을 변경하거나 처리할 수 있습니다.
  • 체인 형태로 여러 개의 필터를 연결할 수 있습니다.
  • 인코딩, 로깅, 인증, 보안 등의 작업에 사용될 수 있습니다.

필터 구현 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class LoggingFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String requestURL = httpRequest.getRequestURL().toString();
        System.out.println(“Request URL: “ + requestURL);
        chain.doFilter(request, response); // 다음 필터 또는 서블릿 호출
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        int statusCode = httpResponse.getStatus();
        System.out.println(“Response Status Code: “ + statusCode);
    }
    // …
}
cs

 

 

2. 리스너(Listener)

리스너는 웹 애플리케이션에서 발생하는 이벤트를 처리하는 자바 클래스입니다. 리스너는 이벤트가 발생할 때 호출되며, 해당 이벤트에 대한 작업을 수행합니다.

리스너의 특징

  • 웹 애플리케이션의 시작과 종료, 세션의 생성과 소멸 등의 이벤트를 처리할 수 있습니다.
  • 이벤트 처리를 통해 애플리케이션의 상태를 모니터링하거나 로깅할 수 있습니다.

리스너 구현 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class SessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent event) {
        HttpSession session = event.getSession();
        String sessionId = session.getId();
        System.out.println(“Session Created: “ + sessionId);
    }
    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        HttpSession session = event.getSession();
        String sessionId = session.getId();
        System.out.println(“Session Destroyed: “ + sessionId);
    }
}
cs

 

 

3. 필터와 리스너의 등록

필터와 리스너를 사용하려면 웹 애플리케이션의 배포 서술자(web.xml) 또는 어노테이션을 사용하여 등록해야 합니다.

web.xml에 등록

1
2
3
4
5
6
7
8
9
10
11
12
<filter>
    <filter-name>loggingFilter</filter-name>
    <filter-class>com.example.LoggingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>loggingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
    <listener-class>com.example.SessionListener</listener-class>
</listener>
cs

 

어노테이션 사용

1
2
3
4
5
6
7
8
9
@WebFilter(“/*”)
public class LoggingFilter implements Filter {
    // …
}
@WebListener
public class SessionListener implements HttpSessionListener {
    // …
}
cs

 

필터와 리스너는 웹 애플리케이션의 요청과 응답을 가로채거나 이벤트를 처리하여 애플리케이션의 기능을 확장하고 모니터링할 수 있습니다. 이를 활용하면 보다 유연하고 모듈화된 웹 애플리케이션을 개발할 수 있습니다.

 

 

더미식 김치교자 (냉동), 350g, 2개
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다