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-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, 등록 지침:
2, 매핑 설명:
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를 설정할 때
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를 호출하고 없으면 목표 자원을 호출합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
RMI 시작 인스턴스RMI는 JavaEE의 핵심 구성 요소이며 분산 개발의 기초입니다.다음은 RMI의 응용 프로세스를 보여 주는 예입니다. 업무 인터페이스 구축 RMI 서비스를 제공하는 인터페이스 클래스는 자바를 계승해야 합니다.rmi...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.