Model Object এর মাধ্যমে ডেটা পাঠানো এবং গ্রহণ করা

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

288

Spring MVC-তে Model একটি গুরুত্বপূর্ণ উপাদান, যা কন্ট্রোলার এবং ভিউ (View) এর মধ্যে ডেটা স্থানান্তর করতে ব্যবহৃত হয়। Model Object ব্যবহার করে কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানো এবং ভিউ থেকে কন্ট্রোলারে ডেটা গ্রহণ করা হয়। এটি অ্যাপ্লিকেশনটির ডেটা এবং ব্যবসায়িক লজিক (business logic) রেন্ডার করার জন্য অত্যন্ত গুরুত্বপূর্ণ।

Model Object কী?

Model হল Spring MVC-এর একটি অবজেক্ট যা ইউজারের রিকোয়েস্ট বা অ্যাপ্লিকেশনের অভ্যন্তরীণ ডেটা ধারণ করে। কন্ট্রোলার এই Model-এ ডেটা রাখে এবং ভিউ রেন্ডার করার সময় সেই ডেটা ব্যবহার করে।


Model Object এর মাধ্যমে ডেটা পাঠানো:

Spring MVC তে কন্ট্রোলার মেথডের মাধ্যমে Model অবজেক্ট ব্যবহার করে ডেটা ভিউতে পাঠানো হয়। এটি Model, ModelAndView, অথবা @ModelAttribute অ্যানোটেশন ব্যবহার করে করা যায়।

1. Model Object ব্যবহার করে ডেটা পাঠানো

Spring MVC-তে ডেটা কন্ট্রোলার থেকে ভিউতে পাঠানোর জন্য আমরা Model অবজেক্ট ব্যবহার করি। কন্ট্রোলার মেথডে Model অবজেক্টের addAttribute() মেথড ব্যবহার করা হয় ডেটা যুক্ত করার জন্য।

Controller Example:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/greet")
    public String greet(Model model) {
        model.addAttribute("message", "Hello, World!");  // Add data to Model
        return "greet";  // Return the view name (greet.jsp or greet.html)
    }
}
  • model.addAttribute("message", "Hello, World!"): এখানে message নামে একটি অ্যাট্রিবিউট যুক্ত করা হয়েছে যেটি ভিউতে পাঠানো হবে।
  • কন্ট্রোলার মেথড greet() ভিউয়ের নাম "greet" রিটার্ন করবে।
View Example (greet.jsp):
<!-- /WEB-INF/views/greet.jsp -->
<html>
    <body>
        <h1>${message}</h1>  <!-- The data passed from the controller -->
    </body>
</html>
  • এখানে ${message} ভিউতে রেন্ডার করা হবে, যা কন্ট্রোলার থেকে Model Object এর মাধ্যমে পাঠানো হয়েছিল।

ModelAndView ব্যবহার করে ডেটা পাঠানো:

ModelAndView হল Spring MVC এর একটি ক্লাস যা একই সাথে Model (ডেটা) এবং View (ভিউ পেজ) রিটার্ন করতে সক্ষম। এটি একত্রে ভিউ এবং ডেটা ফেরত দেওয়ার একটি সুবিধাজনক উপায়।

ModelAndView Example:

import org.springframework.web.servlet.ModelAndView;
import org.springframework.stereotype.Controller;

@Controller
public class HomeController {

    @GetMapping("/welcome")
    public ModelAndView welcome() {
        ModelAndView modelAndView = new ModelAndView("welcome");  // View name
        modelAndView.addObject("message", "Welcome to Spring MVC!");  // Add data to Model
        return modelAndView;
    }
}
  • এখানে ModelAndView অবজেক্টে ভিউ এবং ডেটা একত্রে রিটার্ন করা হয়েছে। modelAndView.addObject("message", "Welcome to Spring MVC!") দিয়ে ডেটা যুক্ত করা হয়েছে এবং "welcome" নামক ভিউ রিটার্ন করা হয়েছে।
