Model এবং ModelMap এর ভূমিকা

Model এবং ModelMap - স্প্রিং এমভিসি (Spring MVC) - Java Technologies

354

Spring MVC এ Model এবং ModelMap হল এমন দুটি ক্লাস যা Controller থেকে View-এ ডেটা পাঠানোর জন্য ব্যবহৃত হয়। এগুলি মূলত Model-View-Controller (MVC) আর্কিটেকচারে ডেটা ট্রান্সফার করতে সহায়ক।

যখন কন্ট্রোলার কোন HTTP রিকোয়েস্ট হ্যান্ডল করে, তখন কন্ট্রোলার সাধারণত কিছু ডেটা তৈরি করে এবং সেটি ভিউতে পাঠাতে হয়। Spring MVC এই ডেটা ভিউতে পাঠানোর জন্য Model বা ModelMap ব্যবহার করে।


1. Model:

Model একটি ইন্টারফেস যা controller থেকে view-এ ডেটা পাঠানোর জন্য ব্যবহৃত হয়। এটি মূলত Map এর মতো কাজ করে, যা কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানোর জন্য একটি কন্টেইনার হিসেবে কাজ করে।

Model Interface:

public interface Model {
    void addAttribute(String attributeName, Object attributeValue);
}
  • addAttribute মেথডটি ব্যবহার করে, কন্ট্রোলার ভিউতে ডেটা পাঠাতে পারে। এখানে attributeName হল ভিউতে প্রদর্শন করার জন্য দেওয়া নাম এবং attributeValue হল ডেটা যা আমরা পাঠাতে চাই।

2. ModelMap:

ModelMap হল Model ইন্টারফেসের একটি বাস্তবায়ন (implementation) যা কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। এটি মূলত Map<String, Object> এর মতো কাজ করে, যেখানে আমরা key হিসেবে অ্যাট্রিবিউট নাম এবং value হিসেবে অ্যাট্রিবিউট ভ্যালু প্রদান করি।

ModelMap সহজে ডেটা পরিচালনা এবং অ্যাট্রিবিউটের সাথে কাজ করতে সহায়ক।

ModelMap ব্যবহার:

import org.springframework.ui.ModelMap;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class GreetingController {

    @GetMapping("/greet")
    public String greet(ModelMap model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "greet";  // "greet.jsp" or other view template
    }
}

ব্যাখ্যা:

  • এখানে, model.addAttribute("message", "Hello, Spring MVC!"); এই লাইনটি message নামক অ্যাট্রিবিউটের সাথে একটি স্ট্রিং "Hello, Spring MVC!" ভ্যালু যুক্ত করছে এবং এটি ভিউতে পাঠানোর জন্য প্রস্তুত হচ্ছে।
  • তারপর কন্ট্রোলারটি greet.jsp বা অন্য কোনো ভিউ টেমপ্লেটে এই ডেটা রেন্ডার করবে।

Model এবং ModelMap এর মধ্যে পার্থক্য:

  • Model হল একটি সাধারণ ইন্টারফেস যা ডেটা পাঠানোর জন্য ব্যবহার করা হয়।
  • ModelMap হল Model ইন্টারফেসের একটি কনক্রিট (concrete) ক্লাস যা Map এর মতো কাজ করে এবং এটি ব্যবহারকারীর জন্য আরো সহজ এবং সুবিধাজনক।

তবে, Spring MVC তে ModelMap এবং Model এর মধ্যে কোনো ফাংশনাল পার্থক্য নেই, এবং আপনি যেকোনো একটি ব্যবহার করতে পারেন। ModelMap সাধারণত বেশি ব্যবহৃত হয় কারণ এটি Map এর মতো ব্যবহার করা যায়।


Model এবং ModelMap এর ব্যবহার উদাহরণ:

Model (Model interface) উদাহরণ:

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Welcome to Spring MVC!");
        return "hello";  // hello.jsp
    }
}

hello.jsp:

<html>
<head>
    <title>Spring MVC Example</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

ModelMap উদাহরণ:

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String hello(ModelMap model) {
        model.addAttribute("message", "Welcome to Spring MVC with ModelMap!");
        return "hello";  // hello.jsp
    }
}

hello.jsp:

<html>
<head>
    <title>Spring MVC Example</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

Model এবং ModelMap এর সুবিধা:

  1. Data Transfer Between Controller and View:
    • Model এবং ModelMap এর মাধ্যমে কন্ট্রোলার থেকে ভিউতে ডেটা সহজেই স্থানান্তরিত করা যায়।
  2. Separation of Concerns:
    • Model এবং ModelMap ভিউ থেকে কন্ট্রোলার লজিক আলাদা রাখতে সাহায্য করে, যার ফলে কোড আরও পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য হয়।
  3. Flexible and Extensible:
    • আপনি Model বা ModelMap এর মাধ্যমে যেকোনো ধরনের ডেটা পাঠাতে পারবেন, যেমন কমপ্লেক্স অবজেক্ট অথবা সিম্পল প্রিমিটিভ ডেটা।
  4. Multiple Data Transfer:
    • একাধিক ডেটা একসাথে পাঠানোর জন্য Model বা ModelMap ব্যবহার করা যায়, যেমন মডেল অবজেক্ট বা মডেল কোলেকশন।

Conclusion:

Spring MVC তে Model এবং ModelMap হল গুরুত্বপূর্ণ উপাদান যা কন্ট্রোলার থেকে ভিউতে ডেটা স্থানান্তর করতে ব্যবহৃত হয়। Model একটি ইন্টারফেস যা ডেটা মডেল হিসাবে ব্যবহার করা হয়, এবং ModelMap হল এটি একটি কনক্রিট ক্লাস যা ডেটা কনটেইনার হিসেবে কাজ করে। আপনি যেকোনো একটি ব্যবহার করতে পারেন, তবে ModelMap অধিক ব্যবহৃত কারণ এটি বেশি ফ্লেক্সিবল এবং সুবিধাজনক।

Content added By
Promotion

Are you sure to start over?

Loading...