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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Error building SqlSession.mybatis의 학습을 진행할 때 컨트롤러에서 위의 오류를 보고했습니다. 분명히 한 걸음 한 걸음 왔는데 어떻게 이런 오류를 보고할 수 있습니까? 인터넷에서 찾아봐도 좋은 답을 찾지 못해서 한 걸음 인쇄해서 문제를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.