Spring MVC (Model-View-Controller) Framework

Java Technologies - স্প্রিং (Spring)
133
133

Spring MVC হল স্প্রিং ফ্রেমওয়ার্কের একটি অত্যন্ত জনপ্রিয় এবং শক্তিশালী অংশ, যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। এটি Model-View-Controller (MVC) আর্কিটেকচার প্যাটার্ন অনুসরণ করে, যা অ্যাপ্লিকেশনের বিভিন্ন অংশকে আলাদা করে পরিচালনা করতে সাহায্য করে। Spring MVC ব্যবহার করে আপনি ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে আপনার অ্যাপ্লিকেশনটি সহজে মডুলার, রক্ষণাবেক্ষণযোগ্য এবং স্কেলেবল হয়ে ওঠে।


Spring MVC এর মূল উপাদানসমূহ

Spring MVC আর্কিটেকচারে তিনটি প্রধান অংশ থাকে:

  1. Model:
    • Model হল সেই অংশ যা ডেটা বা ব্যবসায়িক লজিক ধারণ করে। এটি সাধারণত Java Beans, DTOs (Data Transfer Objects) বা Entity ক্লাস হতে পারে, যা ডেটা সংরক্ষণ এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়।
  2. View:
    • View হল ইউজার ইন্টারফেস, যা মডেল ডেটা ব্যবহার করে HTML, JSP, বা অন্য কোন ফরম্যাটে প্রদর্শিত হয়। View এক্সপোজ করে মডেল ডেটাকে ব্যবহারকারীকে দেখানোর জন্য।
  3. Controller:
    • Controller হল সেই অংশ যা Model এবং View এর মধ্যে যোগাযোগ স্থাপন করে। এটি ইউজারের ইনপুট গ্রহণ করে, ব্যবসায়িক লজিক প্রয়োগ করে এবং সঠিক ভিউ রিটার্ন করে।

Spring MVC এর কাজের প্রক্রিয়া

Spring MVC এর কাজের প্রক্রিয়া সাধারণত নিচের ধাপগুলো অনুসরণ করে:

  1. Request: ইউজার HTTP রিকোয়েস্ট পাঠায় (যেমন, URL টাইপ বা ফর্ম সাবমিট)।
  2. DispatcherServlet: স্প্রিং কন্টেইনারে DispatcherServlet রিকোয়েস্ট গ্রহণ করে, যা কন্ট্রোলারকে ডিরেক্ট করে।
  3. Controller: কন্ট্রোলার ইউজারের ইনপুট প্রক্রিয়া করে এবং প্রাসঙ্গিক মডেল তৈরি করে।
  4. Model: কন্ট্রোলার মডেল তৈরি করে এবং ModelAndView অবজেক্টে সেট করে।
  5. View Resolver: DispatcherServlet ভিউ রেজলভার ব্যবহার করে সঠিক ভিউ নির্বাচন করে।
  6. View: ভিউ তৈরি হয় এবং ইউজারের কাছে প্রদর্শিত হয়।

Spring MVC এর মৌলিক কনফিগারেশন

স্প্রিং MVC কনফিগার করার জন্য, একটি সাধারণ কনফিগারেশন ক্লাস এবং DispatcherServlet ব্যবহার করা হয়। সাধারণভাবে, আপনি XML কনফিগারেশন বা Java-based কনফিগারেশন ব্যবহার করতে পারেন। এখানে একটি উদাহরণ দেওয়া হয়েছে যেখানে Java-based কনফিগারেশন ব্যবহার করা হয়েছে।

Step 1: Spring DispatcherServlet Configuration

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
    }

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

এখানে:

  • @EnableWebMvc: স্প্রিং MVC কনফিগারেশন সক্রিয় করার জন্য ব্যবহার করা হয়।
  • @ComponentScan: স্প্রিং কনটেইনারে অটোমেটিকভাবে কম্পোনেন্ট স্ক্যান করা হবে, বিশেষ করে কন্ট্রোলার, সার্ভিস ইত্যাদি।
  • InternalResourceViewResolver: এটি ভিউ রেজলভারের একটি প্রকার যা JSP পেজ রিটার্ন করতে ব্যবহৃত হয়।

