-
(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