View Resolver হল Spring MVC-তে একটি গুরুত্বপূর্ণ উপাদান, যা ভিউ (UI) এর নাম গ্রহণ করে এবং উপযুক্ত ভিউ টেমপ্লেট (যেমন JSP, Thymeleaf, FreeMarker, বা Velocity) লোড করতে সহায়ক হয়। এটি Spring MVC অ্যাপ্লিকেশনে রিকোয়েস্ট এবং রেসপন্স সিস্টেমের মধ্যে যোগাযোগ স্থাপন করে, যেখানে কন্ট্রোলার রিকোয়েস্ট প্রক্রিয়া করে এবং ভিউ রিটার্ন করে।
View Resolver এর কাজ
- Mapping View Name to View Template:
- কন্ট্রোলার ভিউ নাম রিটার্ন করে (যেমন
"home"বা"welcome")। View Resolver সেই ভিউ নামের সাথে সম্পর্কিত View Template (যেমন JSP, Thymeleaf, বা অন্য কোনো টেমপ্লেট) লোড করতে সহায়ক হয়।
- কন্ট্রোলার ভিউ নাম রিটার্ন করে (যেমন
- View Rendering:
- View Resolver ভিউ টেমপ্লেট (JSP, Thymeleaf, ইত্যাদি) এবং মডেল ডেটা ব্যবহার করে ইউজারের জন্য HTML রেন্ডার করে এবং তারপরে সেই HTML রেসপন্স হিসেবে ফিরিয়ে দেয়।
- Internal and External View Resolvers:
- Spring MVC বিভিন্ন ধরণের ভিউ রিসলভার সমর্থন করে। সবচেয়ে সাধারণ InternalResourceViewResolver (JSP), ThymeleafViewResolver (Thymeleaf) ইত্যাদি।
View Resolver Types
InternalResourceViewResolver:
- এটি সাধারণত JSP টেমপ্লেট ব্যবহারের জন্য ব্যবহৃত হয়। এটি ভিউ টেমপ্লেটের prefix এবং suffix কনফিগার করে।
Example (JSP with InternalResourceViewResolver):
@Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); registry.viewResolver(resolver); } }- Prefix: ভিউ টেমপ্লেটের পথের শুরু অংশ (
/WEB-INF/views/). - Suffix: ভিউ টেমপ্লেটের শেষ অংশ (যেমন
.jspবা.html).
ThymeleafViewResolver:
- এটি Thymeleaf টেমপ্লেট ইঞ্জিনের জন্য ব্যবহৃত হয়, যা আধুনিক ওয়েব অ্যাপ্লিকেশনে জনপ্রিয়।
Example (Thymeleaf with ThymeleafViewResolver):
@Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(thymeleafTemplateEngine()); // Setup template engine registry.viewResolver(resolver); } @Bean public SpringTemplateEngine thymeleafTemplateEngine() { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(thymeleafTemplateResolver()); return templateEngine; } @Bean public ClassLoaderTemplateResolver thymeleafTemplateResolver() { ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver(); templateResolver.setPrefix("templates/"); // Prefix for template files templateResolver.setSuffix(".html"); // Suffix for template files templateResolver.setTemplateMode("HTML5"); return templateResolver; } }FreeMarkerViewResolver:
- FreeMarker টেমপ্লেট ইঞ্জিনের জন্য ব্যবহৃত।
Example (FreeMarkerViewResolver):
@Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { FreeMarkerViewResolver resolver = new FreeMarkerViewResolver(); resolver.setSuffix(".ftl"); resolver.setPrefix("/WEB-INF/views/"); registry.viewResolver(resolver); } }
View Resolver কিভাবে কাজ করে
- Controller রিকোয়েস্ট গ্রহণ করে এবং Model এবং View নাম (যেমন
"home") রিটার্ন করে। - DispatcherServlet View Resolver কে নির্দেশ দেয় যে, রিকোয়েস্টের জন্য উপযুক্ত ভিউ টেমপ্লেটটি কোথায় পাওয়া যাবে।
- View Resolver ভিউ নাম থেকে ভিউ টেমপ্লেট (যেমন
home.jspবাhome.html) লোড করে এবং তা Model ডেটার সাথে রেন্ডার করে। - DispatcherServlet HTML রেসপন্স ফিরিয়ে দেয়, যা ব্যবহারকারীকে দেখানো হয়।
View Resolver এর প্রয়োজনীয়তা
- Centralized View Management:
- View Resolver টেমপ্লেট ব্যবস্থাপনা সহজ করে, কারণ এটি কেবলমাত্র ভিউ নাম দিয়ে টেমপ্লেট ফাইল লোড করতে সাহায্য করে। এটি আপনার অ্যাপ্লিকেশনের view path এবং template suffix-এ পরিবর্তন করা সহজ করে।
- Separation of Concerns:
- Controller এবং View এর মধ্যে পরিষ্কার আলাদা করে, যেটি Separation of Concerns (SoC) ডিজাইন প্যাটার্নে সহায়ক। Controller শুধুমাত্র ডেটা প্রক্রিয়া করে এবং View Resolver যথাযথ ভিউ টেমপ্লেট প্রক্রিয়া করে।
- Flexible View Configuration:
- আপনি একাধিক ভিউ টেমপ্লেট ইঞ্জিন ব্যবহার করতে পারেন যেমন JSP, Thymeleaf, FreeMarker ইত্যাদি। View Resolver এই টেমপ্লেটগুলির মধ্যে স্বচ্ছভাবে স্যুইচ করতে সক্ষম।
- Dynamic View Resolution:
- এটি HTTP রিকোয়েস্টের উপর ভিত্তি করে ভিউ টেমপ্লেট নির্বাচন করতে সহায়ক, এবং কন্ট্রোলার থেকে বিভিন্ন ভিউ রিটার্ন করতে পারে।
Conclusion
Spring MVC-তে View Resolver হল একটি অপরিহার্য উপাদান যা কন্ট্রোলার থেকে প্রাপ্ত ভিউ নামের ভিত্তিতে সঠিক টেমপ্লেট লোড করতে সাহায্য করে। এটি Spring MVC অ্যাপ্লিকেশনকে নমনীয় এবং শক্তিশালী করে তোলে, যেখানে একাধিক ভিউ টেকনোলজি (JSP, Thymeleaf, FreeMarker) ব্যবহার করা সম্ভব এবং কোডের মধ্যে পরিষ্কার বিভাজন নিশ্চিত হয়।
Read more