Step 2: Controller Class

@Controller
public class HomeController {

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

এখানে:

  • @Controller: স্প্রিং MVC কন্ট্রোলার ক্লাসটি চিহ্নিত করার জন্য ব্যবহৃত হয়।
  • @RequestMapping: এটি URL পাথের সাথে কন্ট্রোলার মেথড সম্পর্কিত করে।

Step 3: View (JSP)

home.jsp:

<!DOCTYPE html>
<html>
<head>
    <title>Spring MVC Example</title>
</head>
<body>
    <h2>${message}</h2>
</body>
</html>

এখানে, ${message} ব্যবহার করে মডেল থেকে ডেটা আনা হচ্ছে এবং এটি ভিউতে দেখানো হচ্ছে।

Step 4: Web.xml Configuration

<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_3_0.xsd"
         version="3.0">

    <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 কে কনফিগার করা হয়েছে যাতে এটি সমস্ত রিকোয়েস্ট হ্যান্ডেল করে এবং কন্ট্রোলারকে ডিরেক্ট করে।


Spring MVC এর Advantages

  1. Separation of Concerns (SoC):
    • Spring MVC এ Model, View, এবং Controller আলাদা করা থাকে, যার ফলে কোডটি পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য হয়।
  2. Flexible View Options:
    • Spring MVC বিভিন্ন ভিউ প্রযুক্তি (JSP, Thymeleaf, FreeMarker) সহ কাজ করতে পারে, এবং আপনাকে আপনার অ্যাপ্লিকেশনের জন্য উপযুক্ত ভিউ প্রযুক্তি নির্বাচন করতে সক্ষম করে।
  3. Easy to Test:
    • স্প্রিং MVC অ্যাপ্লিকেশনগুলো সহজে ইউনিট টেস্ট করা যায়, কারণ কন্ট্রোলারগুলো আলাদা এবং স্বতন্ত্রভাবে টেস্ট করা সম্ভব।
  4. Integrated with Other Spring Modules:
    • স্প্রিং MVC অন্যান্য স্প্রিং মডিউলের (যেমন Spring Security, Spring Data, Spring AOP) সঙ্গে সহজে ইন্টিগ্রেট হতে পারে।
  5. Comprehensive Support for RESTful Services:
    • Spring MVC RESTful Web Services সহজে তৈরি করতে সহায়তা করে, এবং এটি JSON/XML ফরম্যাটে ডেটা প্রেরণ এবং গ্রহণ করতে সমর্থ।

Conclusion

স্প্রিং MVC একটি শক্তিশালী ফ্রেমওয়ার্ক যা Model-View-Controller আর্কিটেকচার প্যাটার্ন অনুসরণ করে ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। এটি স্প্রিং কনটেইনারের মাধ্যমে Dependency Injection এবং IoC (Inversion of Control) ধারণা ব্যবহার করে সহজ, মডুলার, এবং রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। DispatcherServlet, Controller, Model, এবং View এর মাধ্যমে স্প্রিং MVC সহজভাবে ওয়েব রিকোয়েস্ট পরিচালনা করে এবং ফলস্বরূপ, আধুনিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে কার্যকর হয়।

Content added By

Spring MVC কি এবং কেন এটি গুরুত্বপূর্ণ?

75
75

Spring MVC হলো স্প্রিং ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ মডিউল, যা Model-View-Controller (MVC) ডিজাইন প্যাটার্নের ভিত্তিতে তৈরি। এটি একটি ওয়েব ফ্রেমওয়ার্ক, যা ওয়েব অ্যাপ্লিকেশন তৈরিতে ব্যবহৃত হয়। Spring MVC ডেভেলপারদের সহজে ওয়েব অ্যাপ্লিকেশন তৈরি এবং মেইনটেন করতে সাহায্য করে।

MVC আর্কিটেকচারের ভূমিকা:

