Interceptor কি এবং এর ভূমিকা

Spring MVC এর জন্য Interceptors - স্প্রিং এমভিসি (Spring MVC) - Java Technologies

392

Interceptor হল Spring MVC এর একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যে মধ্যবর্তী স্তরে কাজ করে। Interceptor একটি কাস্টম লজিক প্রয়োগ করতে সক্ষম যা রিকোয়েস্ট বা রেসপন্সের আগে বা পরে নির্দিষ্ট কাজ করে। Interceptors সাধারণত লগিং, নিরাপত্তা যাচাইকরণ, পারফরম্যান্স মনিটরিং, এবং কাস্টম রিসপন্স প্রসেসিং সহ বিভিন্ন কাজে ব্যবহৃত হয়।

Interceptor কী?

Interceptor হল একটি সুনির্দিষ্ট উপাদান যা Spring MVC অ্যাপ্লিকেশনকে আরও কাস্টমাইজ এবং নিয়ন্ত্রণ করতে সাহায্য করে। এটি একটি HandlerInterceptor ইন্টারফেস ইমপ্লিমেন্টেশন যা Spring MVC ফ্রেমওয়ার্কের ফিল্টার চেইন অংশ হিসেবে কাজ করে এবং রিকোয়েস্ট প্রসেসিং শুরু হওয়ার পূর্বে বা রেসপন্স পাঠানোর পর বিভিন্ন কাজ করতে পারে।

Interceptor প্রায়শই logging, authentication বা authorization, performance monitoring, এবং data modification এর মতো প্রয়োজনীয় কাজের জন্য ব্যবহৃত হয়।


Interceptor এর ভূমিকা

Spring MVC তে Interceptor এর মূল ভূমিকা হচ্ছে:

  • Request Pre-processing: রিকোয়েস্ট আসার আগে কিছু কাস্টম কাজ করা (যেমন, লগিং, ইউজার অথেন্টিকেশন চেক করা ইত্যাদি)।
  • Post-processing: রিকোয়েস্ট হ্যান্ডল করার পরে (কন্ট্রোলার থেকে রেসপন্স পাওয়ার পর) কিছু কাজ করা।
  • Cleaning up: রেসপন্স পাঠানোর পর ক্লিনআপ বা অন্যান্য কাজ করা।

Interceptor মূলত Handler (যেমন কন্ট্রোলার মেথড) এর আগে বা পরে প্রসেসিং করতে পারে, তবে এটি সাধারণত before এবং after hooks প্রদান করে।


Interceptor-র মূল কার্যাবলি:

  1. Pre-handle:
    • এটি রিকোয়েস্ট আসার আগে কাজ করে।
    • এখানে আপনি ইউজারের অথেন্টিকেশন চেক করতে পারেন, লগিং করতে পারেন বা অন্য কোন প্রি-প্রসেসিং কাজ করতে পারেন।
  2. Post-handle:
    • এটি কন্ট্রোলার বা অন্য কোন কম্পোনেন্ট থেকে রেসপন্স আসার পর কাজ করে।
    • উদাহরণস্বরূপ, কন্ট্রোলারের রেসপন্স প্রক্রিয়াকরণের পর কিছু কাস্টম লজিক প্রয়োগ করা।
  3. After-completion:
    • এটি পুরো রিকোয়েস্ট-রেসপন্স প্রসেস শেষ হওয়ার পর কাজ করে।
    • এটি ক্লিনআপ, লগিং বা অন্যান্য অবশেষ কাজের জন্য ব্যবহৃত হতে পারে।

Spring MVC Interceptor কনফিগারেশন এবং উদাহরণ

ধাপ 1: Interceptor ইমপ্লিমেন্ট করা

Spring MVC তে Interceptor ইমপ্লিমেন্ট করতে হলে, HandlerInterceptor ইন্টারফেসটি ইমপ্লিমেন্ট করতে হবে।

import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor implements HandlerInterceptor {

    // Pre-handle: Request আসার আগে কাজ করবে
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("Request is being processed in preHandle");
        return true; // Return true to allow the request to proceed
    }

    // Post-handle: Controller থেকে রেসপন্স আসার পরে কাজ করবে
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("Request has been processed in postHandle");
    }

    // After-completion: Request-Response প্রসেস শেষ হওয়ার পরে কাজ করবে
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("Request and Response is completed in afterCompletion");
    }
}

