티스토리 뷰

백엔드/servlet

servlet filter 만들기

첸첸 2022. 3. 27. 18:15
728x90

1️⃣ Filter 인터페이스를 구현 한 filter 클래스 생성 

- filter는 톰캣이 실행 될 때 기본적으로 실행되고, 요청이 올 때 마다 실행된다.

- filter에서 다음 요청으로 진행을 할 지말지 결정해주어야한다. -> FilterChain의 doFilter 사용

- 흐름을 넘기기 전 후에 실행할 행위를 정해준다(예 : 인코딩)

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

public class CharacterEncodingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("before filter");//톰캣 실행시 실행, 요청 올 때 실행
        servletRequest.setCharacterEncoding("UTF-8");
        //필터의 흐름을 다음으로 넘겨줄지 말지를 결정을 해야함.
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("after filter");
    }
}

 2️⃣ filter 등록

- 필터 등록시 web.xml과 annotation 방식이 있다.

 

 2️⃣-1️⃣ web.xml 사용

    <filter>
        <filter-name>CharacterEncodingFilter</filter-name> //필터 이름 지정
        <filter-class>com.company.filter.CharacterEncodingFilter</filter-class> //사용할 필터 클래스
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern> //필터를 사용할 url 패턴 지정
    </filter-mapping>

2️⃣-2️⃣ @WebFilter(url) 사용

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("before filter");//톰캣 실행시 실행, 요청 올 때 실행
        //필터의 흐름을 다음으로 넘겨줄지 말지를 결정을 해야함
        servletRequest.setCharacterEncoding("UTF-8");
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("after filter");
    }
}

 

 

'백엔드 > servlet' 카테고리의 다른 글

IDE사용 없이 servlet 만들고 실행하기  (0) 2022.03.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함