  1. Model: ডেটা এবং ব্যবসায়িক লজিক পরিচালনা করে।
  2. View: ডেটা প্রদর্শন করে, সাধারণত HTML বা JSP-এর মাধ্যমে।
  3. Controller: ক্লায়েন্টের অনুরোধ গ্রহণ করে এবং মডেল ও ভিউয়ের মধ্যে সমন্বয় করে।

Spring MVC কেন গুরুত্বপূর্ণ?

1. Separation of Concerns

  • Spring MVC মডেল, ভিউ, এবং কন্ট্রোলারের মধ্যে পরিষ্কার আলাদা কাজ ভাগ করে।
  • এটি কোডের মডুলারিটি বাড়ায় এবং রক্ষণাবেক্ষণ সহজ করে।

2. আনন্দময় Configuration

  • স্প্রিং-এর Dependency Injection (DI) ব্যবহার করে সহজ কনফিগারেশন নিশ্চিত করা যায়।
  • Spring Boot-এর মাধ্যমে Spring MVC সেটআপ আরও দ্রুত হয়।

3. Annotation-Based Approach

  • @Controller, @RequestMapping ইত্যাদি অ্যানোটেশনের মাধ্যমে কোড আরও রিডেবল এবং সহজ হয়।

4. ইন্টিগ্রেশন সহজ

  • Spring MVC সহজেই অন্যান্য স্প্রিং মডিউল (Spring Security, Spring Data) এবং থার্ড-পার্টি টুলের সাথে ইন্টিগ্রেট হয়।

5. Flexible View Resolution

  • এটি JSP, Thymeleaf, FreeMarker এবং অন্যান্য ভিউ টেমপ্লেট ইঞ্জিন সমর্থন করে।

6. REST API Development

  • Spring MVC RESTful ওয়েব সার্ভিস তৈরি করতে সাহায্য করে।

Spring MVC আর্কিটেকচারের মূল উপাদান

  1. DispatcherServlet:
    • সমস্ত ইনকামিং রিকোয়েস্ট গ্রহণ করে এবং রিকোয়েস্টকে সঠিক কন্ট্রোলারের কাছে ফরোয়ার্ড করে।
  2. Controller:
    • রিকোয়েস্ট প্রসেস করে এবং মডেল এবং ভিউয়ের মধ্যে সমন্বয় করে।
  3. Model:
    • ডেটা স্টোর এবং ব্যবসায়িক লজিক নিয়ে কাজ করে।
  4. View:
    • ডেটা প্রদর্শনের জন্য টেমপ্লেট সরবরাহ করে।

উদাহরণ: Spring MVC ব্যবহার

Step 1: Maven ডিপেনডেন্সি

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.0</version>
</dependency>

Step 2: Controller তৈরি

HomeController.java

@Controller
public class HomeController {

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

Step 3: View তৈরি

home.jsp

<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

Step 4: Configuration

AppConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class AppConfig implements WebMvcConfigurer {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

WebInitializer.java

public class WebInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.register(AppConfig.class);

        DispatcherServlet dispatcherServlet = new DispatcherServlet(context);
        ServletRegistration.Dynamic registration = servletContext.addServlet("dispatcher", dispatcherServlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/");
    }
}

Spring MVC এর গুরুত্বপূর্ণ বৈশিষ্ট্য

