본문 바로가기
Java Web/JSP

[JSP] 필터 (Filter)

by 스응 2023. 4. 6.
728x90
728x90

필터 (Filter)

  - 매번 요청 들어오는 값들을 확인하고자 할 때 사용함

      · 브라우저에서 웹 서버로 요청되기 전에 검사

      · 웹 서버에서 브라우저로 응답되기 전에 검사

  - 필요한 경우에만 사용해도 됨

      · 유용한 예시

          : request.setCharacterEncoding("UTF-8");를 필터에서 설정해주면 서블릿에서 반복하지 않아도 됨

 

#  Filter Life-Cycle

  - init() : 처음 생성되는 과정

  - doFilter() : 일하는 단계

  - destroy() : 종료하는 단계

  

  ⇒ 생성자 → init()은 처음 연결되었을 때만 실행됨

      doFilter()는 연결될 때마다 실행됨

      destroy()는 메모리가 해제되면 실행됨

 

 

반응형
728x90

필터 생성 방법

1.  Filter 인터페이스의 구현 클래스 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MyFilter implements Filter {
    
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println(">>> 필터 초기화 <<<");
    }
 
    // 중요 !
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        
        request.setCharacterEncoding("UTF-8");
        // Filter에서 Servlet으로 보내려면 (밑 코드가 없으면 필터에서 걸려서 안넘어감)
        chain.doFilter(request, response);
        
    }
    
    @Override
    public void destroy() {
        System.out.println(">>> 필터 destory <<<");
    }
}
cs

2.  해당 필터 구현 클래스를 사용하겠다고 web.xml 파일에 등록

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- Filter 처리 -->
<filter>
    <!-- 필터 이름 (임의로) -->
    <filter-name>myFilter</filter-name>
    <!-- 실제 패키지 + 클래스명 -->
    <filter-class>com.tenco.filter.MyFilter</filter-class>
</filter>
 
<filter-mapping>
    <!-- 위에서 지정한 필터 이름 -->
    <filter-name>myFilter</filter-name>
    <!-- 대상이 되는 요청 주소 : /*로 지정하면 모든 요청 주소에서 필터가 동작함 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>
cs
320x100
반응형

'Java Web > JSP' 카테고리의 다른 글

[JSP] 웹 컨테이너 (Web Container)  (0) 2023.06.18
[JSP] 쿼리 파라미터 방식 (쿼리 스트링)  (0) 2023.04.05
[JSP] JSTL (JSP Standard Tag Library)  (0) 2023.03.28
[JSP] RequestDispatcher  (0) 2023.03.27
[JSP] 쿠키와 세션  (0) 2023.03.27

댓글