এখানে:

  • preHandle: রিকোয়েস্ট আসার আগে কিছু কাজ করতে ব্যবহৃত হয়। এটি true রিটার্ন করলে রিকোয়েস্ট প্রসেস করতে দেয়া হয়, কিন্তু false রিটার্ন করলে রিকোয়েস্ট থামিয়ে দেয়া হবে।
  • postHandle: কন্ট্রোলার থেকে রেসপন্স আসার পর কিছু কাজ করতে ব্যবহৃত হয়।
  • afterCompletion: পুরো রিকোয়েস্ট-রেসপন্স প্রক্রিয়াটি সম্পন্ন হওয়ার পর শেষের কাজগুলো করা হয় (যেমন ক্লিনআপ বা লগিং)।

ধাপ 2: Spring MVC কনফিগারেশন ক্লাসে Interceptor রেজিস্টার করা

Spring MVC তে Interceptor ব্যবহার করতে WebMvcConfigurerAdapter (বা WebMvcConfigurer) কনফিগারেশন ক্লাসে ইন্টারসেপ্টরটি রেজিস্টার করতে হয়।

import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    // Add custom interceptor to the Spring MVC interceptor chain
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");  // Apply to all paths
    }
}

এখানে:

  • addInterceptor(new MyInterceptor()): নতুন ইন্টারসেপ্টর যোগ করা হয়।
  • addPathPatterns("/**"): ইন্টারসেপ্টরটি সমস্ত URL পাথের জন্য কার্যকর হবে।

আপনি চাইলে নির্দিষ্ট পাথ বা URL-এ ইন্টারসেপ্টরটি সীমিত করতে পারেন।

registry.addInterceptor(new MyInterceptor()).addPathPatterns("/admin/**");  // Only for /admin URLs

Interceptor এর ব্যবহারের কিছু সাধারণ ক্ষেত্র:

  1. লগিং:
    • ইউজারের রিকোয়েস্ট এবং রেসপন্সের ডেটা লগ করা। যেমন, কনসোল বা ফাইলের মধ্যে লগ লেখার জন্য।
  2. Authentication এবং Authorization:
    • ইউজারের অথেন্টিকেশন এবং অনুমোদন যাচাই করতে ব্যবহৃত হয়, যেমন Session-based বা Token-based অথেন্টিকেশন চেক করা।
  3. রেট লিমিটিং:
    • সার্ভারের উপর অতিরিক্ত লোড কমানোর জন্য রিকোয়েস্টের সংখ্যা সীমিত করা।
  4. ডেটা মডিফিকেশন:
    • রিকোয়েস্ট বা রেসপন্সের ডেটা পরিবর্তন বা ফিল্টার করা। যেমন, রেসপন্সে কাস্টম ডেটা যোগ করা বা কিছু তথ্য অপসারণ করা।

Spring MVC Interceptor এর সুবিধা

  1. কোডের পুনঃব্যবহারযোগ্যতা:
    • সাধারণ কার্যাবলী যেমন লগিং, অথেন্টিকেশন চেক ইত্যাদি বিভিন্ন কন্ট্রোলার বা রিকোয়েস্টে পুনঃব্যবহার করা যায়।
  2. লজিকের বিচ্ছিন্নতা:
    • কমপ্লেক্স লজিককে ইন্টারসেপ্টর দিয়ে পৃথক করে রাখা যায়, ফলে কন্ট্রোলার কোড পরিষ্কার এবং সংক্ষিপ্ত থাকে।
  3. সম্পূর্ণ রিকোয়েস্ট-রেসপন্স প্রক্রিয়া নিয়ন্ত্রণ:
    • ইন্টারসেপ্টরগুলি রিকোয়েস্ট এবং রেসপন্সের মধ্যবর্তী স্তরে কাজ করে, ফলে আপনি পুরো প্রক্রিয়ার উপর পূর্ণ নিয়ন্ত্রণ রাখতে পারেন।

উপসংহার

Spring MVC তে Interceptor একটি শক্তিশালী উপাদান যা আপনাকে HTTP রিকোয়েস্ট এবং রেসপন্সের উপর সম্পূর্ণ নিয়ন্ত্রণ প্রদান করে। এটি লগিং, অথেন্টিকেশন, রেট লিমিটিং, এবং ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। Interceptor এর মাধ্যমে আপনার অ্যাপ্লিকেশন আরও নিরাপদ, স্কেলেবল এবং ম্যানেজেবল হতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...