  1. Flexible Configuration: XML এবং Java Config উভয় পদ্ধতিতে কাজ করে।
  2. Exception Handling: কাস্টম এক্সেপশন হ্যান্ডলিং সহজ।
  3. Form Handling: ইনবিল্ট সাপোর্ট আছে ফর্ম প্রসেসিং-এর জন্য।
  4. Internationalization (i18n): একাধিক ভাষার সাপোর্ট।
  5. Validation Support: ডেটা ভ্যালিডেশন খুব সহজে করা যায়।

উপসংহার

Spring MVC একটি শক্তিশালী ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন তৈরির জন্য সহজ, মডুলার এবং কার্যকরী পদ্ধতি সরবরাহ করে। এটি মডেল, ভিউ এবং কন্ট্রোলারের মধ্যে পরিষ্কার বিভাজন নিশ্চিত করে এবং REST API ডেভেলপমেন্ট থেকে শুরু করে ফ্রন্ট-এন্ড ইন্টিগ্রেশন পর্যন্ত বিভিন্ন সুবিধা প্রদান করে।


Content added By

DispatcherServlet এর কাজ এবং তার সাথে Controller, Model, View এর সম্পর্ক

68
68

Spring ফ্রেমওয়ার্কে DispatcherServlet হলো Spring Web MVC আর্কিটেকচারের কেন্দ্রীয় উপাদান। এটি ফ্রন্ট কন্ট্রোলার ডিজাইন প্যাটার্ন অনুসরণ করে, যা একটি একক এন্ট্রি পয়েন্ট হিসাবে কাজ করে এবং HTTP রিকোয়েস্ট প্রক্রিয়াকরণ পরিচালনা করে।


DispatcherServlet কী?

DispatcherServlet একটি বিশেষায়িত Servlet যা একটি ওয়েব অ্যাপ্লিকেশনে Controller, Model, এবং View এর মধ্যে সমন্বয় করে। এটি ব্যবহারকারীর রিকোয়েস্ট গ্রহণ করে, সংশ্লিষ্ট Controller-এ পাঠায়, ডেটা মডেল প্রস্তুত করে এবং অবশেষে একটি ভিউতে রেসপন্স রেন্ডার করে।


DispatcherServlet এর কাজ

  1. রিকোয়েস্ট গ্রহণ:
    DispatcherServlet ব্যবহারকারীর HTTP রিকোয়েস্ট গ্রহণ করে।
  2. Handler Mapping:
    রিকোয়েস্টটি কোন Controller-এর কাছে যাবে তা নির্ধারণ করে।
  3. Controller-এ পাঠানো:
    সংশ্লিষ্ট Controller রিকোয়েস্ট প্রক্রিয়াকরণ শুরু করে।
  4. মডেল তৈরি:
    Controller রিকোয়েস্ট প্রক্রিয়ার পরে একটি Model অবজেক্ট তৈরি করে ডেটা প্রস্তুত করে।
  5. View Resolver:
    DispatcherServlet নির্ধারণ করে কোন View ব্যবহার করে রেসপন্স পাঠানো হবে।
  6. Response রেন্ডারিং:
    নির্ধারিত View-তে ডেটা যুক্ত করে রেসপন্স পাঠানো হয়।

DispatcherServlet এর সাথে Controller, Model, এবং View এর সম্পর্ক

Controller

Controller হলো Spring MVC-এর একটি উপাদান, যা DispatcherServlet থেকে রিকোয়েস্ট গ্রহণ করে এবং ব্যবসায়িক লজিক প্রক্রিয়াকরণ করে।

  • কাজ:
    রিকোয়েস্ট হ্যান্ডেল করে এবং প্রাসঙ্গিক ডেটা মডেল তৈরি করে।
  • অ্যানোটেশন:
    @Controller বা @RestController ব্যবহার করা হয়।

উদাহরণ:

@Controller
public class HomeController {

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

Model

Model হলো ডেটা ধারণ করার একটি অবজেক্ট, যা View-তে পাঠানো হয়। Controller মডেল তৈরি করে ডেটা প্রস্তুত করে।

  • কাজ:
    ডেটা পাস করে যা View-তে প্রদর্শিত হয়।

উদাহরণ:

model.addAttribute("message", "Welcome to Spring MVC!");

View

View হলো ব্যবহারকারীর কাছে রেসপন্স রেন্ডার করার দায়িত্বপ্রাপ্ত অংশ। এটি সাধারণত HTML, JSP, বা Thymeleaf টেমপ্লেট ফাইলের মাধ্যমে ডেটা রেন্ডার করে।

