Spring MVC (Model-View-Controller) হল স্প্রিং ফ্রেমওয়ার্কের একটি কম্পোনেন্ট যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। এটি একটি শক্তিশালী এবং হালকা ওয়েব ফ্রেমওয়ার্ক, যা Model, View, এবং Controller আর্কিটেকচার প্যাটার্ন অনুসরণ করে। Spring MVC ডেভেলপারদের ডাইনামিক ওয়েব পেজ তৈরিতে সাহায্য করে এবং এটি ডেটা বেস বা অন্যান্য ওয়েব রিসোর্সের সাথে যোগাযোগের জন্য শক্তিশালী টুলস সরবরাহ করে।
এই টিউটোরিয়ালে আমরা Spring MVC এর বেসিক কনফিগারেশন এবং একটি সিম্পল অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়া দেখাবো।
Spring MVC এর মৌলিক কাঠামো
Spring MVC মূলত ৩টি প্রধান উপাদানের মাধ্যমে কাজ করে:
- Model: অ্যাপ্লিকেশনের ডেটা বা ব্যবসায়িক লজিক (business logic) ধারণ করে।
- View: ইউজার ইন্টারফেস, যেখানে ডেটা প্রদর্শিত হয়।
- Controller: ইউজারের রিকোয়েস্ট গ্রহণ করে এবং সঠিক মডেল ও ভিউ প্রদান করে।
এখন, আমরা একটি বেসিক Spring MVC অ্যাপ্লিকেশন তৈরি করার জন্য প্রয়োজনীয় ধাপগুলো দেখে নেব।
Step-by-Step Spring MVC বেসিক টিউটোরিয়াল
১. Spring MVC প্রজেক্ট তৈরি করা
প্রথমে, স্প্রিং মেভি সি অ্যাপ্লিকেশন তৈরি করার জন্য মেভেন (Maven) অথবা গ্রেডল (Gradle) ব্যবহার করতে হবে। আমরা মেভেন ব্যবহার করব এবং আমাদের pom.xml ফাইলটি কনফিগার করব।
pom.xml কনফিগারেশন:
<dependencies>
<!-- Spring Web MVC dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.9</version>
</dependency>
<!-- JSP dependency for View Rendering -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- Apache Commons for file handling (optional) -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Spring Context dependency for component scanning -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
</dependencies>
এই কনফিগারেশনটি স্প্রিং ওয়েব এমভিসি এবং JSP (Java Server Pages) রেন্ডারিংয়ের জন্য প্রয়োজনীয় লাইব্রেরিগুলি ইম্পোর্ট করবে।
২. Spring MVC কনফিগারেশন (Java Configuration)
এখন, আমাদের Spring MVC কনফিগারেশন ফাইল তৈরি করতে হবে। DispatcherServlet স্প্রিং এমভিসি রিকোয়েস্ট হ্যান্ডলিংয়ের জন্য কাজ করে।
DispatcherServlet কনফিগারেশন:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebConfig implements WebMvcConfigurer {
// Define view resolver to resolve JSP pages
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
এখানে:
- @EnableWebMvc অ্যানোটেশনটি স্প্রিং এমভিসি কনফিগারেশন সক্রিয় করে।
- InternalResourceViewResolver ব্যবহার করে স্প্রিংকে জানান দেওয়া হয় যে ভিউ (JSP ফাইল) কোথায় রাখা হবে।
web.xml কনফিগারেশন (DispatcherServlet):
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- Spring DispatcherServlet Configuration -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
এখানে, DispatcherServlet মেপিং করা হয়েছে যাতে সব রিকোয়েস্টের জন্য এটি কাজ করে।
৩. Controller তৈরি করা
এখন একটি Controller তৈরি করি যা ইউজারের রিকোয়েস্ট গ্রহণ করবে এবং একটি ভিউ রিটার্ন করবে।
উদাহরণ: SimpleController
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/home")
public class SimpleController {
@GetMapping
public String showHomePage() {
return "home"; // This will resolve to /WEB-INF/views/home.jsp
}
}
এখানে, @Controller অ্যানোটেশনটি স্প্রিংকে জানায় যে এই ক্লাসটি একটি কন্ট্রোলার। @RequestMapping এবং @GetMapping ব্যবহার করে /home URL প্যাটার্নের জন্য মেথডটি সংযুক্ত করা হয়েছে।
৪. View (JSP) তৈরি করা
এখন একটি সিম্পল JSP পেজ তৈরি করা হবে যা home নামক ভিউ রিটার্ন করবে।
উদাহরণ: home.jsp (View)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Spring MVC Example</title>
</head>
<body>
<h1>Welcome to Spring MVC!</h1>
<p>This is the home page.</p>
</body>
</html>
এটি একটি সিম্পল HTML পেজ যা home ভিউ হিসেবে রেন্ডার হবে।
৫. Spring MVC অ্যাপ্লিকেশন রান করা
এখন আপনি স্প্রিং কনফিগারেশন এবং Spring MVC কন্ট্রোলার তৈরি করার পর অ্যাপ্লিকেশন রান করতে পারেন। আপনাকে অ্যাপ্লিকেশনটি একটি Servlet Container (যেমন Tomcat) এ ডিপ্লয় করতে হবে। আপনার URL হবে http://localhost:8080/your-app/home এবং এই রিকোয়েস্টে home.jsp পেজ রেন্ডার হবে।
সারাংশ
এটি ছিল একটি বেসিক Spring MVC অ্যাপ্লিকেশন তৈরির টিউটোরিয়াল, যেখানে আমরা:
- DispatcherServlet কনফিগারেশন,
- Controller তৈরি করা,
- JSP ভিউ রেন্ডারিং, এবং @Configuration অ্যানোটেশন ব্যবহার করে স্প্রিং এমভিসি অ্যাপ্লিকেশন কনফিগারেশন দেখেছি।
স্প্রিং এমভিসি একটি শক্তিশালী ফ্রেমওয়ার্ক যা দ্রুত ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য আদর্শ এবং এতে ডেটা প্রোসেসিং, ভিউ রেন্ডারিং এবং রিকোয়েস্ট-রেসপন্স ম্যানেজমেন্ট অনেক সহজ হয়ে থাকে।
Read more