A clear understanding of the JSP engine and its architecture is crucial for understanding how JSP pages function internally. This tutorial explores the structure of JSP and explains how web servers handle JSP pages.

What Is JSP Architecture?

JSP architecture is a 3-tier architecture that separates a web application's presentation, logic, and data layers. The presentation layer, or client side, is responsible for displaying the user interface and handling user interaction. The logic layer, or server-side, is responsible for processing user requests and handling business logic. The data layer is responsible for storing and retrieving data from a database or other storage system. This separation of concerns allows for better maintainability and scalability of the application.

JSP Architecture

What Is a Web Container?

A JSP-based web application requires a JSP engine, also known as a web container, to process and execute the JSP pages. The web container is a web server component that manages the execution of web programs such as servlets, JSPs, and ASPs.

When a client sends a request for a JSP page, the web container intercepts it and directs it to the JSP engine. The JSP engine then converts the JSP page into a servlet class, compiles it, and creates an instance of the class. The service method of the servlet class is then called, which generates the dynamic content for the JSP page.

The web container also manages the lifecycle of the JSP pages and servlets, handling tasks such as instantiating, initializing and destroying them. Additionally, it provides security, connection pooling, and session management services to the JSP-based web application.

Components of JSP Architecture

JSP architecture is a web application development model that defines the structure and organization of a JSP-based web application. It typically consists of the following components:

  • JSP pages: These are the main building blocks of a JSP application. They contain a combination of HTML, XML, and JSP elements (such as scriptlets, expressions, and directives) that generate dynamic content.
  • Servlets: JSP pages are converted into servlets by the JSP engine. Servlets are Java classes that handle HTTP requests and generate dynamic content.
  • JSP engine (web container): This web server component is responsible for processing JSP pages. It converts JSP pages into servlets, compiles them, and runs them in the Java Virtual Machine (JVM).
  • JavaBeans: These are reusable Java classes that encapsulate business logic and data. They are used to store and retrieve information from a database or other data sources.
  • JSTL (JavaServer Pages Standard Tag Library): This is a set of predefined tags that can be used in JSP pages to perform common tasks such as iterating over collections, conditional statements, and internationalization.
  • Custom Tag Libraries: JSP allows the creation of custom tags that can be used on JSP pages. These reusable Java classes encapsulate complex logic and can generate dynamic content cleanly and consistently.

Overall, JSP architecture defines how the different components of a JSP application interact with each other and how they are organized to provide a robust and scalable web application.

JSP Architecture Flow

JSP architecture flow refers to the sequence of steps a JSP-based web application goes through to process and execute JSP pages. The general flow of a JSP architecture can be described as follows:

  1. A client (such as a web browser) sends a request for a JSP page to a web server.
  2. The web server forwards the request to the JSP engine responsible for processing JSP pages.
  3. The JSP engine checks if the requested JSP page has been compiled into a servlet. If not, it compiles the JSP page into a servlet class. This is done by parsing the JSP page and converting its elements (such as scriptlets, expressions, and directives) into Java code.
  4. The JSP engine then compiles the servlet class, which creates a Java class file that can be executed by the Java Virtual Machine (JVM).
  5. The JSP engine then creates an instance of the servlet class and calls the service() method, which generates the dynamic content for the JSP page. Within the service()  method, the JSP engine generates the HTML code for the response by combining the static template in the JSP page with the dynamic content generated by the Java code.
  6. The JSP engine sends the generated HTML code back to the web server, which then sends it back to the client as a response.
  7. The JSP engine also maintains a cache of the compiled servlet classes so subsequent requests for the same JSP page can be handled more efficiently.