DispatcherServlet হল Spring MVC ফ্রেমওয়ার্কের মূল কম্পোনেন্ট যা সমস্ত HTTP রিকোয়েস্ট এবং রেসপন্সকে প্রসেস এবং পরিচালনা করে। এটি front controller হিসেবে কাজ করে, যা Model-View-Controller (MVC) আর্কিটেকচার প্যাটার্নে রিকোয়েস্টগুলোকে সঠিক কন্ট্রোলার, ভিউ এবং মডেলের সাথে সম্পর্কিত করে।
DispatcherServlet এর কাজ:
DispatcherServlet একটি সেন্ট্রাল কন্ট্রোলার হিসেবে কাজ করে, যা সমস্ত রিকোয়েস্ট রিসিভ করে এবং সেগুলিকে উপযুক্ত কন্ট্রোলারে বিতরণ করে। এটি অ্যাপ্লিকেশনের সমস্ত প্রক্রিয়া সমন্বয় করে এবং ব্যবহৃত মডেল, ভিউ, এবং কন্ট্রোলারের মধ্যে সমন্বয় নিশ্চিত করে।
DispatcherServlet এর কাজের ধাপগুলো নিচে বিস্তারিত দেওয়া হলো:
DispatcherServlet এর কাজের ধাপগুলো:
- Request Handling:
- যখন একটি HTTP রিকোয়েস্ট আসবে, DispatcherServlet প্রথমে সেই রিকোয়েস্টটি গ্রহণ করে। এটি সমস্ত রিকোয়েস্টের প্রথম পয়েন্ট (entry point) হিসেবে কাজ করে।
- DispatcherServlet কনফিগারেশন অনুসারে রিকোয়েস্ট রিসিভ করবে এবং সঠিক কন্ট্রোলারে পাঠাবে।
- HandlerMapping (Request Mapping):
- DispatcherServlet রিকোয়েস্ট পেয়ে HandlerMapping চেক করে কোন কন্ট্রোলার সেই রিকোয়েস্টটি হ্যান্ডেল করবে। এটি কন্ট্রোলার মেথডে রিকোয়েস্টটি ম্যাপ করে (উদাহরণস্বরূপ,
@RequestMapping,@GetMappingইত্যাদি অ্যানোটেশন ব্যবহার করে)।
- DispatcherServlet রিকোয়েস্ট পেয়ে HandlerMapping চেক করে কোন কন্ট্রোলার সেই রিকোয়েস্টটি হ্যান্ডেল করবে। এটি কন্ট্রোলার মেথডে রিকোয়েস্টটি ম্যাপ করে (উদাহরণস্বরূপ,
- Handler Execution:
- HandlerMapping এর মাধ্যমে DispatcherServlet সঠিক কন্ট্রোলার এবং তার মেথডে রিকোয়েস্ট পাঠিয়ে দেয়। কন্ট্রোলার সেই রিকোয়েস্ট প্রক্রিয়া করবে এবং মডেল অবজেক্ট তৈরি করবে। কন্ট্রোলার মেথড একটি ভিউ বা রেসপন্স প্রদান করবে।
- ViewResolver:
- DispatcherServlet কন্ট্রোলার থেকে রিটার্ন হওয়া ভিউ নামটি ViewResolver এর মাধ্যমে যাচাই করে, এবং সঠিক ভিউ টেমপ্লেটটি নির্বাচন করা হয় (যেমন, JSP, Thymeleaf, ফ্রি মার্কার, ইত্যাদি)।
- Response Generation:
- DispatcherServlet ভিউ থেকে ডেটা রেন্ডার করে এবং HTTP রেসপন্সে সেটি ব্যবহারকারীর ব্রাউজারে পাঠিয়ে দেয়।
- Exception Handling:
- DispatcherServlet প্রক্রিয়ার মধ্যে যদি কোনো এক্সেপশন ঘটে, তাহলে এটি HandlerExceptionResolver ব্যবহারের মাধ্যমে সেই এক্সেপশনটি হ্যান্ডেল করে।
DispatcherServlet এর প্রধান ভূমিকা:
- রুট রিকোয়েস্ট ম্যানেজমেন্ট:
- DispatcherServlet Spring MVC অ্যাপ্লিকেশনের জন্য রুট রিকোয়েস্ট এবং রেসপন্স পরিচালনা করে।
- Request Dispatching:
- DispatcherServlet বিভিন্ন রিকোয়েস্ট হ্যান্ডলিং কন্ট্রোলারের সাথে রিকোয়েস্টগুলোকে পাঠায়। এটি কন্ট্রোলার এবং মডেল ভিউের মধ্যে যোগাযোগ স্থাপন করে।
- Model and View Integration:
- এটি কন্ট্রোলার থেকে মডেল এবং ভিউ অবজেক্ট গ্রহণ করে এবং ভিউ টেমপ্লেটে মডেল ডেটা রেন্ডার করে।
- Exception Handling:
- DispatcherServlet অ্যাপ্লিকেশন মধ্যে ঘটে যাওয়া এক্সেপশনগুলো (যেমন 404, 500 ইত্যাদি) সঠিকভাবে হ্যান্ডেল করে।
- Dispatcher Servlet এর Initialization:
- web.xml বা Java-based কনফিগারেশনে DispatcherServlet কনফিগার করা হয় যা Spring MVC ফ্রেমওয়ার্কের প্রাথমিক কনফিগারেশন সেটআপ হয়।
DispatcherServlet এর কনফিগারেশন উদাহরণ:
web.xml ফাইলে DispatcherServlet কনফিগারেশন:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- DispatcherServlet configuration -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
- এখানে DispatcherServlet এর জন্য সার্ভলেট কনফিগার করা হয়েছে, যা সমস্ত HTTP রিকোয়েস্ট রিসিভ করবে এবং তা সঠিক কন্ট্রোলারে পাঠাবে।
Spring MVC Configuration (Java Config):
Spring 3.x থেকে Java-based configuration এর মাধ্যমে DispatcherServlet কনফিগার করা যায়।
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
এখানে:
- @EnableWebMvc: Spring MVC সক্রিয় করার জন্য।
- viewResolver: HTML বা JSP ফাইলগুলি রেন্ডার করার জন্য ViewResolver কনফিগারেশন।
DispatcherServlet এর স্টেপ বাই স্টেপ কার্যক্রম:
- HTTP Request আসবে:
- DispatcherServlet প্রথমে রিকোয়েস্ট গ্রহণ করে।
- Handler Mapping:
- DispatcherServlet রিকোয়েস্টের জন্য সঠিক কন্ট্রোলার এবং মেথড চয়ন করে (Handler Mapping)।
- Controller Execution:
- DispatcherServlet কন্ট্রোলারে রিকোয়েস্ট পাঠিয়ে সেই রিকোয়েস্ট প্রক্রিয়া করতে বলে। কন্ট্রোলার মডেল এবং ভিউ রিটার্ন করে।
- View Resolution:
- DispatcherServlet কন্ট্রোলার থেকে ভিউ নামটি গ্রহণ করে এবং ViewResolver ব্যবহার করে সঠিক ভিউ টেমপ্লেট খুঁজে বের করে।
- Response Creation:
- DispatcherServlet ভিউ থেকে রেসপন্স রেন্ডার করে এবং ব্যবহারকারীর ব্রাউজারে রিটার্ন করে।
DispatcherServlet এর সুবিধা:
- Centralized Request Handling: DispatcherServlet Spring MVC অ্যাপ্লিকেশনগুলির জন্য রিকোয়েস্ট এবং রেসপন্সের একটি কেন্দ্রীয় পয়েন্ট হিসেবে কাজ করে।
- Separation of Concerns: DispatcherServlet মডেল, ভিউ, এবং কন্ট্রোলারের মধ্যে দায়িত্ব ভাগ করে দেয়, যার ফলে অ্যাপ্লিকেশনটি আরও নমনীয় এবং রক্ষণাবেক্ষণযোগ্য হয়।
- Easy Integration: DispatcherServlet অন্যান্য Spring মডিউল (যেমন Spring Security, Spring Data) এর সাথে সহজে একত্রিত হতে পারে।
- Flexible Configuration: DispatcherServlet কনফিগারেশন XML বা Java config এর মাধ্যমে কাস্টমাইজ করা যেতে পারে।
- Exception Handling: DispatcherServlet অ্যাপ্লিকেশনের মধ্যে কোনো এক্সেপশন ঘটলে তা সঠিকভাবে হ্যান্ডেল করতে পারে।
Conclusion:
DispatcherServlet হল Spring MVC ফ্রেমওয়ার্কের সবচেয়ে গুরুত্বপূর্ণ উপাদান, যা সমস্ত HTTP রিকোয়েস্ট হ্যান্ডলিং এবং প্রক্রিয়া পরিচালনা করে। এটি front controller হিসেবে কাজ করে এবং মডেল, ভিউ, এবং কন্ট্রোলারগুলির মধ্যে সমন্বয় প্রতিষ্ঠা করে। DispatcherServlet এর মাধ্যমে Spring MVC অ্যাপ্লিকেশনের কার্যক্ষমতা, ফ্লেক্সিবিলিটি, এবং স্কেলেবিলিটি উন্নত হয়।
Read more