클라이언트
서버쪽에 있는 서블릿
요청할때 , 응답할때 request, response 를 필터링 하는것
package 에서 filter 를 검색해서 만든다.
----------------------------------------------------------------------------------------
xml 파일 : filter 생성순서(init() 은 상관이 없지만 작동순서는 xml에 쓴 순서대로 작동되고 끝날때는 작동했던 순서와 반대로 끝나간다.)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>servletTest</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>Filter01</filter-name>
<filter-class>kr.or.ddit.filter.FilterTest01</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter01</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Filter02</filter-name>
<filter-class>kr.or.ddit.filter.FilterTest02</filter-class>
<!-- 필터의 초기화 정보 설정하기 -->
<init-param>
<param-name>tester</param-name>
<param-value>홍길동</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter02</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>servletTest08</servlet-name>
<servlet-class>kr.or.ddit.basic.ServletTest08</servlet-class>
<init-param>
<param-name>start</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>end</param-name>
<param-value>50</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>servletTest08</servlet-name>
<url-pattern>/servletTest08.do</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>servletTest01</servlet-name>
<servlet-class>kr.or.ddit.basic.ServletTest01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletTest01</servlet-name>
<url-pattern>/servletTest01.do </url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>servletTest05</servlet-name>
<servlet-class>kr.or.ddit.basic.ServletTest05</servlet-class>
<init-param>
<param-name>AdminEmail</param-name>
<param-value>admin@naver.com</param-value>
</init-param>
<init-param>
<param-name>userName</param-name>
<param-value>홍길동</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>servletTest05</servlet-name>
<url-pattern>/servletTest05.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>myContext</param-name>
<param-value>연습용 컨텍스트 파라미터 값</param-value>
</context-param>
<servlet>
<description></description>
<display-name>ResponseTest01</display-name>
<servlet-name>ResponseTest01</servlet-name>
<servlet-class>kr.or.ddit.reqres.copy.RequestTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ResponseTest01</servlet-name>
<url-pattern>/responseTest01.do</url-pattern>
</servlet-mapping>
</web-app>
----------------------------------------------------------------------------------------
filter 01 filter 파일
서블릿필터
1. 사용목적
-클라이언트의 요청을 수행하기 전에 이 요청을 가로채서 필요한 작업을 수행할 수 있다.
-클라이언트에 대한 응답 정보를 제공하기 전에 응답 정보에 필요한 작업을 수행할 수 있다.
2. 사용예
-인증 작업용 필터
-데이터 압축용 필터
-인코딩용 필터
-로깅 작업용 필터
-이미지 변환 작업용 필터 등등등 ...
* Servlet Filter implementation class FilterTest01
필터를 별(*/)로 해놓으면 전체가 거쳐서 만들어진다.
필터 class 는 'javax.servlet.filter' 인터페이스를 구현해서 작성해야 한다.
작성된 필터는 web.xml 에 등록해서 작동 시키거나
@WebFilter 에노테이션을 이용해서 작동시키면 된다.
(형식 : @WebFilter("url매핑 정보 "))
(예 : @WebFilter("/*") ) => 모든 요청에 대하여 처리하라
package kr.or.ddit.filter;
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;
import javax.servlet.annotation.WebFilter;
public class FilterTest01 implements Filter {
//필터 초기화 부분
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("첫번째 Filter - init() 메서드 실행....");
}
//실제 처리되는 부분
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//chain.doFilter() 메서드 앞쪽은 요청에 관련된 처리를 구현한다.
System.out.println("첫번째 Filter - doFilter() 메서드 호출 전....");
chain.doFilter(request, response);
//다른 필터로 넘어가라 하는 부분 (다음 필터로 제어가 넘어감) 마지막에 있는 필터는 서블릿을 호출해주도록 되어 있다.
System.out.println("첫번째 Filter-doFilter() 메서드 호출 후....");
//chain.doFilter() 메서드 뒤쪽은 응답에 관련된 처리를 구현한다.
}
//필터 종료시 처리할 부분
public void destroy() {
System.out.println("첫번째 Filter - destroy() 메서드 실행 ");
}
}
//<param-name>tester</param-name>
//<param-value>홍길동</param-value>
//</init-param>
댓글
댓글 쓰기