View Resolver

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

355

View Resolver Spring MVC এর একটি অত্যন্ত গুরুত্বপূর্ণ কম্পোনেন্ট যা কন্ট্রোলার থেকে প্রাপ্ত ভিউ নামের ভিত্তিতে সংশ্লিষ্ট ভিউ টেমপ্লেট (JSP, Thymeleaf, FreeMarker, ইত্যাদি) নির্বাচন করে এবং রেন্ডার করে। এটি কন্ট্রোলার থেকে রিটার্ন করা ভিউ নাম অনুযায়ী ভিউ টেমপ্লেট রেজলভ করে, যাতে ইউজারের কাছে সঠিক UI (User Interface) উপস্থাপন করা যায়।

View Resolver এর ভূমিকা:

  1. কন্ট্রোলারের ভিউ রিটার্ন: কন্ট্রোলার একটি ভিউ নাম রিটার্ন করে, যা ভিউ টেমপ্লেটের সাথে সম্পর্কিত।
  2. ভিউ রেজলভ করা: View Resolver কন্ট্রোলার থেকে প্রাপ্ত ভিউ নামের ভিত্তিতে সঠিক ভিউ টেমপ্লেট নির্বাচন করে।
  3. ভিউ রেন্ডারিং: ভিউ টেমপ্লেটের ডেটা (মডেল) যুক্ত করে, এটি ইউজারকে রেসপন্স পাঠায়।

Spring MVC এ View Resolver কনফিগার করতে InternalResourceViewResolver (JSP ভিত্তিক), ThymeleafViewResolver, FreeMarkerViewResolver ইত্যাদি ব্যবহার করা হয়।


Spring MVC View Resolver এর কনফিগারেশন

1. InternalResourceViewResolver (JSP ভিত্তিক ভিউ)

InternalResourceViewResolver ব্যবহার করা হয় JSP ফাইলগুলির জন্য ভিউ রেজলভ করতে।

Java Config এর মাধ্যমে InternalResourceViewResolver কনফিগারেশন:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
public class WebConfig {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/"); // JSP ফাইলগুলির লোকেশন
        resolver.setSuffix(".jsp"); // ফাইলের এক্সটেনশন
        return resolver;
    }
}

এখানে:

  • Prefix: এটি ভিউ ফাইলের অবস্থান নির্দেশ করে। উদাহরণস্বরূপ, JSP ফাইলগুলি /WEB-INF/views/ ফোল্ডারে থাকবে।
  • Suffix: এটি ভিউ ফাইলের এক্সটেনশন নির্দেশ করে। এখানে .jsp ফাইল টাইপ ব্যবহার করা হয়েছে।
XML Config এর মাধ্যমে InternalResourceViewResolver কনফিগারেশন:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

এখানে prefix এবং suffix সমন্বয়ে Spring MVC ভিউ টেমপ্লেট খুঁজে পায়।


2. ThymeleafViewResolver (Thymeleaf ভিত্তিক ভিউ)

Thymeleaf একটি শক্তিশালী, Java-ভিত্তিক টেমপ্লেট ইঞ্জিন, যা Spring MVC এর জন্য খুবই জনপ্রিয়। ThymeleafViewResolver ব্যবহার করে Thymeleaf টেমপ্লেট রেন্ডার করা যায়।

Java Config এর মাধ্যমে ThymeleafViewResolver কনফিগারেশন:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.ThymeleafViewResolver;
import org.springframework.web.servlet.view.UrlBasedViewResolver;
import org.thymeleaf.spring5.view.ThymeleafView;

@Configuration
@EnableWebMvc
public class WebConfig {

    @Bean
    public ThymeleafViewResolver viewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setPrefix("/WEB-INF/templates/"); // Thymeleaf ফাইলের লোকেশন
        resolver.setSuffix(".html"); // ফাইলের এক্সটেনশন
        resolver.setViewClass(ThymeleafView.class); // ক্লাসের নাম
        return resolver;
    }
}

এখানে:

  • Prefix: /WEB-INF/templates/—এটি আপনার Thymeleaf টেমপ্লেট ফাইলগুলির অবস্থান।
  • Suffix: .html—এটি ফাইল এক্সটেনশন যা সাধারণত Thymeleaf টেমপ্লেটের জন্য ব্যবহৃত হয়।
