নিচের উদাহরণটি দেখাবে কীভাবে ক্লায়েন্টের IP ঠিকানা এবং বর্তমান তারিখ-সময় প্রিন্ট করা যায় প্রতিবার যেকোনো JSP ফাইল এক্সেস করলে। এটি JSP ফিল্টারের বেসিক ধারণা দেবে, তবে আপনি একই কনসেপ্ট ব্যবহার করে আরও উন্নত ফিল্টার অ্যাপ্লিকেশন লিখতে পারেন।
LogFilter.java
// 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 {
// ক্লায়েন্ট মেশিনের IP ঠিকানা পান
String ipAddress = request.getRemoteAddr();
// IP এবং বর্তমান টাইমস্ট্যাম্প লগ করুন
System.out.println("IP " + ipAddress + ", Time " + new Date().toString());
// রিকোয়েস্ট ফিল্টার চেইন-এর নিচে পাস করুন
chain.doFilter(request, response);
}
public void destroy() {
/* 웹 কন্টেইনার দ্বারা ফিল্টার ইনস্ট্যান্স সার্ভিস থেকে हটাওয়ার আগে কল হয় */
}
}
কম্পাইল এবং ডিপ্লয়
- LogFilter.java কম্পাইল করুন
- LogFilter.class ফাইলটি রাখুন: <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes
web.xml-এ ফিল্টার ম্যাপিং
ফিল্টারগুলো ডিফাইন করা হয় এবং তারপর 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 logger ব্যবহার করতে পারেন।