Spring MVC তে, Controller হল সেই অংশ যা HTTP রিকোয়েস্ট গ্রহণ করে এবং রেসপন্স তৈরি করতে মডেল এবং ভিউয়ের মধ্যে ডেটা আদান-প্রদান করে। Controller হল Spring MVC অ্যাপ্লিকেশনের মস্তিষ্ক, যেখানে রিকোয়েস্ট ম্যানিপুলেশন এবং রেসপন্স প্রক্রিয়া করা হয়।
Spring MVC তে Controller তৈরি করতে @Controller অ্যানোটেশন ব্যবহার করা হয়, এবং রিকোয়েস্ট মেথডের জন্য @RequestMapping অথবা @GetMapping, @PostMapping ইত্যাদি অ্যানোটেশন ব্যবহার করা হয়।
Controller তৈরি করার উদাহরণ
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: Controller তৈরি করা
Spring MVC তে @Controller অ্যানোটেশন ব্যবহার করে একটি কন্ট্রোলার ক্লাস তৈরি করা হয়। এর পরে, @RequestMapping বা অন্যান্য HTTP method অ্যানোটেশন যেমন @GetMapping, @PostMapping ব্যবহার করা হয় রিকোয়েস্টগুলির সাথে মানানসই মেথড যুক্ত করার জন্য।
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/home")
public class HomeController {
// এই মেথডটি '/home' রিকোয়েস্ট মাপবে
@GetMapping
public String homePage() {
return "home"; // home.jsp ভিউ ফাইল রিটার্ন করবে
}
}
ব্যাখ্যা:
@Controller: এটি Spring MVC তে একটি ক্লাসকে কন্ট্রোলার হিসেবে চিহ্নিত করে।@RequestMapping("/home"): এই অ্যানোটেশনটি/homeURL পাথের জন্য কন্ট্রোলারটি পরিচালনা করবে।@GetMapping: এটি GET HTTP রিকোয়েস্ট মেথডের জন্য একটি মেপিং। অর্থাৎ, যখন/homeURL এ GET রিকোয়েস্ট আসবে, তখনhomePage()মেথডটি কল হবে।return "home": এটিhome.jspফাইলের নাম রিটার্ন করবে। এই ফাইলটি ভিউ হিসেবে ব্যবহার হবে।
Step 3: View (home.jsp) তৈরি করা
Spring MVC তে আপনি সাধারণত JSP, Thymeleaf, বা অন্য কোন টেমপ্লেট ইঞ্জিন ব্যবহার করে ভিউ তৈরি করেন। এখানে আমরা home.jsp তৈরি করব, যা ভিউ হিসেবে কাজ করবে।
home.jsp:
<!DOCTYPE html>
<html>
<head>
<title>Spring MVC Example</title>
</head>
<body>
<h1>Welcome to Spring MVC Home Page!</h1>
<p>This is the home page rendered by Spring MVC Controller.</p>
</body>
</html>
ব্যাখ্যা:
- এটি একটি সাধারণ JSP ফাইল যেখানে একটি হেডলাইন এবং প্যারাগ্রাফ রয়েছে, যা কন্ট্রোলার থেকে রিটার্ন হওয়া ডেটা প্রদর্শন করবে।
Step 4: 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 ম্যাপিং
}
}
AppConfig.java:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = "com.example") // Package থেকে Spring beans স্ক্যান করা
public class AppConfig {
}
WebConfig.java:
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);
}
}
Step 5: 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-তে Controller তৈরি করার জন্য মূলত @Controller, @RequestMapping, @GetMapping, @PostMapping ইত্যাদি অ্যানোটেশন ব্যবহৃত হয়। এটি HTTP রিকোয়েস্টের জন্য মেথড তৈরি করে এবং প্রতিটি রিকোয়েস্টের জন্য উপযুক্ত ভিউ রিটার্ন করে। Spring MVC তে কন্ট্রোলার তৈরি করা খুবই সহজ এবং এটি আধুনিক ওয়েব অ্যাপ্লিকেশন ডিজাইনে অন্যতম গুরুত্বপূর্ণ অংশ।
Read more