JSPs are Actually Servlets

JSPs are actually servlets. Container will convert all jsp files as servlets before executing it. By default, the JSP is compiled into a servlet and then loaded the first time it is accessed. This might cause a small delay for the first request, but there won’t be any delay in subsequent requests. You may also precompile JSPs before adding them into JARs. Certain application servers might even provide tools for doing so.

The non-java lines like html, comments, javascript, css etc. are called as template text. There will be print statements for each of these non java lines in the converted servlet.

JSP to Servlet conversion also makes the life of container easy as it needs to know to execute only servlets, which are pure java classes.

Even though JSPs are eventually converts as servlets, you cannot override the servlet life cycle methods from a JSP.

Servlets are generated from JSPS during JSP translation phase of the JSP life cycle.

The generated servlet has some special characteristics like below:

  • The servlet (or one of its superclasses) must implement the javax.servlet.jsp.HttpJspPage interface, or

  • For the tiny minority of non-HTTP, specialist JSP containers, the servlet (or one of its superclasses) must implement the javax.servlet.jsp.JspPage interface.

A container vendor will typically have a specialized JSP base servlet, extending and implementing all required classes or interfaces.

In Tomcat, this is called org.apache.jasper.runtime.HttpJspBase. HttpJspBase extends HttpServlet and GenericServlet, and implements javax.servlet.jsp.HttpJspPage, javax.servlet.jsp.JspPage, java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig.

This generated servlet also has additional methods specific to JSPs which are related to the JSP life cycle.

In Tomcat, the generated servlet's Java source and compiled class, by default, is kept @ <Tomcat-Installation-Directory>/work/Catalina/localhost/<context-directory>/org/apache/jsp. For instance if your url is http://localhost:8080/JSP-Demo/simplejsp.jsp, you can find the source and class of the servlet @ <Tomcat-Installation-Directory>/work/Catalina/localhost/JSP-Demo/org/apache/jsp.

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)