Spring Framework-এর Spring MVC (Model-View-Controller) একটি অত্যন্ত জনপ্রিয় এবং শক্তিশালী ওয়েব ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। @Controller, @RequestMapping, এবং View Resolver হল Spring MVC এর গুরুত্বপূর্ণ উপাদান যা ওয়েব রিকোয়েস্ট প্রক্রিয়াকরণ এবং রেসপন্স প্রদান করতে সাহায্য করে।
এগুলির মাধ্যমে আপনি HTTP রিকোয়েস্টগুলির হ্যান্ডলিং, ভিউ রেন্ডারিং এবং ব্যবহারকারীদের জন্য ফলস্বরূপ তথ্য প্রদানের কাজ সহজভাবে করতে পারেন।
১. @Controller Annotation
Spring MVC-এ @Controller একটি ক্লাস লেভেল এনোটেশন যা controller ক্লাসকে চিহ্নিত করে, যার মাধ্যমে HTTP রিকোয়েস্টগুলি প্রক্রিয়া করা হয়। এই এনোটেশন ব্যবহৃত ক্লাসগুলো মূলত UI (User Interface) এর সাথে যোগাযোগ স্থাপন করে, এবং তারা view থেকে model এবং controller থেকে view পর্যন্ত ডেটা ট্রান্সফার করে।
@Controller এনোটেশন ক্লাসে ব্যবহৃত হয় যখন একটি ক্লাস HTTP রিকোয়েস্টের জন্য উপযুক্ত মেথডগুলির সংকলন (collection) হিসেবে কাজ করে।
ব্যবহার:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserController {
@RequestMapping("/welcome")
public String showWelcomePage() {
return "welcome";
}
}
ব্যাখ্যা:
@Controllerএনোটেশন দিয়ে ক্লাসটিকে একটি controller হিসেবে চিহ্নিত করা হয়।showWelcomePage()মেথডের মাধ্যমেwelcomeনামক view এর জন্য একটি রিটার্ন স্ট্রিং প্রদান করা হয়েছে।
২. @RequestMapping Annotation
@RequestMapping হল Spring MVC এর একটি গুরুত্বপূর্ণ এনোটেশন যা HTTP রিকোয়েস্টের জন্য মেথড নির্ধারণ করে। এটি একটি নির্দিষ্ট URL প্যাটার্নের সাথে মেথড বা ক্লাসের ম্যাপিং তৈরি করে এবং সেই অনুযায়ী রিকোয়েস্ট প্রক্রিয়া করার কাজ করে। @RequestMapping HTTP রিকোয়েস্টের বিভিন্ন টাইপ (GET, POST, PUT, DELETE) সাপোর্ট করে।
ব্যবহার:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserController {
// Mapping for HTTP GET request
@RequestMapping("/welcome")
public String showWelcomePage() {
return "welcome";
}
// Mapping for HTTP POST request
@RequestMapping(value = "/submit", method = RequestMethod.POST)
public String handleFormSubmission() {
// Process form submission
return "submissionSuccess";
}
}
ব্যাখ্যা:
@RequestMapping("/welcome")রিকোয়েস্টের জন্য GET HTTP মেথড ব্যবহার করেwelcomeview রিটার্ন করে।@RequestMapping(value = "/submit", method = RequestMethod.POST)ব্যবহার করে POST রিকোয়েস্টের জন্য একটি মেথড তৈরি করা হয়েছে, যা form data প্রসেস করে এবং একটিsubmissionSuccessview রিটার্ন করে।
আরো Specific Mapping:
Spring 4.3 এবং তার পরবর্তী সংস্করণে, @RequestMapping এর পরিবর্তে আরও স্পেসিফিক HTTP মেথড এনোটেশন রয়েছে, যেমন:
- @GetMapping: GET রিকোয়েস্টের জন্য।
- @PostMapping: POST রিকোয়েস্টের জন্য।
- @PutMapping: PUT রিকোয়েস্টের জন্য।
- @DeleteMapping: DELETE রিকোয়েস্টের জন্য।
উদাহরণ:
@GetMapping("/welcome")
public String showWelcomePage() {
return "welcome";
}
৩. View Resolver
View Resolver হল একটি Spring MVC কম্পোনেন্ট যা রিকোয়েস্টের ভিত্তিতে নির্দিষ্ট view রিটার্ন করে। এটি Spring MVC অ্যাপ্লিকেশন এর মধ্যে ভিউ এবং কন্ট্রোলারের মধ্যে যোগাযোগ স্থাপন করে। View Resolver মূলত logical view name কে actual view (যেমন JSP, Thymeleaf) এর সাথে ম্যাপিং করে।
Spring-এ সাধারণত দুটি ধরনের View Resolver ব্যবহৃত হয়:
- InternalResourceViewResolver (JSP সহ)
- ThymeleafViewResolver (Thymeleaf টেমপ্লেটের জন্য)
InternalResourceViewResolver Example:
XML Configuration (view resolver configuration):
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
Java Configuration Example:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jsp");
}
}
ব্যাখ্যা:
- InternalResourceViewResolver ব্যবহার করা হচ্ছে যাতে
welcomeনামক view যখন রিটার্ন হয়, তখন Spring সঠিক JSP ফাইল/WEB-INF/views/welcome.jspখুঁজে পাবে।
ThymeleafViewResolver Example:
Thymeleaf একটি জনপ্রিয় টেমপ্লেট ইঞ্জিন যা Spring Framework এর সাথে ব্যবহৃত হয়।
Java Configuration (Thymeleaf View Resolver):
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".html");
return resolver;
}
}
ব্যাখ্যা:
- এই কনফিগারেশনে view resolver
welcome.htmlটেমপ্লেটকে/WEB-INF/views/ডিরেক্টরির মধ্যে খুঁজে পাবে।
@Controller, @RequestMapping এবং View Resolver এর মধ্যে সম্পর্ক
- @Controller এনোটেশন ক্লাসগুলিকে কন্ট্রোলার হিসেবে চিহ্নিত করে, যেখানে HTTP রিকোয়েস্টের জন্য হ্যান্ডলার মেথড থাকে।
- @RequestMapping ব্যবহার করে, আপনি HTTP রিকোয়েস্টের জন্য নির্দিষ্ট মেথড এবং URL প্যাটার্ন ম্যাপ করেন।
- View Resolver কন্ট্রোলারের রিটার্ন করা logical view name (যেমন
welcome) কে নির্দিষ্ট ফিজিকাল ভিউ (যেমনwelcome.jspবাwelcome.html) এর সাথে ম্যাপ করে, এবং সেই ভিউ টেমপ্লেট রেন্ডার করে ব্যবহারকারীকে রেসপন্স প্রদান করে।
Example Scenario:
Controller Class:
@Controller
public class UserController {
@RequestMapping("/home")
public String showHomePage() {
return "home"; // Logical view name (will be resolved to /WEB-INF/views/home.jsp)
}
@RequestMapping("/profile")
public String showProfilePage() {
return "profile"; // Logical view name (will be resolved to /WEB-INF/views/profile.jsp)
}
}
XML Configuration for View Resolver:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
Folder Structure:
/WEB-INF/views/home.jsp
/WEB-INF/views/profile.jsp
সারাংশ
- @Controller: HTTP রিকোয়েস্ট হ্যান্ডলিং ক্লাসগুলির জন্য ব্যবহৃত হয়।
- @RequestMapping: HTTP রিকোয়েস্টের সাথে মেথড এবং URL ম্যাপ করতে ব্যবহৃত হয়।
- View Resolver: logical view name কে physical view (JSP, HTML) এ রূপান্তর করতে ব্যবহৃত হয়, যাতে সঠিক ভিউ ফাইল রেন্ডার করা যায়।
এই উপাদানগুলো একসাথে কাজ করে Spring MVC অ্যাপ্লিকেশনে রিকোয়েস্ট প্রসেসিং এবং ভিউ রেন্ডারিং প্রক্রিয়াকে সহজ এবং কার্যকরী করে তোলে।
Read more