XML Config এর মাধ্যমে ThymeleafViewResolver কনফিগারেশন:
<bean class="org.springframework.web.servlet.view.ThymeleafViewResolver">
    <property name="prefix" value="/WEB-INF/templates/" />
    <property name="suffix" value=".html" />
</bean>

এখানে prefix এবং suffix দ্বারা Spring MVC কে নির্দেশ দেয় কোথায় Thymeleaf টেমপ্লেট ফাইলগুলি খুঁজে পাবে।


3. FreeMarkerViewResolver (FreeMarker ভিত্তিক ভিউ)

FreeMarker একটি আরেকটি জনপ্রিয় Java টেমপ্লেট ইঞ্জিন। Spring MVC এর সাথে এটি ব্যবহার করতে FreeMarkerViewResolver কনফিগার করা হয়।

Java Config এর মাধ্যমে FreeMarkerViewResolver কনফিগারেশন:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

@Configuration
@EnableWebMvc
public class WebConfig {

    @Bean
    public FreeMarkerViewResolver viewResolver() {
        FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
        resolver.setPrefix("/WEB-INF/views/"); // FreeMarker ফাইলের লোকেশন
        resolver.setSuffix(".ftl"); // ফাইল এক্সটেনশন
        return resolver;
    }

    @Bean
    public FreeMarkerConfigurer freemarkerConfigurer() {
        FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
        configurer.setTemplateLoaderPath("/WEB-INF/views/");
        return configurer;
    }
}

এখানে:

  • Prefix: /WEB-INF/views/—এটি FreeMarker টেমপ্লেট ফাইলের লোকেশন।
  • Suffix: .ftl—এটি ফাইল এক্সটেনশন যা FreeMarker টেমপ্লেটের জন্য ব্যবহৃত হয়।
XML Config এর মাধ্যমে FreeMarkerViewResolver কনফিগারেশন:
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".ftl" />
</bean>

View Resolver এর মাধ্যমে ভিউ রেন্ডারিং

  1. Request Handling: কন্ট্রোলার ইউজারের রিকোয়েস্ট গ্রহণ করে এবং উপযুক্ত মডেল ডেটা তৈরি করে।
  2. View Resolution: কন্ট্রোলার থেকে প্রাপ্ত ভিউ নামের উপর ভিত্তি করে ভিউ রেজলভার সঠিক ভিউ টেমপ্লেট নির্বাচন করে (JSP, Thymeleaf, FreeMarker ইত্যাদি)।
  3. Rendering View: নির্বাচিত ভিউ টেমপ্লেটের সাথে মডেল ডেটা একত্রিত করে এবং ইউজারের কাছে রেসপন্স পাঠানো হয়।

View Resolver কনফিগারেশনের Best Practices

  1. Separation of Concerns: Controller শুধুমাত্র বিজনেস লজিক এবং রিকোয়েস্ট প্রক্রিয়াকরণের দায়িত্বে থাকে। View Resolver কেবলমাত্র ভিউ নির্বাচন এবং রেন্ডারিংয়ের দায়িত্বে থাকে।
  2. Use of Template Engines: যদি JSP ব্যবহার করতে না চান, তবে Thymeleaf বা FreeMarker এর মতো আধুনিক টেমপ্লেট ইঞ্জিন ব্যবহার করা উচিৎ, যা আরও নমনীয় এবং শক্তিশালী।
  3. Error Handling: ভুল ভিউ নামের ক্ষেত্রে সঠিক এরর হ্যান্ডলিং কনফিগার করুন, যাতে Spring MVC স্পষ্ট বার্তা প্রদান করতে পারে।
  4. Custom View Resolver: প্রয়োজন হলে নিজস্ব কাস্টম ভিউ রেজলভার তৈরি করুন, যাতে বিশেষ ধরণের ভিউ টেমপ্লেট হ্যান্ডলিংয়ের সুযোগ থাকে।

উপসংহার