View Example (welcome.jsp):
<!-- /WEB-INF/views/welcome.jsp -->
<html>
    <body>
        <h1>${message}</h1>  <!-- The data passed from the controller -->
    </body>
</html>

@ModelAttribute অ্যানোটেশন ব্যবহার করে ডেটা পাঠানো:

@ModelAttribute অ্যানোটেশনটি Spring MVC-তে মডেল ডেটা অ্যাট্রিবিউট হিসেবে ব্যবহার করতে ব্যবহৃত হয়। এটি পদ্ধতির আর্গুমেন্ট হিসেবে ব্যবহারকারীকে কাস্টম অবজেক্ট (POJO) পাঠাতে সহায়ক।

@ModelAttribute Example:

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

@Controller
public class UserController {

    @ModelAttribute("user")
    public User getUser() {
        // A method-level ModelAttribute, which will be available in all handler methods
        User user = new User();
        user.setName("John Doe");
        user.setAge(25);
        return user;
    }

    @GetMapping("/user")
    public String showUserDetails(Model model) {
        // The 'user' model attribute is already available
        return "userDetails";
    }
}
  • @ModelAttribute("user"): এই অ্যানোটেশনটি getUser() মেথডকে মডেল অবজেক্ট হিসেবে সংজ্ঞায়িত করে, যা অন্য মেথডে ব্যবহার করা যাবে।
  • showUserDetails() মেথডে user মডেল অবজেক্টটি ভিউতে পাঠানো হয়েছে।
View Example (userDetails.jsp):
<!-- /WEB-INF/views/userDetails.jsp -->
<html>
    <body>
        <h1>User Information</h1>
        <p>Name: ${user.name}</p>
        <p>Age: ${user.age}</p>  <!-- Displaying data from the user object -->
    </body>
</html>

Model Object এর মাধ্যমে ডেটা গ্রহণ:

Model Object এর মাধ্যমে ডেটা গ্রহণ করতে, Spring MVC আপনাকে @RequestParam বা @ModelAttribute অ্যানোটেশন ব্যবহার করতে সহায়তা করে। এগুলি রিকোয়েস্টের প্যারামিটার বা ফর্ম ডেটাকে স্বয়ংক্রিয়ভাবে মডেল অবজেক্টে ম্যাপ করতে পারে।

@RequestParam Example (Form Data Handling):

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class UserController {

    @GetMapping("/submitForm")
    public String submitForm(@RequestParam("username") String username, @RequestParam("age") int age, Model model) {
        model.addAttribute("username", username);
        model.addAttribute("age", age);
        return "userProfile";
    }
}
  • @RequestParam: এই অ্যানোটেশনটি রিকোয়েস্ট প্যারামিটার থেকে ডেটা গ্রহণ করতে ব্যবহৃত হয়।
View Example (userProfile.jsp):
<!-- /WEB-INF/views/userProfile.jsp -->
<html>
    <body>
        <h1>Profile</h1>
        <p>Username: ${username}</p>
        <p>Age: ${age}</p>
    </body>
</html>

@ModelAttribute Example (Form Binding):

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ModelAttribute;

@Controller
public class UserController {

    @PostMapping("/addUser")
    public String addUser(@ModelAttribute User user, Model model) {
        // The 'user' object is automatically populated from the form data
        model.addAttribute("user", user);
        return "userDetails";
    }
}
  • @ModelAttribute: ফর্ম থেকে আসা ডেটাকে কাস্টম পিওজিও (POJO) অবজেক্টে ম্যাপ করতে ব্যবহৃত হয়।
Form Example (addUser.jsp):
<form action="/addUser" method="POST">
    <input type="text" name="name" />
    <input type="text" name="age" />
    <button type="submit">Submit</button>
</form>

Conclusion

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

Content added By
Promotion

Are you sure to start over?

Loading...