Spring MVC তে ModelAndView হল একটি ক্লাস যা মডেল এবং ভিউ উভয়কেই পরিচালনা করে। এটি Spring MVC অ্যাপ্লিকেশনে HTTP রিকোয়েস্টের জন্য মডেল ডেটা এবং ভিউ নির্ধারণ করতে ব্যবহৃত হয়। Model হল ডেটা যা কন্ট্রোলার থেকে ভিউতে পাঠানো হয়, এবং View হল ইউজার ইন্টারফেস যা সেই ডেটা প্রদর্শন করে।
ModelAndView Overview
- Model: Spring MVC এর Model হল ডেটা যা আপনি কন্ট্রোলার থেকে ভিউতে পাঠাতে চান। এটি সাধারণত একটি Map অবজেক্ট যা কন্ট্রোলারের মধ্যে ব্যবহৃত হয় এবং ভিউতে পৌঁছায়।
- View: এটি হল সেই উপাদান যা কন্ট্রোলার থেকে পাঠানো ডেটা ব্যবহার করে ইউজারকে উপস্থাপন করে। এটি সাধারণত একটি JSP, HTML, Thymeleaf বা অন্য যেকোনো ভিউ টেমপ্লেট হতে পারে।
ModelAndView আপনাকে এই দুটি (মডেল এবং ভিউ) একত্রে পরিচালনা করার সুবিধা দেয়। এটি Model এর সাথে View নির্ধারণ করে এবং রিকোয়েস্ট-রেসপন্স সাইকেল শেষে ভিউ এবং ডেটা প্রেরণ করে।
ModelAndView কিভাবে কাজ করে?
ModelAndView ক্লাসটি Spring MVC-তে দুটি প্রধান ফাংশনality প্রদান করে:
- Model - কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানোর জন্য।
- View - কন্ট্রোলারের হ্যান্ডলার মেথডে ফেরত পাঠানো ভিউ, যা সাধারণত HTML বা JSP টেমপ্লেট।
Spring MVC Example: ModelAndView
Step 1: Controller Class with ModelAndView
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
@RequestMapping("/home")
public ModelAndView home() {
// Create a new ModelAndView object
ModelAndView modelAndView = new ModelAndView();
// Adding model attributes (data)
modelAndView.addObject("message", "Welcome to Spring MVC!");
modelAndView.addObject("date", new java.util.Date());
// Setting the view name (JSP page)
modelAndView.setViewName("home"); // home.jsp or home.html
return modelAndView; // Return ModelAndView
}
}
ModelAndViewঅবজেক্ট তৈরি করা হয় এবং এর মধ্যে মডেল ডেটা যোগ করা হয় (যেমন "message" এবং "date")।addObject()মেথডটি ব্যবহার করে ডেটা (মডেল) ভিউতে পাঠানো হয়।setViewName()মেথডটি ভিউ নাম সেট করে, যা Spring MVC এর ভিউ রেজোলভার (View Resolver) দ্বারা রেন্ডার হবে। এখানে,homeনামে একটি JSP বা HTML ফাইল ভিউ হিসেবে রেন্ডার হবে।
Step 2: View (home.jsp)
<!-- home.jsp -->
<html>
<head><title>Spring MVC Example</title></head>
<body>
<h1>${message}</h1> <!-- This will display the message from the model -->
<p>Current Date: ${date}</p> <!-- This will display the current date -->
</body>
</html>
${message}এবং${date}হল Spring Expression Language (SpEL) এর মাধ্যমে মডেল ডেটা এক্সেস করার পদ্ধতি। এগুলো ModelAndView থেকে পাঠানো ডেটার মান।
Step 3: Spring Configuration (view resolver)
Spring MVC অ্যাপ্লিকেশনের জন্য view resolver কনফিগারেশন প্রয়োজন। যদি Spring Boot ব্যবহার না করেন, তবে এই কনফিগারেশন dispatcher-servlet.xml ফাইলে করতে হবে।
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
এখানে, prefix /WEB-INF/views/ নির্ধারণ করা হয়েছে এবং suffix .jsp যা Spring MVC কে জানিয়ে দেয় যে ভিউ ফাইলগুলির নাম /WEB-INF/views/ ডিরেক্টরির মধ্যে .jsp এক্সটেনশন সহ থাকবে।
ModelAndView এর আরও কিছু বৈশিষ্ট্য
- Multiple Objects in Model: একাধিক ডেটা একসাথে পাঠানো যায়।
modelAndView.addObject("key", value)ব্যবহার করে একাধিক অটোমেটিক মডেল ডেটা পাঠানো যায়।
Returning ModelAndView with Redirect: আপনি মডেল এবং ভিউ নিয়ে রিডাইরেক্টও করতে পারেন।
@RequestMapping("/redirect") public ModelAndView redirectExample() { return new ModelAndView("redirect:/home"); // Redirect to "/home" URL }ModelAndView with JSON (RESTful Services): আপনি JSON রেসপন্স প্রদান করতে পারেন @ResponseBody অ্যানোটেশন সহ ModelAndView ব্যবহার করে।
@RequestMapping("/json") @ResponseBody public ModelAndView getJson() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("message", "JSON Response"); return modelAndView; }
ModelAndView vs Model + View
ModelAndView: এটি Model এবং View একত্রে সেট করে, একটিই অবজেক্টে সমস্ত ডেটা এবং ভিউ কোড রাখে।ModelএবংView: আপনিModelএবংViewদুটি আলাদাভাবে ব্যবহার করতে পারেন, যেখানে আপনি প্রথমে Model তৈরি করবেন এবং পরে View সেট করবেন।
@RequestMapping("/example")
public String example(Model model) {
model.addAttribute("message", "Hello, Spring MVC!");
return "exampleView"; // Returns a view name
}
এখানে Model শুধুমাত্র ডেটা ধারণ করে এবং View নামটি আলাদাভাবে রিটার্ন হয়।
Conclusion
Spring MVC তে ModelAndView ক্লাসটি খুবই কার্যকরী একটি টুল যা ভিউ এবং মডেল ডেটা একত্রে পরিচালনা করতে সাহায্য করে। এটি আপনাকে সহজে ডেটা এবং ভিউ নির্ধারণ করে HTTP রিকোয়েস্টের জন্য রেসপন্স তৈরি করতে সহায়ক। ModelAndView এর মাধ্যমে ডেটা পাঠানোর সাথে সাথে ভিউ কনফিগার করা যায়, যা Spring MVC অ্যাপ্লিকেশনের জন্য একটি সরল এবং কার্যকরী কৌশল।
Read more