리스너와 함께 대표적인 특별한 형태의 서블릿
사용자 요청에 따라 특정 서블릿이나 JSP가 실행되기전 사전 작업 수행한다.
여러 개의 서블릿을 다양한 조건으로 설정해 하나의 요청에 여러 필터가 사전에 수행 될 수 있도록 할 수 있음
동작구조는 다음과 같다.
1. web.xml에 명시된 Filter의 url-pattern에 맞는 요청이 들어옴.
2. 해당요청에 따른 ServletFilter가 먼저 실행
3. 본래 요청한 페이지로
밑은 간단한 서블릿 필터 예제.
FilterTest.java
public class FileterTest implements Filter { public FileterTest() { } public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 이곳에 사전처리 작업이 들어간다. request.setCharacterEncoding("utf-8"); request.setAttribute("filter", "나는 필터입니다"); chain.doFilter(request, response); } public void init(FilterConfig fConfig) throws ServletException { } }
FilterTester.java
public class FilterTester extends HttpServlet { private static final long serialVersionUID = 1L; public FilterTester() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out =response.getWriter(); String tester = (String)request.getAttribute("filter"); out.println("필터에서 넘어온 값 : " + tester); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
web.xml 부분
<servlet>
<description></description>
<display-name>FilterTester</display-name>
<servlet-name>FilterTester</servlet-name>
<servlet-class>ex.FilterTester</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FilterTester</servlet-name>
<url-pattern>/FilterTester</url-pattern>
</servlet-mapping>
<filter>
<display-name>FileterTest</display-name>
<filter-name>FileterTest</filter-name>
<filter-class>ex.FileterTest</filter-class>
</filter>
<filter-mapping>
<filter-name>FileterTest</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
위의 예제에서는 모든 주소에 대하여 Filter가 처리된다.
'JSP > Learn' 카테고리의 다른 글
[Servlet] 서블릿 리스너 (0) | 2012.04.10 |
---|---|
[JSP & Servlet] 기본적으로 알아 두어야 할 것들 (0) | 2012.04.04 |
[JSP] 서블릿으로 다운로드 페이지 구현 (0) | 2011.12.09 |
[JSP] Jakarta POI IV탄 이미지편 (0) | 2011.12.08 |
[JSP] Jakarta POI III탄 Cell편(퍼옴) (0) | 2011.12.08 |