JSP - Java Server Pages

3 minutes read

Tables

Overview

JavaServer Pages

JavaServer Pages is a technology for developing web pages that support dynamic content which helps developers insert java code in HTML pages by making use of special JSP tags, most of which start with <% and end with %>.

A JavaServer Pages component is a type of Java servlet that is designed to fullfill the role of a user interface for a Java web application.

Web developers write JSPs as text files that combine HTML or XHTML code, XML elements, and embeded JSP actions and commands.

Using JSP, you can collect input from users through web page forms, present records from a database or another source, and create web dynamically.

JSP tags can be used for a variety of purposes, such as retrieving information from a database or registering user preferences, accessing JavaBeans components, passing control between pages and sharing information between requests, pages etc.

Why use JSP?

JavaServer Pages often serve the same purpose as program implemented by using the Common Gateway Interface (CGI). But JSP offer several advantages in comparison with the CGI.

  • Performance is significantly better because JSP because JSP allows embedding Dynamic Elements in HTML Pages itself instead of having a separate CGI files.
  • JSP are always compiled before it’s processed by server unlike CGI/Perl which requires the server to load an interpreter and the target script each time the page is requested.
  • JavaServer Pages are build on top of the Java Servlets API, so like Servlets, JSP also has access to all the powerful Enterprise Java APIs, including JDBC, JNDI, EJB, JAXP etc.
  • JSP pages can be used in combination with servlets which handle the business logic, the model supported by Java servlet template engines.

Finally, JSP is an integral part of Java EE, a complete platform for enterprise class applications. This means that JSP can play a part in the simplest applications to the most complex and demanding.

JSP vs.

  • vs. Active Server Pages (ASP):  there are two advantages. First, the dynamic part is written in Java, not Visual Basic or other MS specific language, so it is more powerful and easier to use. Second, it is portable to other operating systems and non-Microsoft Web servers.
  • vs. Pure Servlet: It is more convenient to write (and to modify) regular HTML than to have plenty of println statements that generate the HTML.
  • vs. JavaScript: JavaScript can generate HTML dynamically on the client but can hardly interact with the web server to perform complex tasks like database access and image processing etc.
  • vs. HTML: Regular HTML, of cause, cannot contain dynamic information.

Architecture

The web server needs a JSP engine (attention, this mean that, sometimes we need to include jsp-api.jar to tomcat CLASSPATH) ie. container to process JSP pages.

The JSP container is responsible for intercepting requests for JSP pages.

Following diagram shows the position of JSP container and JSP files in a web application.

Typical Web server supporting JSP

JSP Processing

  1. As with a normal page, your browser sends an HTTP request to the web server.
  2. The web server recognized that the HTTP request is for a JSP page and forwards it to a JSP engine.
  3. The JSP engine loads the JSP page from disk and converts it into a servlet content.
  4. The JSP engine compiles the servlet into an executable class and forwards the original request to a servlet engine.
  5. A part of the web server called servlet engine loads the servlet class and executes it. During execution, the servlet produces an output in HTML format, which the servlet engine passes to the web server inside an HTTP response.
  6. The web server forwards the HTTP response to your browser in terms of static HTML content.
  7. Finally web browser (client) handles the dynamically generated HTML page inside the HTTP response exactly as if it were a static page.

Diagram JSP processing

Typically, the JSP engine checks to see whether a servlet for a JSP file alreadly exists and whether the modification date on the JSP is older than the servlet. If the JSP is older than its generated servlet, the JSP container assumes that the JSP hasn’t changed –> the generated servlet still matches the JSP’s contents. This makes the process more efficient than other scripting languages (such as PHP) and therefore faster.

So in a way, a JSP page is really just another way to write servlet without having to be a Java programming wiz. Except for the translation phrase, a JSP page is handled exactly like a regular servlet.

References

Leave a Comment