Ví dụ in địa chỉ IP client và thời gian hiện tại mỗi lần truy cập file JSP. Ví dụ cơ bản giúp hiểu JSP Filter, có thể viết ứng dụng phức tạp hơn cùng khái niệm.
Lớp LogFilter
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class LogFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
String testParam = config.getInitParameter("test-param");
System.out.println("Test Param: " + testParam);
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws java.io.IOException, ServletException {
String ipAddress = request.getRemoteAddr();
System.out.println("IP " + ipAddress + ", Time " + new Date().toString());
chain.doFilter(request, response);
}
public void destroy() { }
}
Biên dịch LogFilter.java, đặt LogFilter.class vào <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes.
Ánh xạ Filter trong web.xml
Filter định nghĩa và ánh xạ đến URL hoặc tên file JSP, tương tự servlet trong 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>
Filter áp dụng cho tất cả servlet/JSP do chỉ định /*. Có thể chỉ định servlet/JSP cụ thể nếu chỉ muốn áp dụng cho một vài.
Gọi servlet/JSP bất kỳ, log sẽ xuất hiện trong log server. Có thể dùng Log4J logger ghi log vào file riêng.