View Resolver Spring MVC তে কন্ট্রোলার থেকে রিটার্ন করা ভিউ নামের ভিত্তিতে সঠিক ভিউ টেমপ্লেট রেজলভ করে। এটি JSP, Thymeleaf, FreeMarker ইত্যাদি ভিউ টেকনোলজি সাপোর্ট করে এবং Spring MVC অ্যাপ্লিকেশনের ভিউ রেন্ডারিং প্রক্রিয়াকে খুবই নমনীয় এবং কাস্টমাইজযোগ্য করে তোলে। View Resolver সঠিকভাবে কনফিগার করা থাকলে ওয়েব অ্যাপ্লিকেশন সহজেই স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য হয়।

Content added By

View Resolver হল Spring MVC-তে একটি গুরুত্বপূর্ণ উপাদান, যা ভিউ (UI) এর নাম গ্রহণ করে এবং উপযুক্ত ভিউ টেমপ্লেট (যেমন JSP, Thymeleaf, FreeMarker, বা Velocity) লোড করতে সহায়ক হয়। এটি Spring MVC অ্যাপ্লিকেশনে রিকোয়েস্ট এবং রেসপন্স সিস্টেমের মধ্যে যোগাযোগ স্থাপন করে, যেখানে কন্ট্রোলার রিকোয়েস্ট প্রক্রিয়া করে এবং ভিউ রিটার্ন করে।

View Resolver এর কাজ

  1. Mapping View Name to View Template:
    • কন্ট্রোলার ভিউ নাম রিটার্ন করে (যেমন "home" বা "welcome")। View Resolver সেই ভিউ নামের সাথে সম্পর্কিত View Template (যেমন JSP, Thymeleaf, বা অন্য কোনো টেমপ্লেট) লোড করতে সহায়ক হয়।
  2. View Rendering:
    • View Resolver ভিউ টেমপ্লেট (JSP, Thymeleaf, ইত্যাদি) এবং মডেল ডেটা ব্যবহার করে ইউজারের জন্য HTML রেন্ডার করে এবং তারপরে সেই HTML রেসপন্স হিসেবে ফিরিয়ে দেয়।
  3. Internal and External View Resolvers:
    • Spring MVC বিভিন্ন ধরণের ভিউ রিসলভার সমর্থন করে। সবচেয়ে সাধারণ InternalResourceViewResolver (JSP), ThymeleafViewResolver (Thymeleaf) ইত্যাদি।

View Resolver Types

  1. 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).
  2. 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;
        }
    }
    
  3. 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 কিভাবে কাজ করে

  1. Controller রিকোয়েস্ট গ্রহণ করে এবং Model এবং View নাম (যেমন "home") রিটার্ন করে।
  2. DispatcherServlet View Resolver কে নির্দেশ দেয় যে, রিকোয়েস্টের জন্য উপযুক্ত ভিউ টেমপ্লেটটি কোথায় পাওয়া যাবে।
  3. View Resolver ভিউ নাম থেকে ভিউ টেমপ্লেট (যেমন home.jsp বা home.html) লোড করে এবং তা Model ডেটার সাথে রেন্ডার করে।
  4. DispatcherServlet HTML রেসপন্স ফিরিয়ে দেয়, যা ব্যবহারকারীকে দেখানো হয়।

View Resolver এর প্রয়োজনীয়তা

  1. Centralized View Management:
    • View Resolver টেমপ্লেট ব্যবস্থাপনা সহজ করে, কারণ এটি কেবলমাত্র ভিউ নাম দিয়ে টেমপ্লেট ফাইল লোড করতে সাহায্য করে। এটি আপনার অ্যাপ্লিকেশনের view path এবং template suffix-এ পরিবর্তন করা সহজ করে।
  2. Separation of Concerns:
    • Controller এবং View এর মধ্যে পরিষ্কার আলাদা করে, যেটি Separation of Concerns (SoC) ডিজাইন প্যাটার্নে সহায়ক। Controller শুধুমাত্র ডেটা প্রক্রিয়া করে এবং View Resolver যথাযথ ভিউ টেমপ্লেট প্রক্রিয়া করে।
  3. Flexible View Configuration:
    • আপনি একাধিক ভিউ টেমপ্লেট ইঞ্জিন ব্যবহার করতে পারেন যেমন JSP, Thymeleaf, FreeMarker ইত্যাদি। View Resolver এই টেমপ্লেটগুলির মধ্যে স্বচ্ছভাবে স্যুইচ করতে সক্ষম।
  4. Dynamic View Resolution:
    • এটি HTTP রিকোয়েস্টের উপর ভিত্তি করে ভিউ টেমপ্লেট নির্বাচন করতে সহায়ক, এবং কন্ট্রোলার থেকে বিভিন্ন ভিউ রিটার্ন করতে পারে।

