Java Language – 104 – Spring MVC

Understanding Spring MVC in the Spring Framework

Spring MVC (Model-View-Controller) is a key component of the Spring Framework, focused on building web applications. It provides a robust and flexible framework for creating web-based applications, making it a popular choice for Java web development. In this article, we’ll delve into the world of Spring MVC and explore its core concepts and functionalities.

Introduction to Spring MVC

Spring MVC is an architectural pattern used for designing and developing web applications. It separates the application into three main components:

1. Model

The model represents the application’s data and business logic. It is responsible for managing the application’s state and business rules.

2. View

The view is responsible for rendering the data to the user. It presents the information from the model to the user in a suitable format, often as HTML pages.

3. Controller

The controller acts as an intermediary between the model and the view. It processes user requests, updates the model, and selects the appropriate view for rendering the response.

Key Features of Spring MVC

Spring MVC offers several features that make it a popular choice for web application development:

1. DispatcherServlet

The DispatcherServlet is a front controller in Spring MVC that handles all incoming requests. It routes requests to the appropriate controllers, views, and provides a central point for request processing.

2. Annotated Controllers

Spring MVC supports the creation of controllers using annotations, making it easy to define request mappings and handle HTTP requests. This approach simplifies the development of web applications.

3. View Resolvers

Spring MVC uses view resolvers to map logical view names to actual view implementations. This allows developers to switch views without changing controller code.

4. Data Binding and Validation

Spring MVC provides robust data binding and validation mechanisms. You can easily bind form data to model objects and validate user inputs using annotations or custom validators.

Example of a Spring MVC Controller

Let’s look at a simple Spring MVC controller that handles a GET request and returns a view.


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

@Controller
public class HelloController {
    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "hello";
    }
}

In this example, we create a controller class using the @Controller annotation. The @GetMapping annotation defines a handler method for HTTP GET requests. The sayHello method adds a “message” attribute to the model and returns the logical view name “hello.”

Configuring Spring MVC

To set up Spring MVC, you typically configure it using a Spring configuration file (XML-based or Java-based). The configuration file defines the components, view resolvers, and other settings for your application.

View Templates in Spring MVC

Spring MVC supports various view technologies, including JSP (JavaServer Pages), Thymeleaf, and FreeMarker. You can choose the view template technology that best suits your project requirements.

Example of a JSP View

Here’s a simple JSP view file that displays the “message” attribute from the model:


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

The JSP file uses the ${message} expression language to display the value of the “message” attribute passed from the controller.

Conclusion

Spring MVC is a versatile framework for building web applications in Java. It follows the Model-View-Controller architectural pattern, allowing you to create well-structured and maintainable web applications. With features like the DispatcherServlet, annotated controllers, and various view templates, Spring MVC simplifies web development and offers flexibility for building a wide range of web-based applications.