Call : +11234567895

Spring MVC Example Using JSTL

This article teaches how to enhance view rendering in a Spring MVC application by incorporating JSTL using practical examples.

Spring MVC Example Using JSTL

Spring MVC is a powerful framework that simplifies the development of web applications. When combined with JSTL (JavaServer Pages Standard Tag Library), it becomes even more convenient to create dynamic and interactive web pages. This article will walk through a step-by-step example of building a Spring MVC application with JSTL integration, showcasing how to leverage JSTL tags to enhance the presentation layer of a web application.

Before diving into the example, it is necessary to have a basic understanding of Java, Spring MVC, and JSP (JavaServer Pages). It would also be helpful to have a working knowledge of HTML and CSS.

Step 1: Setup and Configuration

One must begin by setting up a new Spring MVC project in their preferred IDE. The user must have the necessary dependencies, including the Spring MVC and JSTL libraries, configured in their project's build file (e.g., Maven or Gradle).

Step 2: Configuring the Dispatcher Servlet

To make the Spring MVC application work smoothly, it is important to configure the Dispatcher Servlet properly. The Dispatcher Servlet acts as the entry point for all incoming requests and plays a crucial role in handling the request flow.

  1. Create a Dispatcher Servlet Configuration Class
    One must create a new Java class that extends the AbstractAnnotationConfigDispatcherServletInitializer class. This class will handle the configuration of the Dispatcher Servlet. It can be called an AppInitializer. Here's an example:
  1. Create a Configuration Class
    Next, one has to create a configuration class that defines the necessary beans for their application. This class will serve as the replacement for the traditional XML-based configuration. For demonstration, it can be called AppConfig. Here's an example:
  1. Configure the Dispatcher Servlet in web.xml
    To complete the configuration, one needs to add the following XML snippet to their web.xml file:

Step 3: Create a Controller

Creating a controller class comes next. This controller will handle the incoming requests and prepare the data to be displayed in the view. For example, the user can create  a HomeController with a simple method that returns a list of fruits:

Step 4: Setup View Resolver

In a Spring MVC application, it is the View Resolver's job to turn the logical view names that the controllers return into real view implementations. It is a key part of how the response to the user interface is shown.

  1. Add Dependencies
    First, the user must ensure that necessary dependencies are added to their project configuration. Maven users can include the following dependencies in the pom.xml file:
  1. Configure the View Resolver
    Next comes configuring the View Resolver to define the location and type of views to be resolved. Typically, one will define the view resolver in their Spring configuration file (e.g., dispatcher-servlet.xml or using Java-based configuration).

XML Configuration Example:

Java-based Configuration Example:

The above examples displayed the use of InternalResourceViewResolver, which resolves the logical view names to JSP files. The prefix property specifies the directory where the views are located and the suffix property defines the file extension of the views.

  1. Create Views
    Next, the user will make a JSP file that will be their home page's view. In this example, let's make a file called "home.jsp" and put it in the right folder inside the web app folder for the project. One can iterate through the list of fruits and show them in the JSP file by using JSTL tags:

4. Return View Names from Controllers
In the controller methods, one must return the logical view names instead of the actual view names. The View Resolver will take care of resolving the logical view names to the corresponding JSP files based on the configuration.

For example, in the controller method, one may return a logical view name like this:

Step 5: Create Data Transfer Objects (DTOs)

When developing a Spring MVC application, it's a good practice to use DTOs (Data Transfer Objects) to encapsulate the data exchanged between the controller and the view. DTOs help in decoupling the view from the underlying data model and provide a clear structure for data transfer. This section will create a simple DTO for their fruit example.

  1. Create a FruitDTO Class
    One can begin by creating a new Java class called FruitDTO. This class will represent the DTO for their fruit data. After this, the necessary attributes and getter/setter methods needs to be added:
  1. Modify the Controller Method
    User needs to update the controller method to use the FruitDTO class. The home() method in the HomeController class must be modified as follows:

Instead of using a list of strings, the above example demonstrates the use of a list of FruitDTO objects to encapsulate the fruit data.

  1. Update the View
    The view (home.jsp) needs to be updated to access the attributes of the FruitDTO class. Next, the user has to modify the c:forEach loop to access the name and color attributes:

By accessing the name and color attributes of the FruitDTO class, users can display the corresponding information for each fruit.

Step 6: Run the Application

Finally, after the application server starts, the user must navigate to the specified URL (e.g., http://localhost:8080/). The home page is rendered with the list of fruits dynamically displayed using JSTL.

How JSTL Solves the Reference Problem?

When working with arrays or collections in JSP views, it is common to run into a problem where accessing the elements gives users their references instead of their actual content. In the Spring MVC example, JSTL saves the day by fixing this problem and displaying the correct content of the fruit array.

When one tries displaying the fruits using ${fruit}, it renders the references to the fruit objects instead of their actual content. This happens because the default behavior of JSP is to call the toString() method on each object, which returns the reference. As a result, users see something like com.example.Fruit@123abc instead of the actual fruit names.

Using JSTL to display content provides a convenient solution to this problem. By utilizing JSTL tags, one can access and display the content of the fruit array directly. In the modified code, ${fruit} was replaced with ${fruit} within the <li> tags.


By doing so, JSTL automatically calls the toString() method on each object and displays its content correctly. Now, instead of the object references, users see the actual fruit names like "Apple," "Banana," and "Orange."


This article deep-dived into the process of adding JSTL to a Spring MVC application to make dynamic, interactive web pages. This simplified the presentation layer and improved the user experience by combining JSTL tags with Spring MVC. To get the most out of Spring MVC and JSTL when building solid web applications, trial and error is the correct approach.

By following this example and understanding the ideas behind it, organizations can now use JSTL effectively in their Spring MVC projects, taking their web development skills to the next level.

For more in-depth tutorials and hands-on learning opportunities, one can consider enrolling in the courses offered by Cogent University. T

What’s a Rich Text element?

The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.

Static and dynamic content editing

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!

How to customize formatting for each rich text

Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Ever wondered how computer programming works, but haven't done anything more complicated on the web than upload a photo to Facebook?

Then you're in the right place.

To someone who's never coded before, the concept of creating a website from scratch -- layout, design, and all -- can seem really intimidating. You might be picturing Harvard students from the movie, The Social Network, sitting at their computers with gigantic headphones on and hammering out code, and think to yourself, 'I could never do that.

'Actually, you can. ad phones on and hammering out code, and think to yourself, 'I could never do that.'

Start today and get certified in fundamental course.
We offer guaranteed placements.