Conclusion

Spring MVC-তে View Resolver হল একটি অপরিহার্য উপাদান যা কন্ট্রোলার থেকে প্রাপ্ত ভিউ নামের ভিত্তিতে সঠিক টেমপ্লেট লোড করতে সাহায্য করে। এটি Spring MVC অ্যাপ্লিকেশনকে নমনীয় এবং শক্তিশালী করে তোলে, যেখানে একাধিক ভিউ টেকনোলজি (JSP, Thymeleaf, FreeMarker) ব্যবহার করা সম্ভব এবং কোডের মধ্যে পরিষ্কার বিভাজন নিশ্চিত হয়।

Content added By

Spring MVC তে InternalResourceViewResolver একটি View Resolver যা JSP ফাইল বা অন্যান্য ভিউ টেমপ্লেট থেকে রিকোয়েস্ট রেসপন্স তৈরি করার জন্য ব্যবহৃত হয়। এটি Spring MVC অ্যাপ্লিকেশনকে নির্দিষ্ট ভিউ ফাইল (যেমন JSP) রিটার্ন করার জন্য কনফিগার করা হয়। View Resolver একটি Spring MVC কনফিগারেশন উপাদান যা রিকোয়েস্টের জন্য উপযুক্ত ভিউ নির্বাচন করতে সাহায্য করে।

InternalResourceViewResolver মূলত JSP এবং Servlet-based views পরিচালনা করতে ব্যবহৃত হয়, যা সার্ভার সাইড রেন্ডারিংয়ের জন্য কার্যকরী। এটি Spring MVC অ্যাপ্লিকেশন থেকে HTML, JSP বা অন্যান্য ভিউ টেমপ্লেট সিস্টেমে রিকোয়েস্ট রাউট করার জন্য ব্যবহৃত হয়।

InternalResourceViewResolver এর কাজ:

  • View Selection: InternalResourceViewResolver রিকোয়েস্টের জন্য নির্দিষ্ট ভিউ নির্বাচন করে। উদাহরণস্বরূপ, একটি home.jsp ভিউ ফাইল রিটার্ন করা হতে পারে।
  • Prefix and Suffix Configuration: এটি ভিউ ফাইলের prefix এবং suffix কনফিগার করতে ব্যবহৃত হয়, যার মাধ্যমে রিকোয়েস্ট অনুযায়ী সঠিক ভিউ ফাইল নির্ধারণ করা হয়।
  • Servlet-based Views: এটি সার্ভার সাইড টেমপ্লেট (যেমন JSP) ব্যবহার করার জন্য উপযুক্ত।

InternalResourceViewResolver কনফিগারেশন:

Spring MVC অ্যাপ্লিকেশনে InternalResourceViewResolver কনফিগার করার জন্য এটি সাধারণত @Configuration ক্লাসে অথবা XML কনফিগারেশন ফাইলে করা হয়।

1. Java Config ব্যবহার করে InternalResourceViewResolver কনফিগারেশন:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/"); // JSP ফাইলের লোকেশন
        resolver.setSuffix(".jsp"); // ফাইলের এক্সটেনশন
        return resolver;
    }
}

এখানে:

  • setPrefix("/WEB-INF/views/"): JSP ফাইলগুলো কোথায় অবস্থিত হবে তা নির্দেশ করছে। সাধারণত /WEB-INF/views/ ডিরেক্টরিতে রাখার প্রথা রয়েছে।
  • setSuffix(".jsp"): ভিউ ফাইলের এক্সটেনশন নির্ধারণ করা হচ্ছে (এখানে .jsp)।

Spring MVC তখন /home রিকোয়েস্টের জন্য /WEB-INF/views/home.jsp ভিউ রিটার্ন করবে।

