@Controller অ্যানোটেশন এর ব্যবহার

Controller এর ভূমিকা - স্প্রিং এমভিসি (Spring MVC) - Java Technologies

306

@Controller অ্যানোটেশনটি Spring Framework-এর একটি গুরুত্বপূর্ণ অ্যানোটেশন যা Spring MVC-তে কন্ট্রোলার ক্লাস চিহ্নিত করতে ব্যবহৃত হয়। এই অ্যানোটেশনটি Spring MVC এর কন্ট্রোলারের ভূমিকা পালন করে এবং এটি HTTP রিকোয়েস্ট হ্যান্ডলিংয়ের জন্য কন্ট্রোলার মেথড তৈরি করতে ব্যবহৃত হয়।

@Controller অ্যানোটেশনটি Spring IoC কনটেইনারে একটি কম্পোনেন্ট হিসেবে ক্লাসটিকে চিহ্নিত করে, যার মাধ্যমে এটি Spring MVC রিকোয়েস্ট-রেসপন্স সাইকেলে অংশগ্রহণ করতে সক্ষম হয়।


@Controller অ্যানোটেশন এর মূল উদ্দেশ্য:

  1. HTTP রিকোয়েস্ট হ্যান্ডলিং:
    @Controller অ্যানোটেশন ব্যবহৃত ক্লাস HTTP রিকোয়েস্ট হ্যান্ডলিংয়ের জন্য দায়িত্বপ্রাপ্ত। এটি Model-View-Controller (MVC) আর্কিটেকচার অনুযায়ী ভিউ এবং কন্ট্রোলারের মধ্যে সম্পর্ক স্থাপন করে।
  2. রাউটিং:
    @RequestMapping বা অন্যান্য HTTP মেথডের অ্যানোটেশন (যেমন @GetMapping, @PostMapping) এর সাথে ব্যবহার করে HTTP রিকোয়েস্টটি নির্দিষ্ট কন্ট্রোলার মেথডে রাউট করতে ব্যবহৃত হয়।
  3. View Selection:
    কন্ট্রোলার সাধারণত মডেল ডেটা প্রক্রিয়া করে এবং একটি ভিউ রিটার্ন করে, যা UI তে তথ্য উপস্থাপন করবে।

@Controller অ্যানোটেশন এর ব্যবহার:

1. সাধারণ কন্ট্রোলার উদাহরণ

@Controller অ্যানোটেশন ব্যবহার করে একটি সাধারণ কন্ট্রোলার তৈরি করা:

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

@Controller
public class HomeController {

    @RequestMapping("/home")
    public String home(Model model) {
        model.addAttribute("message", "Welcome to Spring MVC!");
        return "home";  // home.jsp বা home.html ভিউ রিটার্ন করবে
    }
}

এখানে:

  • @Controller অ্যানোটেশনটি HomeController ক্লাসটিকে কন্ট্রোলার হিসেবে চিহ্নিত করছে।
  • @RequestMapping("/home") রিকোয়েস্টটি /home URL-এ প্রাপ্ত হলে home() মেথডটি কল হবে।
  • model.addAttribute() ব্যবহার করে ভিউতে ডেটা পাঠানো হচ্ছে, যাতে "home" ভিউতে মেসেজ প্রদর্শিত হয়।

2. HTTP Method Mapping

Spring MVC-তে বিভিন্ন HTTP মেথড যেমন GET, POST, PUT, DELETE কন্ট্রোলারের মেথডে ম্যাপ করার জন্য @RequestMapping বা অ্যানোটেশন স্ন্যাপশট ব্যবহার করা যায়। উদাহরণস্বরূপ:

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

@Controller
public class LoginController {

    @GetMapping("/login")
    public String showLoginPage() {
        return "login";  // login.jsp বা login.html ভিউ রিটার্ন করবে
    }

    @PostMapping("/login")
    public String loginUser(String username, String password) {
        // authentication logic here
        return "welcome";  // successful login leads to welcome page
    }
}

