Spring MVC তে Request Management এবং Response Management হল ওয়েব রিকোয়েস্ট এবং রেসপন্স প্রক্রিয়া করার জন্য ব্যবহৃত উপায়। এখানে, আমরা HTTP রিকোয়েস্ট এবং রেসপন্স কিভাবে ম্যানেজ করতে পারি তা আলোচনা করব এবং উদাহরণ সহ ব্যাখ্যা করব।
1. Spring MVC Request Management:
Spring MVC তে Request ম্যানেজমেন্ট মূলত @RequestMapping, @GetMapping, @PostMapping, @RequestParam, এবং অন্যান্য অ্যানোটেশন ব্যবহার করে করা হয়। কন্ট্রোলার ক্লাসে এই অ্যানোটেশনগুলি রিকোয়েস্টের পদ্ধতি (GET, POST ইত্যাদি) এবং URL প্যাটার্ন অনুযায়ী রিকোয়েস্ট ম্যানেজ করতে সাহায্য করে।
Request Handling with @RequestMapping and @RequestParam:
Spring MVC কন্ট্রোলারে @RequestMapping অ্যানোটেশন ব্যবহৃত হয় রিকোয়েস্ট পদ্ধতি এবং URL প্যাটার্ন ম্যাপ করার জন্য। @RequestParam অ্যানোটেশন দিয়ে আপনি ইউজার দ্বারা প্রেরিত প্যারামিটার গ্রহণ করতে পারেন।
উদাহরণ: Request Management
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.ui.Model;
@Controller
@RequestMapping("/greet")
public class GreetingController {
// Request handling with @RequestMapping
@RequestMapping("/hello")
public String greetUser(@RequestParam(name = "name", required = false, defaultValue = "Guest") String name, Model model) {
model.addAttribute("message", "Hello, " + name);
return "greet"; // Return view name (greet.html)
}
// Request handling with @GetMapping
@GetMapping("/goodbye")
public String goodbyeUser(@RequestParam(name = "name", required = false, defaultValue = "Guest") String name, Model model) {
model.addAttribute("message", "Goodbye, " + name);
return "greet"; // Return view name (greet.html)
}
}
@RequestMapping("/hello"): রিকোয়েস্টের URL/greet/helloএ মেটারিক্স করবে।@RequestParam(name = "name"): URL থেকেnameপ্যারামিটার গ্রহণ করবে। যদি প্যারামিটার না পাঠানো হয়, তবেGuestডিফল্ট মান হিসেবে ব্যবহার করা হবে।Model model: মডেল ডাটা ভিউতে পাঠাতে ব্যবহৃত হয়।
View (greet.html - Thymeleaf):
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Greeting</title>
</head>
<body>
<h1 th:text="${message}"></h1> <!-- Display message -->
</body>
</html>
2. Spring MVC Response Management:
Spring MVC তে Response ম্যানেজমেন্টের জন্য মূলত কন্ট্রোলার মেথডে রিটার্ন ভ্যালু ব্যবহার করা হয়। সাধারণত, কন্ট্রোলার একটি ভিউ নাম রিটার্ন করে যা HTML ফাইল হিসেবে রেন্ডার হয়। তবে আপনি ResponseEntity অথবা @ResponseBody ব্যবহার করে JSON বা XML আউটপুটও পাঠাতে পারেন।
Response Handling with @ResponseBody:
@ResponseBody অ্যানোটেশন ব্যবহৃত হয় যাতে কন্ট্রোলার মেথড সরাসরি HTTP রেসপন্সে ডাটা পাঠাতে পারে, যেমন JSON বা XML।
উদাহরণ: Response Management with @ResponseBody
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class ResponseController {
// Return response directly as a String
@GetMapping("/message")
@ResponseBody
public String getMessage() {
return "This is a simple response message!";
}
// Return response as JSON
@GetMapping("/json")
@ResponseBody
public MyResponse getJsonResponse() {
return new MyResponse("Success", "Data fetched successfully");
}
// A simple POJO class for JSON response
public static class MyResponse {
private String status;
private String message;
public MyResponse(String status, String message) {
this.status = status;
this.message = message;
}
public String getStatus() {
return status;
}
public String getMessage() {
return message;
}
}
}
@ResponseBody: এই অ্যানোটেশনটি কন্ট্রোলারের রিটার্ন ভ্যালুকে HTTP রেসপন্সে ডিরেক্টলি রিটার্ন করার জন্য ব্যবহৃত হয়। এখানেStringবাMyResponseটাইপ রিটার্ন হতে পারে।- JSON Response:
@ResponseBodyএবং@GetMappingব্যবহৃত হয় JSON ডাটা রিটার্ন করার জন্য।
3. Request and Response with Path Variables
Spring MVC তে, URL পাথ থেকে ভ্যালু গ্রহণ করতে @PathVariable অ্যানোটেশন ব্যবহার করা হয়।
উদাহরণ: Request Management with Path Variables
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class PathVariableController {
@GetMapping("/hello/{name}")
@ResponseBody
public String greetPerson(@PathVariable("name") String name) {
return "Hello, " + name;
}
}
@PathVariable("name"): রিকোয়েস্ট URL থেকেnameভ্যালু পাথ ভেরিয়েবল হিসেবে গ্রহণ করা হয়। উদাহরণস্বরূপ, URL/hello/Johnহলে আউটপুট হবে "Hello, John"।
4. Using ResponseEntity for Custom Responses
ResponseEntity একটি কাস্টম HTTP রেসপন্স তৈরি করার জন্য ব্যবহৃত হয়। এটি HTTP স্ট্যাটাস কোড, হেডার এবং বডি সহ রেসপন্স কাস্টমাইজ করার সুযোগ দেয়।
উদাহরণ: ResponseEntity with Custom Status and Headers
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CustomResponseController {
@GetMapping("/customresponse")
public ResponseEntity<String> customResponse() {
return new ResponseEntity<>("Custom Response Message", HttpStatus.OK);
}
}
ResponseEntity: এটি HTTP রেসপন্সের বডি, স্ট্যাটাস কোড এবং হেডার কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এখানে রেসপন্স বডি হিসেবে"Custom Response Message"এবং স্ট্যাটাস কোডOK(200) পাঠানো হচ্ছে।
5. Handling Form Data in Spring MVC
Spring MVC তে ফর্ম ডাটা প্রক্রিয়া করতে, @ModelAttribute এবং @RequestParam ব্যবহার করা হয়।
উদাহরণ: Handling Form Data
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.ui.Model;
@Controller
public class FormController {
@PostMapping("/submitForm")
public String submitForm(@RequestParam(name = "username") String username, Model model) {
model.addAttribute("message", "Hello, " + username);
return "formresult"; // Return view name (formresult.html)
}
}
@RequestParam(name = "username"): ফর্মেরusernameফিল্ড থেকে ডাটা নেয়।Model model: ফর্মের ডাটা মডেল মাধ্যমে ভিউতে পাঠানো হয়।
Form Submission (form.html):
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Form Submission</title>
</head>
<body>
<form action="/submitForm" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" />
<button type="submit">Submit</button>
</form>
</body>
</html>
Result View (formresult.html):
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Form Result</title>
</head>
<body>
<h1 th:text="${message}"></h1>
</body>
</html>
উপসংহার:
Spring MVC তে Request এবং Response Management খুবই গুরুত্বপূর্ণ। @RequestMapping, @RequestParam, @PathVariable, @ResponseBody, এবং ResponseEntity এর মাধ্যমে আপনি ওয়েব রিকোয়েস্ট এবং রেসপন্স গুলি অত্যন্ত ফ্লেক্সিবলি ম্যানেজ করতে পারেন। Spring MVC এর সাহায্যে আপনি ফর্ম ডাটা গ্রহণ, কাস্টম রেসপন্স পাঠানো, এবং JSON/XML রেসপন্স সহ বিভিন্ন কাস্টম রিকোয়েস্ট প্রক্রিয়া করতে সক্ষম হবেন।
Read more