2. XML কনফিগারেশন ব্যবহার করে InternalResourceViewResolver কনফিগারেশন:

XML কনফিগারেশনে InternalResourceViewResolver কনফিগার করা যেতে পারে:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

এখানে, prefix এবং suffix প্রপার্টি দ্বারা JSP ফাইলের লোকেশন এবং এক্সটেনশন সেট করা হয়েছে।


InternalResourceViewResolver এর প্রধান সুবিধা:

  1. জিপি ফাইল রেন্ডারিং:
    • InternalResourceViewResolver প্রধানত JSP ফাইল রেন্ডার করতে ব্যবহৃত হয়, যা সার্ভার সাইডের ভিউ হিসেবে কাজ করে।
  2. ক্লিন কনফিগারেশন:
    • এটি খুবই সহজ এবং পরিষ্কার কনফিগারেশন প্রক্রিয়া সরবরাহ করে, যাতে ডেভেলপাররা খুব দ্রুত ভিউ ফাইল ম্যানেজ করতে পারে।
  3. Prefix এবং Suffix Configuration:
    • ডিরেক্টরি লোকেশন এবং এক্সটেনশন কনফিগার করার মাধ্যমে ডেভেলপাররা নির্দিষ্ট ভিউ ফাইল অনুসন্ধান করতে পারদর্শী হয়।
  4. Servlet-based Views:
    • এটি JSP এবং অন্যান্য সার্ভার সাইড টেমপ্লেট ইঞ্জিনের জন্য সুবিধাজনক, যেহেতু InternalResourceViewResolver কেবলমাত্র Servlet-based views রেন্ডার করতে সক্ষম।

InternalResourceViewResolver এর Limitations:

  • Server-side rendering: এটি শুধুমাত্র server-side rendering টেমপ্লেটের জন্য কাজ করে, যেমন JSP
  • Client-side rendering support: এই রিসলভারটি client-side rendering ফ্রেমওয়ার্ক যেমন Angular, React, বা Vue এর জন্য উপযুক্ত নয়। এসব ফ্রেমওয়ার্ক ক্লায়েন্টে রেন্ডারিং হয় এবং Spring MVC-র জন্য View Resolver প্রয়োজনীয় নয়।

উপসংহার:

InternalResourceViewResolver Spring MVC-তে ভিউ রেন্ডারিংয়ের জন্য একটি শক্তিশালী এবং সহজ কনফিগারেশন পদ্ধতি সরবরাহ করে, যা সার্ভার সাইড টেমপ্লেট যেমন JSP ব্যবহারের জন্য আদর্শ। এটি ভিউ ফাইলের লোকেশন এবং এক্সটেনশন সহজভাবে কনফিগার করার সুবিধা দেয়। Spring MVC অ্যাপ্লিকেশনে এটি একটি সাধারণ, কার্যকরী উপায় হিসেবে ব্যবহার করা হয়, বিশেষত যখন JSP ভিউ টেমপ্লেট ব্যবহৃত হয়।

Content added By

View Resolver হল Spring MVC-র একটি গুরুত্বপূর্ণ উপাদান যা কন্ট্রোলার থেকে প্রাপ্ত মডেল ডেটা ভিউ (JSP, Thymeleaf, ইত্যাদি) এর মাধ্যমে রেন্ডার করতে সাহায্য করে। এটি একটি URL বা ভিউ নামের সাথে সম্পর্কিত ভিউ টেমপ্লেট নির্বাচন করতে ব্যবহৃত হয়। View Resolver কনফিগারেশন করার মাধ্যমে, আপনি Spring MVC অ্যাপ্লিকেশনে JSP বা Thymeleaf এর মতো ভিউ টেমপ্লেট সিস্টেম ব্যবহার করতে পারেন।

1. JSP (JavaServer Pages) এর সাথে View Resolver কনফিগারেশন

JSP হল Java-based টেমপ্লেট ইঞ্জিন যা ডাইনামিক HTML পেজ তৈরি করতে ব্যবহৃত হয়। Spring MVC-তে JSP ব্যবহার করতে, আপনাকে InternalResourceViewResolver কনফিগার করতে হবে।