এখানে:

  • @GetMapping("/login") GET রিকোয়েস্টের জন্য ব্যবহৃত হয়েছে যা লগইন পেজ প্রদর্শন করবে।
  • @PostMapping("/login") POST রিকোয়েস্টের জন্য ব্যবহৃত হয়েছে যা লগইন করার পরে কার্যক্রম পরিচালনা করবে।

3. PathVariable এবং RequestParam ব্যবহার

@PathVariable এবং @RequestParam ব্যবহার করে ডাইনামিক ভ্যালু সংগ্রহ করা যেতে পারে:

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class UserController {

    // @PathVariable উদাহরণ
    @RequestMapping("/user/{id}")
    public String getUserById(@PathVariable("id") int id, Model model) {
        // id দিয়ে ইউজার তথ্য অনুসন্ধান এবং মডেল পাস করা
        model.addAttribute("userId", id);
        return "userProfile";
    }

    // @RequestParam উদাহরণ
    @RequestMapping("/search")
    public String searchUser(@RequestParam("query") String query, Model model) {
        // সার্চ কুয়েরি অনুসন্ধান এবং মডেল পাস করা
        model.addAttribute("query", query);
        return "searchResults";
    }
}

এখানে:

  • @PathVariable("id") ব্যবহার করে URL প্যাথ থেকে ডাইনামিক ভ্যালু {id} সংগ্রহ করা হয়েছে।
  • @RequestParam("query") ব্যবহার করে URL প্যারামিটার থেকে query ভ্যালু সংগ্রহ করা হয়েছে।

4. ModelAttribute এবং Binding:

@ModelAttribute ব্যবহার করে ইউজারের ইনপুট বা ডেটা মডেল অবজেক্টে ব্যান্ড করা যায়।

import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UserController {

    @RequestMapping("/userForm")
    public String showForm() {
        return "userForm";  // userForm.jsp ভিউ
    }

    @RequestMapping("/submitForm")
    public String submitForm(@ModelAttribute("user") User user) {
        // মডেল অবজেক্টের ডেটা প্রক্রিয়া করা
        return "userDetails";  // userDetails.jsp ভিউ
    }
}

এখানে:

  • @ModelAttribute("user") ব্যবহার করে User অবজেক্টকে ফর্ম ডেটা মডেল হিসেবে ব্যান্ড করা হয়েছে।
  • ইউজার ইনপুট সংগ্রহের পর সেই ইনপুট User অবজেক্টে ম্যাপ করা হবে।

5. Redirecting and Forwarding

Spring MVC-তে রিকোয়েস্ট রিডাইরেক্ট বা ফরওয়ার্ড করার জন্য redirect: এবং forward: প্রিফিক্স ব্যবহার করা হয়।

উদাহরণ: Redirect:

@RequestMapping("/loginSuccess")
public String loginSuccess() {
    return "redirect:/home";  // /home URL-এ রিডাইরেক্ট করবে
}

উদাহরণ: Forward:

@RequestMapping("/forwardExample")
public String forwardExample() {
    return "forward:/anotherPage";  // anotherPage পেজে ফরওয়ার্ড হবে
}

Conclusion:

Spring MVC-তে @Controller অ্যানোটেশন কন্ট্রোলার ক্লাস চিহ্নিত করে, যা HTTP রিকোয়েস্ট হ্যান্ডলিং এবং মডেল-ভিউ সম্পর্ক স্থাপন করে। এটি Spring MVC অ্যাপ্লিকেশনে ভিউ এবং কন্ট্রোলারের মধ্যে যোগাযোগ সঠিকভাবে পরিচালনা করতে সাহায্য করে। @Controller এবং অন্যান্য অ্যানোটেশন (যেমন @RequestMapping, @GetMapping, @PostMapping, @ModelAttribute) ব্যবহার করে স্পষ্টভাবে HTTP রিকোয়েস্ট হ্যান্ডলিং এবং ডেটা প্রসেসিং সম্ভব হয়।

Content added By
Promotion

Are you sure to start over?

Loading...