ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (Servlet) 서블릿 필터 (Filter) 예제
    Web/Servlet 2018. 9. 4. 16:52

    톰캣(Tomcat)에서 url 요청을 받으면 web.xml에 등록되어 있는 url pattern에 대해서는 해당 서블릿이 수행돼 그 결과를 response 객체에 담아 톰캣에 반환한다. 이때 필터(Filter)를 두어 서블릿들에서 중복되는 로직을 한번에 처리할 수 있다. 필터에는 주로 인코딩로그인 체커 로직을 담는다.

    필터 또한 web.xml에 등록되어 있으며, web.xml에서 호출 우선순위가 서블릿보다 높음을 짐작할 수 있다. 작성 절차

    1.  common.web 패키지 만들어 관리한다. 만든 common.web 패키지에 마우스 오른쪽 - New - Others 클릭

    2. filter 입력해 찾아 클릭 후 Next

    3. 이름 입력 후 Next

    4. url 자동 작성 되어 있다. Edit 버튼 클릭

    5. url을 /*로 수정. *는 와일드카드로 모든 url 요청에 해당 필터를 수행하겠다는 의미. OK 버튼 클릭 후 4번 화면에서 Next 버튼 클릭

    6. Finish 버튼 클릭

    web.xml 가보면 filter에 대한 정보가 자동 입력 되어 있음 확인할 수 있다.
    필터 코드 작성


    package blog.naver.com.common.web;
    
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class CharacterEncodingFilter implements Filter {
    
    	public void destroy() {
    	}
    
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    		request.setCharacterEncoding("UTF-8");
    		response.setCharacterEncoding("UTF-8");
    		
    		chain.doFilter(request, response);
    	}
    
    	public void init(FilterConfig fConfig) throws ServletException {
    		
    	}
    
    }
    
    

    필터 본문. doFilter에 요청, 응답 다국어 지원 가능한 UTF-8로 설정했다.
    이후 chain.doFilter 통해 서블릿에 가공된 request, response 객체를 전송한다.
    web.xml에 /*로 설정했으므로 모든 요청에 대해서 수행한다.
    위와 같이 필터를 통해 유저의 권한에 따라 사용할 수 있는 페이지를 제한할 수 있다. 이를 돕는 객체가 Session이고, 다음 포스팅에 다룰 것이다.

    'Web > Servlet' 카테고리의 다른 글

    서블릿(Servlet) 예제  (0) 2018.09.04
    서블릿(Servlet) 경로 (Context path, Context root) , web.xml  (0) 2018.09.04
Designed by Tistory.