Computer >> Máy Tính >  >> Lập trình >> Lập trình

Làm thế nào để sử dụng một bộ lọc trong JSP?

Ví dụ sau cho thấy cách in địa chỉ IP của máy khách và ngày giờ hiện tại, mỗi lần nó truy cập vào bất kỳ tệp JSP nào. Ví dụ này sẽ cung cấp cho bạn hiểu biết cơ bản về Bộ lọc JSP, nhưng bạn có thể viết các ứng dụng bộ lọc phức tạp hơn bằng cách sử dụng cùng một khái niệm -

// 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*/
   }
}

Biên dịch LogFilter.java theo cách thông thường và đặt LogFilter.class của bạn tệp trong / webapps / ROOT / WEB-INF / class .

Ánh xạ bộ lọc JSP trong Web.xml

Các bộ lọc được xác định và sau đó được ánh xạ tới một URL hoặc tên tệp JSP, giống như cách Servlet được xác định và sau đó được ánh xạ tới một mẫu URL trong web.xml tập tin. Tạo mục nhập sau cho thẻ bộ lọc trong tệp trình mô tả triển khai 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>

Bộ lọc ở trên sẽ áp dụng cho tất cả các servlet và JSP vì chúng tôi đã chỉ định / * trong cấu hình của chúng tôi. Bạn có thể chỉ định một servlet cụ thể hoặc đường dẫn JSP nếu bạn muốn áp dụng bộ lọc trên một vài servlet hoặc chỉ JSP.

Bây giờ hãy thử gọi bất kỳ servlet hoặc JSP nào và bạn sẽ thấy nhật ký được tạo trong nhật ký máy chủ web của mình. Bạn có thể sử dụng Trình ghi nhật ký Log4J để đăng nhập ở trên, hãy đăng nhập vào một tệp riêng biệt.