pom.xml - JSP-এর জন্য ডিপেনডেন্সি

Spring Boot-এ JSP ব্যবহারের জন্য এই ডিপেনডেন্সি প্রয়োজন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

application.properties - JSP কনফিগারেশন

Spring Boot অ্যাপ্লিকেশনে application.properties বা application.yml ফাইলে JSP কনফিগারেশন করতে হবে:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

এই কনফিগারেশনটি Spring MVC-কে বলে যে JSP ফাইলগুলো /WEB-INF/jsp/ ডিরেক্টরিতে থাকবে এবং .jsp এক্সটেনশন থাকবে।

WebConfig.java - JSP এর জন্য View Resolver কনফিগারেশন

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
public class WebConfig {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");  // View এর প্রিফিক্স ডিরেক্টরি
        resolver.setSuffix(".jsp");          // View এর সাফিক্স, এখানে .jsp ফাইল
        return resolver;
    }
}

এখানে, InternalResourceViewResolver কনফিগারেশন Spring MVC-কে বলে দেয় কিভাবে JSP পেজগুলি খুঁজে পাওয়া যাবে।

Controller Example for JSP

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home(Model model) {
        model.addAttribute("message", "Welcome to Spring MVC with JSP!");
        return "home"; // This maps to /WEB-INF/jsp/home.jsp
    }
}

home.jsp (JSP View)

<!DOCTYPE html>
<html>
<head>
    <title>Spring MVC JSP Example</title>
</head>
<body>
    <h2>${message}</h2>
</body>
</html>

2. Thymeleaf এর সাথে View Resolver কনফিগারেশন

Thymeleaf একটি আধুনিক এবং শক্তিশালী টেমপ্লেট ইঞ্জিন যা Spring Framework-এর সাথে খুব ভালো কাজ করে। এটি HTML, XML, JavaScript, এবং Text ফাইলের জন্য ব্যবহার করা যেতে পারে। Spring Boot প্রকল্পে Thymeleaf সাধারণত ডিফল্টভাবে কনফিগার করা থাকে, তবে আপনি View Resolver কনফিগার করতে পারেন যদি আপনি কাস্টম কনফিগারেশন করতে চান।

pom.xml - Thymeleaf ডিপেনডেন্সি

Thymeleaf ডিপেনডেন্সি Spring Boot অ্যাপ্লিকেশনে সাধারণত অন্তর্ভুক্ত থাকে, কিন্তু যদি না থাকে তবে এই ডিপেনডেন্সিটি যোগ করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

application.properties - Thymeleaf কনফিগারেশন

Spring Boot দ্বারা Thymeleaf কনফিগারেশন সাধারণত স্বয়ংক্রিয়ভাবে পরিচালিত হয়, তবে আপনি application.properties ফাইলে ভিউ পাথ কনফিগার করতে পারেন:

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML
spring.thymeleaf.encoding=UTF-8

এখানে, prefix নির্দেশ করে যে আপনার Thymeleaf টেমপ্লেটগুলি src/main/resources/templates/ ডিরেক্টরিতে থাকবে এবং .html এক্সটেনশন হবে।

WebConfig.java - Thymeleaf কনফিগারেশন (Optional)

Spring Boot সাধারণত Thymeleaf কে ডিফল্ট হিসেবে কনফিগার করে, তবে আপনি যদি কাস্টম কনফিগারেশন চান, তাহলে নিচের মতো কনফিগারেশন করতে পারেন:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.thymeleaf.ThymeleafViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
public class WebConfig {

    @Bean
    public ThymeleafViewResolver thymeleafViewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setPrefix("/templates/");  // View এর প্রিফিক্স ডিরেক্টরি
        resolver.setSuffix(".html");        // View এর সাফিক্স, এখানে .html ফাইল
        return resolver;
    }
}

Controller Example for Thymeleaf

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home(Model model) {
        model.addAttribute("message", "Welcome to Spring MVC with Thymeleaf!");
        return "home"; // This maps to /templates/home.html
    }
}

home.html (Thymeleaf View)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Spring MVC Thymeleaf Example</title>
</head>
<body>
    <h2 th:text="${message}"></h2>
</body>
</html>

