Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

JSP에서 필터를 사용하는 방법은 무엇입니까?

<시간/>

다음 예는 JSP 파일에 액세스할 때마다 클라이언트의 IP 주소와 현재 날짜 시간을 인쇄하는 방법을 보여줍니다. 이 예제는 JSP 필터에 대한 기본적인 이해를 제공하지만 동일한 개념을 사용하여 보다 정교한 필터 응용 프로그램을 작성할 수 있습니다. -

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

// Implements Filter class
public class LogFilter implements Filter {
   public void init(FilterConfig config) throws ServletException {
      // Get init parameter
      String testParam = config.getInitParameter("test-param");
      //Print the init parameter
      System.out.println("Test Param: " + testParam);
   }
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
   throws java.io.IOException, ServletException {

      // Get the IP address of client machine.
      String ipAddress = request.getRemoteAddr();
      // Log the IP address and current timestamp.
      System.out.println("IP "+ ipAddress + ", Time "+ new Date().toString());
      // Pass request back down the filter chain
      chain.doFilter(request,response);
   }
   public void destroy( ) {
      /* Called before the Filter instance is removed
      from service by the web container*/
   }
}

LogFilter.java 컴파일 일반적인 방법으로 LogFilter.class /webapps/ROOT/WEB-INF/classes의 파일 .

Web.xml의 JSP 필터 매핑

Servlet이 정의된 다음 web.xml의 URL 패턴에 매핑되는 것과 거의 동일한 방식으로 필터가 정의된 다음 URL 또는 JSP 파일 이름에 매핑됩니다. 파일. 배포 설명자 파일 web.xml에서 필터 태그에 대해 다음 항목을 만듭니다.

<filter>
   <filter-name>LogFilter</filter-name>
   <filter-class>LogFilter</filter-class>
   <init-param>
      <param-name>test-param</param-name>
      <param-value>Initialization Paramter</param-value>
      </init-param>
</filter>
<filter-mapping>
   <filter-name>LogFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

위의 필터는 /*을 지정했기 때문에 모든 서블릿과 JSP에 적용됩니다. 우리의 구성에서. 일부 서블릿 또는 JSP에만 필터를 적용하려는 경우 특정 서블릿 또는 JSP 경로를 지정할 수 있습니다.

이제 서블릿이나 JSP를 호출하려고 하면 웹 서버 로그에 생성된 로그가 표시됩니다. Log4J 로거를 사용할 수 있습니다. 위의 로그는 별도의 파일로 로그인하세요.