  • কাজ:
    মডেলের ডেটা ব্যবহার করে রেসপন্স রেন্ডার করা।
  • টুল:
    Thymeleaf, JSP, FreeMarker ইত্যাদি।

উদাহরণ (Thymeleaf):

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Home</title>
</head>
<body>
    <h1 th:text="${message}"></h1>
</body>
</html>

DispatcherServlet এর কাজের ধাপ (Work Flow)

  1. ব্যবহারকারী একটি HTTP রিকোয়েস্ট পাঠায়।
  2. DispatcherServlet রিকোয়েস্ট গ্রহণ করে।
  3. Handler Mapping এর সাহায্যে নির্ধারণ করে কোন Controller রিকোয়েস্ট প্রক্রিয়া করবে।
  4. Controller রিকোয়েস্ট প্রক্রিয়াকরণ করে একটি মডেল তৈরি করে।
  5. DispatcherServlet, View Resolver-এর সাহায্যে নির্ধারণ করে কোন View ব্যবহার করা হবে।
  6. View মডেলের ডেটা ব্যবহার করে HTML রেন্ডার করে রেসপন্স পাঠায়।

DispatcherServlet এর আর্কিটেকচার

[Client] ---> [DispatcherServlet] ---> [Controller] ---> [Model] ---> [View Resolver] ---> [View] ---> [Client]

DispatcherServlet Spring MVC আর্কিটেকচারের কেন্দ্রীয় উপাদান, যা Controller, Model এবং View-এর মধ্যে সমন্বয় করে। এর মাধ্যমে ব্যবহারকারীর রিকোয়েস্ট থেকে শুরু করে রেসপন্স রেন্ডারিং পর্যন্ত পুরো প্রক্রিয়া কার্যকরভাবে সম্পন্ন হয়।

Content added By

@Controller, @RequestMapping এবং View Resolver এর ব্যবহার

83
83

Spring Framework-এর Spring MVC (Model-View-Controller) একটি অত্যন্ত জনপ্রিয় এবং শক্তিশালী ওয়েব ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। @Controller, @RequestMapping, এবং View Resolver হল Spring MVC এর গুরুত্বপূর্ণ উপাদান যা ওয়েব রিকোয়েস্ট প্রক্রিয়াকরণ এবং রেসপন্স প্রদান করতে সাহায্য করে।

এগুলির মাধ্যমে আপনি HTTP রিকোয়েস্টগুলির হ্যান্ডলিং, ভিউ রেন্ডারিং এবং ব্যবহারকারীদের জন্য ফলস্বরূপ তথ্য প্রদানের কাজ সহজভাবে করতে পারেন।


১. @Controller Annotation

Spring MVC-এ @Controller একটি ক্লাস লেভেল এনোটেশন যা controller ক্লাসকে চিহ্নিত করে, যার মাধ্যমে HTTP রিকোয়েস্টগুলি প্রক্রিয়া করা হয়। এই এনোটেশন ব্যবহৃত ক্লাসগুলো মূলত UI (User Interface) এর সাথে যোগাযোগ স্থাপন করে, এবং তারা view থেকে model এবং controller থেকে view পর্যন্ত ডেটা ট্রান্সফার করে।

@Controller এনোটেশন ক্লাসে ব্যবহৃত হয় যখন একটি ক্লাস HTTP রিকোয়েস্টের জন্য উপযুক্ত মেথডগুলির সংকলন (collection) হিসেবে কাজ করে।

ব্যবহার:

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

@Controller
public class UserController {

    @RequestMapping("/welcome")
    public String showWelcomePage() {
        return "welcome";
    }
}

ব্যাখ্যা:

  • @Controller এনোটেশন দিয়ে ক্লাসটিকে একটি controller হিসেবে চিহ্নিত করা হয়।
  • showWelcomePage() মেথডের মাধ্যমে welcome নামক view এর জন্য একটি রিটার্ন স্ট্রিং প্রদান করা হয়েছে।

২. @RequestMapping Annotation

@RequestMapping হল Spring MVC এর একটি গুরুত্বপূর্ণ এনোটেশন যা HTTP রিকোয়েস্টের জন্য মেথড নির্ধারণ করে। এটি একটি নির্দিষ্ট URL প্যাটার্নের সাথে মেথড বা ক্লাসের ম্যাপিং তৈরি করে এবং সেই অনুযায়ী রিকোয়েস্ট প্রক্রিয়া করার কাজ করে। @RequestMapping HTTP রিকোয়েস্টের বিভিন্ন টাইপ (GET, POST, PUT, DELETE) সাপোর্ট করে।

ব্যবহার:

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

@Controller
public class UserController {

    // Mapping for HTTP GET request
    @RequestMapping("/welcome")
    public String showWelcomePage() {
        return "welcome";
    }

    // Mapping for HTTP POST request
    @RequestMapping(value = "/submit", method = RequestMethod.POST)
    public String handleFormSubmission() {
        // Process form submission
        return "submissionSuccess";
    }
}

ব্যাখ্যা:

  • @RequestMapping("/welcome") রিকোয়েস্টের জন্য GET HTTP মেথড ব্যবহার করে welcome view রিটার্ন করে।
  • @RequestMapping(value = "/submit", method = RequestMethod.POST) ব্যবহার করে POST রিকোয়েস্টের জন্য একটি মেথড তৈরি করা হয়েছে, যা form data প্রসেস করে এবং একটি submissionSuccess view রিটার্ন করে।

আরো Specific Mapping:

Spring 4.3 এবং তার পরবর্তী সংস্করণে, @RequestMapping এর পরিবর্তে আরও স্পেসিফিক HTTP মেথড এনোটেশন রয়েছে, যেমন:

  • @GetMapping: GET রিকোয়েস্টের জন্য।
  • @PostMapping: POST রিকোয়েস্টের জন্য।
  • @PutMapping: PUT রিকোয়েস্টের জন্য।
  • @DeleteMapping: DELETE রিকোয়েস্টের জন্য।

উদাহরণ:

@GetMapping("/welcome")
public String showWelcomePage() {
    return "welcome";
}

৩. View Resolver

View Resolver হল একটি Spring MVC কম্পোনেন্ট যা রিকোয়েস্টের ভিত্তিতে নির্দিষ্ট view রিটার্ন করে। এটি Spring MVC অ্যাপ্লিকেশন এর মধ্যে ভিউ এবং কন্ট্রোলারের মধ্যে যোগাযোগ স্থাপন করে। View Resolver মূলত logical view name কে actual view (যেমন JSP, Thymeleaf) এর সাথে ম্যাপিং করে।

Spring-এ সাধারণত দুটি ধরনের View Resolver ব্যবহৃত হয়:

  1. InternalResourceViewResolver (JSP সহ)
  2. ThymeleafViewResolver (Thymeleaf টেমপ্লেটের জন্য)

InternalResourceViewResolver Example:

XML Configuration (view resolver configuration):

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

Java Configuration Example:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }
}

ব্যাখ্যা:

  • InternalResourceViewResolver ব্যবহার করা হচ্ছে যাতে welcome নামক view যখন রিটার্ন হয়, তখন Spring সঠিক JSP ফাইল /WEB-INF/views/welcome.jsp খুঁজে পাবে।

ThymeleafViewResolver Example:

Thymeleaf একটি জনপ্রিয় টেমপ্লেট ইঞ্জিন যা Spring Framework এর সাথে ব্যবহৃত হয়।

Java Configuration (Thymeleaf View Resolver):

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".html");
        return resolver;
    }
}

ব্যাখ্যা:

  • এই কনফিগারেশনে view resolver welcome.html টেমপ্লেটকে /WEB-INF/views/ ডিরেক্টরির মধ্যে খুঁজে পাবে।