3. Spring Boot-এ Default View Resolver

Spring Boot দ্বারা Thymeleaf এর জন্য স্বয়ংক্রিয়ভাবে View Resolver কনফিগার করা হয়, যার মাধ্যমে আপনাকে কাস্টম কনফিগারেশন করার দরকার নেই যদি আপনি ডিফল্ট কনফিগারেশন ব্যবহার করতে চান।

Spring Boot যেভাবে কাজ করে:

  • Thymeleaf টেমপ্লেটগুলি src/main/resources/templates/ ডিরেক্টরিতে রাখতে হবে।
  • application.properties ফাইলের মাধ্যমে ফাইলের prefix এবং suffix কনফিগার করা যাবে।

উপসংহার

View Resolver Spring MVC এবং Spring Boot অ্যাপ্লিকেশনে ভিউ টেমপ্লেট নির্বাচনে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। JSP এবং Thymeleaf দুটি জনপ্রিয় ভিউ টেমপ্লেট ইঞ্জিন, এবং এগুলির সাথে View Resolver কনফিগারেশন ব্যবহার করে Spring MVC অ্যাপ্লিকেশন তৈরি করা যায়।

  • JSP: Java-based টেমপ্লেট ইঞ্জিন, যা InternalResourceViewResolver এর মাধ্যমে কনফিগার করা হয়।
  • Thymeleaf: আধুনিক এবং শক্তিশালী টেমপ্লেট ইঞ্জিন, Spring Boot-এ ডিফল্টভাবে কনফিগার করা হয় এবং ThymeleafViewResolver ব্যবহার করে কাস্টমাইজ করা যায়।

আপনার প্রজেক্টের চাহিদা অনুযায়ী যেকোনো একটি ভিউ টেমপ্লেট ইঞ্জিন ব্যবহার করতে পারেন এবং View Resolver কনফিগারেশন মাধ্যমে তা পরিচালনা করতে পারেন।

Content added By

View Resolver হল Spring MVC এর একটি গুরুত্বপূর্ণ উপাদান যা ভিউ (যেমন JSP, Thymeleaf, FreeMarker) ফাইলের লোকেশন সমাধান করে। এটি কন্ট্রোলারের রিটার্ন করা ভিউ নাম অনুযায়ী সংশ্লিষ্ট ভিউ ফাইল (যেমন home.jsp) লোড করে এবং ব্যবহারকারীকে প্রদর্শন করে।

Spring MVC তে সাধারণত InternalResourceViewResolver এবং BeanNameViewResolver ব্যবহার করা হয় ভিউ রিজলভ করতে।

এখানে আমরা InternalResourceViewResolver এর ব্যবহার নিয়ে আলোচনা করব, যা JSP ফাইল রিজলভ করার জন্য সবচেয়ে বেশি ব্যবহৃত হয়।


View Resolver কনফিগারেশন (Java-based)

Step 1: Maven ডিপেনডেন্সি

Spring MVC প্রজেক্টে spring-webmvc ডিপেনডেন্সি ব্যবহার করা হয়। pom.xml-এ নিচের ডিপেনডেন্সি যুক্ত করুন:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.18</version> <!-- আপনার Spring ভার্সন অনুসারে নির্বাচন করুন -->
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.18</version>
    </dependency>
    <!-- অন্যান্য প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন -->
</dependencies>

Step 2: View Resolver কনফিগারেশন

Spring MVC-তে ViewResolver কনফিগার করার জন্য InternalResourceViewResolver ব্যবহার করা হয়। এর মাধ্যমে আপনি ভিউ ফাইলের লোকেশন (যেমন /WEB-INF/views/) এবং এক্সটেনশন (যেমন .jsp) নির্ধারণ করতে পারেন।

WebConfig.java (ViewResolver কনফিগারেশন):

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");  // View ফোল্ডারের লোকেশন
        resolver.setSuffix(".jsp");  // View ফাইলের এক্সটেনশন
        registry.viewResolver(resolver);  // View Resolver রেজিস্টার করা
    }
}
ব্যাখ্যা:
  • setPrefix("/WEB-INF/views/"): এই কনফিগারেশনটি নির্দিষ্ট করে যে, ভিউ ফাইলগুলি /WEB-INF/views/ ফোল্ডারে থাকবে।
  • setSuffix(".jsp"): এটি নির্দিষ্ট করে যে ভিউ ফাইলের এক্সটেনশন .jsp হবে।
  • registry.viewResolver(resolver): এটি InternalResourceViewResolver কে Spring MVC এর ViewResolver হিসেবে রেজিস্টার করে।

Step 3: Controller তৈরি

Spring MVC তে কন্ট্রোলার তৈরি করতে @Controller অ্যানোটেশন ব্যবহার করা হয়। কন্ট্রোলারটি HTTP রিকোয়েস্ট গ্রহণ করে এবং একটি ভিউ রিটার্ন করে।

HomeController.java (Controller উদাহরণ):

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String homePage() {
        // "home" ভিউ রিটার্ন করা হচ্ছে, যা home.jsp হবে
        return "home";
    }
}
ব্যাখ্যা:
  • @GetMapping("/home"): এটি /home URL পাথের জন্য GET রিকোয়েস্ট মেনে নেয়।
  • return "home": কন্ট্রোলার "home" নামক ভিউ রিটার্ন করবে। ViewResolver এটিকে /WEB-INF/views/home.jsp হিসাবে রিজলভ করবে এবং ব্যবহারকারীর কাছে প্রদর্শন করবে।

Step 4: View (home.jsp) তৈরি

Spring MVC তে home.jsp ফাইলটি তৈরি করুন, যা ভিউ হিসেবে ব্যবহৃত হবে।

home.jsp (View উদাহরণ):

<!DOCTYPE html>
<html>
<head>
    <title>Spring MVC Example</title>
</head>
<body>
    <h1>Welcome to Spring MVC Home Page!</h1>
    <p>This page is rendered by Spring MVC Controller.</p>
</body>
</html>
ব্যাখ্যা:
  • এটি একটি সাধারণ JSP ফাইল যেখানে একটি হেডলাইন এবং প্যারাগ্রাফ রয়েছে, যা কন্ট্রোলার থেকে রিটার্ন হওয়া ডেটা প্রদর্শন করবে।

Step 5: DispatcherServlet কনফিগারেশন

Spring MVC তে DispatcherServlet ব্যবহৃত হয় রিকোয়েস্ট হ্যান্ডলিং-এর জন্য। এটি HTTP রিকোয়েস্ট গ্রহণ করে এবং কন্ট্রোলারের কাছে পাঠায়, তারপর রেসপন্স প্রস্তুত করে।

Spring Boot ব্যবহার করলে এটি স্বয়ংক্রিয়ভাবে কনফিগার করা হয়, তবে আপনি যদি Spring Framework ব্যবহার করেন, তাহলে web.xml বা Java Config দ্বারা DispatcherServlet কনফিগার করতে হয়।

WebAppInitializer.java (Java-based configuration):

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] {AppConfig.class};  // Root configuration class
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {WebConfig.class};  // Servlet configuration class
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};  // DispatcherServlet-এর URL ম্যাপিং
    }
}

Step 6: Running the Application

Spring Boot ব্যবহার করলে আপনি main() মেথডে @SpringBootApplication অ্যানোটেশন দিয়ে অ্যাপ্লিকেশন রান করতে পারেন।

Application.java (Spring Boot example):

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

অথবা যদি আপনি সাধারণ Spring Framework ব্যবহার করেন, আপনি Tomcat বা অন্য কোনো Servlet Container-এ অ্যাপ্লিকেশন চালাতে পারবেন।


Conclusion:

Spring MVC তে View Resolver হল একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান যা কন্ট্রোলারের রিটার্ন করা ভিউ নামের ভিত্তিতে ভিউ ফাইল রিজলভ করে। সাধারণত, InternalResourceViewResolver ব্যবহার করা হয় যাতে JSP বা অন্য টেমপ্লেট ইঞ্জিনের মাধ্যমে ভিউ তৈরি করা যায়। Spring MVC এর ViewResolver ব্যবহার করা সহজ এবং এটি ভিউ লোড করার প্রক্রিয়াকে অত্যন্ত নমনীয় ও কাস্টমাইজেবল করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...