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"): এটি/homeURL পাথের জন্য 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 ব্যবহার করা সহজ এবং এটি ভিউ লোড করার প্রক্রিয়াকে অত্যন্ত নমনীয় ও কাস্টমাইজেবল করে তোলে।
Read more