@Controller, @RequestMapping এবং View Resolver এর মধ্যে সম্পর্ক

  1. @Controller এনোটেশন ক্লাসগুলিকে কন্ট্রোলার হিসেবে চিহ্নিত করে, যেখানে HTTP রিকোয়েস্টের জন্য হ্যান্ডলার মেথড থাকে।
  2. @RequestMapping ব্যবহার করে, আপনি HTTP রিকোয়েস্টের জন্য নির্দিষ্ট মেথড এবং URL প্যাটার্ন ম্যাপ করেন।
  3. View Resolver কন্ট্রোলারের রিটার্ন করা logical view name (যেমন welcome) কে নির্দিষ্ট ফিজিকাল ভিউ (যেমন welcome.jsp বা welcome.html) এর সাথে ম্যাপ করে, এবং সেই ভিউ টেমপ্লেট রেন্ডার করে ব্যবহারকারীকে রেসপন্স প্রদান করে।

Example Scenario:

Controller Class:

@Controller
public class UserController {

    @RequestMapping("/home")
    public String showHomePage() {
        return "home"; // Logical view name (will be resolved to /WEB-INF/views/home.jsp)
    }

    @RequestMapping("/profile")
    public String showProfilePage() {
        return "profile"; // Logical view name (will be resolved to /WEB-INF/views/profile.jsp)
    }
}

XML Configuration for View Resolver:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

Folder Structure:

/WEB-INF/views/home.jsp
/WEB-INF/views/profile.jsp

সারাংশ

  1. @Controller: HTTP রিকোয়েস্ট হ্যান্ডলিং ক্লাসগুলির জন্য ব্যবহৃত হয়।
  2. @RequestMapping: HTTP রিকোয়েস্টের সাথে মেথড এবং URL ম্যাপ করতে ব্যবহৃত হয়।
  3. View Resolver: logical view name কে physical view (JSP, HTML) এ রূপান্তর করতে ব্যবহৃত হয়, যাতে সঠিক ভিউ ফাইল রেন্ডার করা যায়।

এই উপাদানগুলো একসাথে কাজ করে Spring MVC অ্যাপ্লিকেশনে রিকোয়েস্ট প্রসেসিং এবং ভিউ রেন্ডারিং প্রক্রিয়াকে সহজ এবং কার্যকরী করে তোলে।

Content added By

উদাহরণ সহ Spring MVC এর বেসিক টিউটোরিয়াল

84
84

Spring MVC (Model-View-Controller) হল স্প্রিং ফ্রেমওয়ার্কের একটি কম্পোনেন্ট যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। এটি একটি শক্তিশালী এবং হালকা ওয়েব ফ্রেমওয়ার্ক, যা Model, View, এবং Controller আর্কিটেকচার প্যাটার্ন অনুসরণ করে। Spring MVC ডেভেলপারদের ডাইনামিক ওয়েব পেজ তৈরিতে সাহায্য করে এবং এটি ডেটা বেস বা অন্যান্য ওয়েব রিসোর্সের সাথে যোগাযোগের জন্য শক্তিশালী টুলস সরবরাহ করে।

এই টিউটোরিয়ালে আমরা Spring MVC এর বেসিক কনফিগারেশন এবং একটি সিম্পল অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়া দেখাবো।


Spring MVC এর মৌলিক কাঠামো

Spring MVC মূলত ৩টি প্রধান উপাদানের মাধ্যমে কাজ করে:

  1. Model: অ্যাপ্লিকেশনের ডেটা বা ব্যবসায়িক লজিক (business logic) ধারণ করে।
  2. View: ইউজার ইন্টারফেস, যেখানে ডেটা প্রদর্শিত হয়।
  3. 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 অ্যানোটেশন ব্যবহার করে স্প্রিং এমভিসি অ্যাপ্লিকেশন কনফিগারেশন দেখেছি।

স্প্রিং এমভিসি একটি শক্তিশালী ফ্রেমওয়ার্ক যা দ্রুত ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য আদর্শ এবং এতে ডেটা প্রোসেসিং, ভিউ রেন্ডারিং এবং রিকোয়েস্ট-রেসপন্স ম্যানেজমেন্ট অনেক সহজ হয়ে থাকে।


Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion