Filter 기술

5502 단어 javaeefilter
Filter 개발 시작
Filter 개발은 다음 두 단계로 이루어집니다.
1, 자바 클래스를 작성하여 Filter 인터페이스를 실현하고doFilter 방법을 실현한다.
public class FilterDemo1 implements Filter {

	//FilterChain filter 
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		
		System.out.println("filter1111  ");
		chain.doFilter(request, response);  //  
		System.out.println("filter1111  ");

	}

	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub

	}
	
	public void destroy() {
		// TODO Auto-generated method stub

	}

}

2, 웹에서.xml 파일에서 요소를 사용하여 작성된 Filter 클래스를 등록하고 차단할 수 있는 자원을 설정합니다.
       <filter>
		<filter-name>FilterDemo1</filter-name>
		<filter-class>cn.yujian.web.filter.FilterDemo1</filter-class>
		<init-param>
                <param-name>word_file</param-name>  
                <param-value>/WEB-INF/word.txt</param-value>
                </init-param>
		</filter>
		
		<filter-mapping>
		<filter-name>FilterDemo1</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
		</filter-mapping>

1, 등록 지침:
필터에 이름을 지정하는 데 사용되며, 이 요소의 내용은 비어 있을 수 없습니다.
요소는 필터의 완전한 한정 클래스를 지정하는 데 사용됩니다.
요소는 필터에 초기화 파라미터를 지정하는 데 사용되며, 하위 요소 는 파라미터의 이름을 지정하고, 는 파라미터의 값을 지정합니다.필터에서 FilterConfig 인터페이스 객체를 사용하여 초기화 매개변수에 액세스할 수 있습니다.
2, 매핑 설명:
요소는 Filter가 차단하는 자원을 설정하는 데 사용됩니다.
하위 요소는 Filter의 등록 이름을 설정하는 데 사용됩니다.이 값은 요소에 표시된 필터의 이름이어야 합니다
Filter에서 차단하는 요청 경로 설정 (필터와 연결된 URL 스타일)
필터가 차단한 자원을 웹 용기에 호출하는 방식을 지정합니다. REQUEST, INCLUDE, FORWARD, ERROR 중 하나이며, 기본 REQUEST입니다.사용자는 Filter가 자원에 대한 다양한 호출 방식을 차단할 수 있도록 여러 개의 하위 요소를 설정할 수 있습니다
3, 하위 요소가 설정할 수 있는 값과 의미
REQUEST: 사용자가 페이지에 직접 액세스하면 웹 컨테이너가 필터를 호출합니다.대상 자원이 RequestDispatcher의include () 또는 forward () 방법으로 접근할 때 이 필터는 호출되지 않습니다. 
INCLUDE: 대상 자원이 RequestDispatcher의include () 방법으로 접근할 때 이 필터가 호출됩니다.이외에 이 필터는 호출되지 않습니다.
FORWARD: 대상 자원이 RequestDispatcher의 forward () 방법으로 접근할 때 이 필터는 호출됩니다. 이외에 이 필터는 호출되지 않습니다. 
ERROR: 대상 자원이 성명식 비정상 처리 메커니즘을 통해 호출될 때 이 필터가 호출됩니다.이외에 필터는 호출되지 않습니다.
둘째, Filter의 수명 주기
init(FilterConfig filterConfig)throws ServletException: 
Filter의 생성 및 제거는 작성한 서브렛 프로그램과 마찬가지로 WEB 서버에서 담당합니다.웹 응용 프로그램이 시작되면 웹 서버는 Filter의 실례적인 대상을 만들고 그 init 방법을 호출하여 대상의 초기화 기능을 완성하여 후속 사용자의 요청을 차단할 준비를 합니다. (주: Filter 대상은 한 번만 만들고 init 방법도 한 번만 실행합니다. 예시) 개발자는 init 방법의 파라미터를 통해 현재 Filter 설정 정보를 대표하는 Filter Config 대상의 대상을 얻을 수 있습니다.
destroy():
Filter 객체를 제거하기 전에 웹 컨테이너가 호출됩니다.이 메서드는 Filter 라이프 사이클에서 한 번만 실행됩니다.이 방법에서 필터가 사용하는 자원을 방출할 수 있습니다.
FilterConfig 인터페이스
사용자가 Filter를 설정할 때 을 사용하여 Filter에 초기화 파라미터를 설정할 수 있습니다. 웹 용기에서 Filter 대상을 실례화하고 init 방법을 호출할 때 Filter 초기화 파라미터를 봉한 Filter Config 대상을 전달합니다.따라서 개발자가 Filter를 작성할 때 FilterConfig 대상을 통해 얻을 수 있는 방법은 다음과 같다.
String getFilterName(): Filter의 이름을 가져옵니다. 
String getInitParameter(String name): 배치 설명에 지정된 이름의 초기화 매개변수 값을 반환합니다.null이 존재하지 않으면 되돌려줍니다.Enumeration getInitParameterNames(): 필터의 초기화된 모든 매개변수 이름의 열거 집합을 반환합니다.
public 서브렛Context get서브렛Context(): 서브렛 컨텍스트 객체의 참조를 반환합니다.
Filter 매개 변수를 구성하려면:
     <filter>
		<filter-name>FilterDemo3</filter-name>
		<filter-class>cn.yujian.web.filter.FilterDemo3</filter-class>
		<init-param>
		<param-name>xxx</param-name>
		<param-value>yyyy</param-value>
		</init-param>
		</filter>
		
		<filter-mapping>
		<filter-name>FilterDemo3</filter-name>
		<url-pattern>/*</url-pattern>
		</filter-mapping>

Filter 매개 변수를 가져오려면:
public class FilterDemo3 implements Filter {

	private FilterConfig filterConfig;
	public void init(FilterConfig filterConfig) throws ServletException {
		System.out.println("init!!!!!!!!!!!!!!!!!!!!!!");
		this.filterConfig = filterConfig;

	}
	
	public void destroy() {
		System.out.println("destroy!!!!!!!!!!!!!!!!!!!!!");

	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
			
		System.out.println("filter3.............................");
		String filterName = this.filterConfig.getFilterName();
		String parameterValue = this.filterConfig.getInitParameter("xxx");
		Enumeration enumeration =  this.filterConfig.getInitParameterNames();
		ServletContext ctx = this.filterConfig.getServletContext();
	}
}

셋, Filter 체인
하나의 웹 응용 프로그램에서 여러 개의 Filter를 개발할 수 있는데, 이러한 Filter를 조합해서 하나의 Filter 체인이라고 부른다.
웹 서버는 Filter에 따라 웹에 있습니다.xml 파일의 등록 순서는 어떤 Filter를 먼저 호출할지 결정합니다. 첫 번째 Filter의doFilter 방법이 호출될 때 웹 서버는 Filter 체인을 대표하는 FilterChain 대상을 만들어서 이 방법에 전달합니다.doFilter 방법에서 개발자가 FilterChain 대상의doFilter 방법을 호출하면 웹 서버는 FilterChain 대상에 Filter가 있는지 확인하고 있으면 두 번째 Filter를 호출하고 없으면 목표 자원을 호출합니다.

좋은 웹페이지 즐겨찾기