Model এবং ModelMap হল স্প্রিং এমভিসি ফ্রেমওয়ার্কের গুরুত্বপূর্ণ অংশ, যা কন্ট্রোলার এবং ভিউর মধ্যে ডাটা শেয়ার করার জন্য ব্যবহৃত হয়। এগুলি কন্ট্রোলারের মেথড থেকে ডাটা (যেমন, ইউজার ইনপুট, ব্যবসায়িক লজিকের আউটপুট) ভিউ (যেমন, JSP, Thymeleaf) তে পাঠানোর জন্য ব্যবহৃত হয়। তবে, Model এবং ModelMap কিছুটা আলাদা হলেও, তাদের কাজ প্রায় একই।
১. Model:
Model হল একটি ইন্টারফেস যা কন্ট্রোলার এবং ভিউর মধ্যে ডাটা আদান-প্রদান করতে ব্যবহৃত হয়। এটি সাধারণত কন্ট্রোলারের মেথডে ডাটা অ্যাট্রিবিউট হিসেবে যুক্ত করা হয় এবং ভিউতে ওই ডাটা প্রদর্শিত হয়।
২. ModelMap:
ModelMap হল Map ইন্টারফেসের একটি বাস্তবায়ন যা মডেল ডাটাকে key-value pair আকারে স্টোর করে। এটি ডাটা পাঠানোর জন্য আরেকটি পদ্ধতি এবং এটি Model এর চেয়ে একটু বেশি ফিচারযুক্ত, তবে ব্যবহারে তারা প্রায় একে অপরের সমান।
Model এবং ModelMap এর ব্যবহার
স্প্রিং এমভিসিতে Model এবং ModelMap এর মাধ্যমে কন্ট্রোলার থেকে ভিউতে ডাটা পাঠানোর উদাহরণ দেখানো হলো।
উদাহরণ: Model এবং ModelMap ব্যবহার
১. Controller:
এখানে একটি কন্ট্রোলার ক্লাস দেখানো হলো যা Model এবং ModelMap উভয়ই ব্যবহার করে ডাটা ভিউতে পাঠায়।
@Controller
public class UserController {
@RequestMapping("/welcome")
public String showWelcomePage(Model model) {
// Using Model to add data
model.addAttribute("message", "Welcome to Spring MVC using Model!");
return "welcome"; // This will resolve to /WEB-INF/views/welcome.jsp
}
@RequestMapping("/hello")
public String showHelloPage(ModelMap modelMap) {
// Using ModelMap to add data
modelMap.addAttribute("greeting", "Hello, Spring MVC using ModelMap!");
return "hello"; // This will resolve to /WEB-INF/views/hello.jsp
}
}
কন্ট্রোলার ব্যাখ্যা:
@RequestMapping("/welcome")URL রিকোয়েস্ট/welcomeএ আসলে, কন্ট্রোলারের showWelcomePage() মেথড কল হবে। এখানে Model ব্যবহার করে"message"অ্যাট্রিবিউট যোগ করা হয়েছে এবং ভিউতে পাঠানো হয়েছে।@RequestMapping("/hello")URL রিকোয়েস্ট/helloএ আসলে, কন্ট্রোলারের showHelloPage() মেথড কল হবে। এখানে ModelMap ব্যবহার করে"greeting"অ্যাট্রিবিউট যোগ করা হয়েছে এবং ভিউতে পাঠানো হয়েছে।
২. View (JSP):
এখন, কন্ট্রোলার থেকে পাঠানো ডাটা ভিউতে প্রদর্শিত হবে। নিচে দুটি JSP ভিউ-এর উদাহরণ দেয়া হলো।
welcome.jsp (JSP উদাহরণ):
<html>
<body>
<h1>${message}</h1> <!-- Displaying the message from Model -->
</body>
</html>
এখানে ${message} মডেল থেকে পাঠানো ডাটা দেখাচ্ছে, যা "Welcome to Spring MVC using Model!"।
hello.jsp (JSP উদাহরণ):
<html>
<body>
<h1>${greeting}</h1> <!-- Displaying the greeting from ModelMap -->
</body>
</html>
এখানে ${greeting} মডেল ম্যাপ থেকে পাঠানো ডাটা দেখাচ্ছে, যা "Hello, Spring MVC using ModelMap!"।
Model এবং ModelMap এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Model | ModelMap |
|---|---|---|
| প্রকার | ইন্টারফেস | Map ইন্টারফেসের বাস্তবায়ন |
| ব্যবহার | সাধারণত ভিউতে ডাটা পাঠানোর জন্য ব্যবহৃত হয় | সাধারণত key-value pair আকারে ডাটা ব্যবস্থাপনার জন্য ব্যবহৃত হয় |
| ফিচার | সীমিত ফিচার | বেশি ফিচার, বিশেষ করে Map এর সুবিধা রয়েছে |
| অভ্যন্তরীণ স্টোরেজ | ডাটা গুলি অ্যাট্রিবিউট হিসেবে সংরক্ষিত হয় | key-value pair হিসেবে ডাটা সংরক্ষিত হয় |
৩. Model এবং ModelMap এর ব্যবহার:
স্প্রিং এমভিসিতে Model এবং ModelMap ব্যবহারের জন্য কোন একটির ব্যবহার বিশেষভাবে ভাল বলা যায় না, কারণ উভয়ের কাজ প্রায় সমান। তবে, ModelMap একটু বেশি ফিচারযুক্ত এবং এটি Map ইন্টারফেসের মাধ্যমে অনেক ধরনের ডাটা সংরক্ষণ করতে সাহায্য করে। অন্যদিকে, Model সাধারণত একটি সরল উপায় হিসেবে ব্যবহার করা হয়।
উপসংহার:
- Model এবং ModelMap উভয়ই স্প্রিং এমভিসিতে কন্ট্রোলার থেকে ভিউতে ডাটা পাঠানোর জন্য ব্যবহৃত হয়।
- Model একটি সাধারণ ইন্টারফেস এবং সহজে ডাটা অ্যাড করার জন্য ব্যবহৃত হয়, যেখানে ModelMap আরো বেশি ফিচারযুক্ত এবং
Mapস্ট্রাকচার ব্যবহার করে। - স্প্রিং এমভিসিতে এই দুটি উপাদান ব্যবহার করে মডেল ডাটা ভিউতে পাঠানো হয় এবং ভিউতে সেই ডাটা প্রদর্শিত হয়।
এইভাবে, স্প্রিং এমভিসি ফ্রেমওয়ার্কে Model এবং ModelMap ব্যবহার করে কন্ট্রোলার এবং ভিউয়ের মধ্যে ডাটা শেয়ার করা যায়।
Read more