DispatcherServlet হল Spring MVC-এর একটি মূল উপাদান যা সমস্ত HTTP রিকোয়েস্ট প্রক্রেস করতে এবং রিকোয়েস্টের ভিত্তিতে সঠিক রেসপন্স পাঠাতে দায়িত্বপ্রাপ্ত। এটি একটি ফ্রন্ট কন্ট্রোলার (Front Controller) হিসেবে কাজ করে এবং ওয়েব অ্যাপ্লিকেশনের সমস্ত রিকোয়েস্ট এবং রেসপন্সের ট্রান্সপোর্ট এবং প্রক্রিয়াজাতকরণ নিয়ন্ত্রণ করে।
DispatcherServlet এর কাজের প্রক্রিয়া
Spring MVC অ্যাপ্লিকেশনে DispatcherServlet হল প্রথম স্থান যেখানে সব রিকোয়েস্ট আসে। DispatcherServlet সমস্ত কাজের জন্য দায়ী, যেমন কন্ট্রোলার চিহ্নিত করা, ভিউ রেন্ডার করা, মডেল ডেটা সেট করা, এবং অন্যান্য এক্সটেনশান হ্যান্ডলিং। DispatcherServlet-এর কাজের প্রক্রিয়া (Flow) নিম্নরূপ:
DispatcherServlet এর কাজের প্রক্রিয়া:
- Request Arrival (রিকোয়েস্ট আগমন)
- যখন কোনো HTTP রিকোয়েস্ট আসে (যেমন, ইউজার URL এ প্রবেশ করেন), তখন সেটি DispatcherServlet-এ চলে আসে। DispatcherServlet-ই ওয়েব অ্যাপ্লিকেশনের প্রথম পয়েন্ট।
HandlerMapping (Controller নির্বাচন)
- DispatcherServlet রিকোয়েস্ট পেয়ে HandlerMapping ব্যবহার করে সঠিক Controller এবং HandlerMethod খুঁজে বের করে। HandlerMapping DispatcherServlet কে জানায় কোন কন্ট্রোলার এবং মেথড রিকোয়েস্টটি হ্যান্ডল করবে।
- Spring MVC-তে অনেক ধরনের HandlerMapping আছে, যেমন
RequestMappingHandlerMapping,SimpleUrlHandlerMapping, ইত্যাদি।
উদাহরণ:
- একটি রিকোয়েস্ট যেমন
/greetকন্ট্রোলারেরgreet()মেথডের সাথে সম্পর্কিত হতে পারে।
Controller Execution (Controller এক্সিকিউশন)
- DispatcherServlet সঠিক কন্ট্রোলার নির্বাচন করার পর, এটি কন্ট্রোলারের মেথডে রিকোয়েস্ট পাঠায় এবং সেই মেথডটি এক্সিকিউট হয়।
- কন্ট্রোলার মেথডটি সাধারণত ডেটা (Model) প্রক্রিয়া করে এবং ভিউ (View) তৈরি করার জন্য রিটার্ন করে।
Controller Example:
@Controller public class HomeController { @GetMapping("/greet") public String greet(Model model) { model.addAttribute("message", "Hello, World!"); return "greet"; // Return view name (greet.jsp or greet.html) } }ViewResolver (ভিউ নির্বাচন)
- কন্ট্রোলার মেথড যখন একটি ভিউ রিটার্ন করে (যেমন
"greet"), DispatcherServlet ভিউ রেজলভার (ViewResolver) ব্যবহার করে সঠিক ভিউ সিলেক্ট করে। - ViewResolver কনফিগারেশন অনুযায়ী ভিউ ফাইল (যেমন
greet.jsp,greet.html,greet.ftl) সিলেক্ট করা হয় এবং DispatcherServlet এটি রেন্ডার করতে পাঠায়।
ViewResolver Example:
@Configuration public class WebConfig implements WebMvcConfigurer { @Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; } }- কন্ট্রোলার মেথড যখন একটি ভিউ রিটার্ন করে (যেমন
- Rendering the View (ভিউ রেন্ডারিং)
- DispatcherServlet ভিউ রিটার্ন করার পর, এটি রেন্ডার করার জন্য ভিউটিকে সঠিক রেসপন্সে পরিণত করে এবং ইউজারের ব্রাউজারে পাঠায়।
- View এ মডেল ডেটা (যেমন, "Hello, World!") থাকবে, যা ইউজারের কাছে প্রদর্শিত হবে।
- Response Delivery (রেসপন্স প্রেরণ)
- DispatcherServlet সর্বশেষে রেন্ডার করা ভিউ (যেমন HTML বা JSP) ইউজারের ব্রাউজারে পাঠিয়ে দেয়। এটি রেসপন্স অবজেক্টের মাধ্যমে ব্রাউজারকে HTTP রেসপন্স হিসেবে ফেরত আসে।
DispatcherServlet এর Working Process Flow (Diagram)
- User Request:
- Client sends an HTTP request (e.g.,
/greet).
- Client sends an HTTP request (e.g.,
- DispatcherServlet Receives Request:
- DispatcherServlet is the front controller. It intercepts all incoming requests.
- HandlerMapping:
- DispatcherServlet consults HandlerMapping to determine which controller and method will handle the request.
- Controller Method Execution:
- DispatcherServlet invokes the controller method that matches the request URL. The controller method processes the request and prepares a Model (data) to be displayed.
- ViewResolver:
- DispatcherServlet uses ViewResolver to select the appropriate view (e.g., JSP, Thymeleaf) based on the view name returned by the controller.
- View Rendering:
- The view is rendered, often by JSP or another view technology, and the model data is embedded into the view.
- Response Sent:
- Finally, DispatcherServlet sends the view (HTML, JSP) to the client (browser) as the HTTP response.
DispatcherServlet এর Advantages
- Centralized Request Handling: DispatcherServlet all incoming requests are handled centrally, making the system easy to configure and manage.
- Separation of Concerns: Spring MVC uses the Model-View-Controller (MVC) design pattern, ensuring a clean separation of concerns between the data, user interface, and control logic.
- Flexible View Configuration: It supports multiple view technologies (JSP, Thymeleaf, FreeMarker, etc.), making it flexible and adaptable.
- Easy Integration: DispatcherServlet integrates smoothly with other Spring components, like Spring Security, Spring Data, and Spring Boot.
- Decoupling Components: It decouples the request-processing logic, enabling easy modifications and maintainability.
Conclusion
In Spring MVC, the DispatcherServlet plays a crucial role as the central dispatcher that processes HTTP requests and controls the flow of the application. It handles incoming requests, directs them to appropriate controllers, resolves views, and sends the final response to the client. Its architecture allows for clean separation of concerns, flexibility in handling requests, and integration with various Spring components, making it a key component of the Spring MVC framework.
Read more