필터는 연결된 서블릿이나 JSP 페이지 이전에 서버에서 실행되는 프로그램입니다. 필터는 하나 이상의 서블릿이나 JSP 페이지에 연결될 수 있으며 이러한 리소스에 입력되는 요청 정보를 검사할 수 있습니다.
이후 필터는 다음과 같은 선택을 할 수 있습니다:
① 기존 방식으로 리소스를 호출합니다(예: 서블릿 또는 JSP 페이지 호출).
②수정된 요청 정보를 활용하여 자원을 호출하세요.
③리소스를 호출하되 클라이언트에 응답을 보내기 전에 수정하세요.
4리소스 호출을 차단하고, 대신 다른 리소스로 이동하고, 특정 상태 코드를 반환하거나 대체 출력을 생성하세요.
필터 작동 방식
서블릿을 필터로 사용하면 고객 요청을 처리할 수 있습니다. 처리가 완료된 후 처리를 위해 다음 필터로 넘겨지므로 해당 요청이 대상으로 전송될 때까지 필터링 체인에서 고객의 요청이 하나씩 처리됩니다. 예를 들어, 웹사이트에 "수정된 등록 정보"를 제출하는 웹페이지가 있습니다. 사용자가 수정된 정보를 입력하고 제출한 후 서버는 처리 중에 두 가지 작업을 수행해야 합니다. 클라이언트의 세션이 유효한지 확인하고, 제출된 데이터를 코딩으로 통합합니다. 두 작업 모두 두 개의 필터로 구성된 필터 체인에서 처리될 수 있습니다. 필터 처리가 성공하면 제출된 데이터가 최종 대상으로 전송됩니다. 필터 처리가 실패하면 보기가 지정된 오류 페이지로 전달됩니다.
Filter lifecycle
public void init(FilterConfig filterConfig) throws ServletException;//初始化
우리가 작성한 Servlet 프로그램과 마찬가지로 Filter의 생성과 소멸은 WEB 서버의 책임입니다. 웹 애플리케이션이 시작되면 웹 서버는 Filter의 인스턴스 객체를 생성하고 init 메소드를 호출하고 web.xml 구성을 읽고 객체의 초기화 기능을 완료하여 후속 사용자 요청(필터 객체)을 차단할 준비를 합니다. 한 번만 생성되고 init 메서드는 한 번만 실행됩니다. 개발자는 init 메소드의 매개변수를 통해 현재 필터 구성 정보를 나타내는 FilterConfig 객체를 얻을 수 있습니다.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;//拦截请求
이 방법으로 실제 필터링 작업이 완료됩니다. 클라이언트가 필터와 연관된 URL에 대한 액세스를 요청하면 서블릿 필터는 먼저 doFilter 메소드를 실행합니다. FilterChain 매개변수는 후속 필터에 액세스하는 데 사용됩니다.
public void destroy();//销毁
필터 개체는 생성 후 메모리에 상주하며 웹 애플리케이션이 제거되거나 서버가 중지되면 폐기됩니다. 웹 컨테이너가 필터 개체를 언로드하기 전에 호출됩니다. 이 메서드는 필터의 수명 주기 동안 한 번만 실행됩니다. 이 방법을 사용하면 필터에서 사용하는 리소스를 해제할 수 있습니다.
추천 튜토리얼: "java 튜토리얼"
위 내용은 필터란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!