Java Server Pages (JSP) are server-side technologies used to create dynamic web pages by embedding Java code directly into HTML.
- JSPs are like HTML pages, but with the ability to run Java code inside them.
- The server compiles JSPs into servlets behind the scenes.
- They are mainly used for building the view layer (UI) in web applications.
In simple terms:
- A JSP file is mostly HTML with some special tags or code blocks where you can write Java.
- When a client (browser) requests a JSP page, the server converts the JSP into a servlet (a Java class).
- The servlet executes the Java code and generates HTML to send back to the browser.
Purpose of JSP:
- Simplify the process of writing server-side web pages compared to writing servlets manually.
- Separate the presentation layer (HTML/UI) from business logic (Java code).
- Allow designers (who know HTML) and developers (who know Java) to work together more easily.
Main Features:
- Direct embedding of Java code using special syntax like
<% Java code %>
. - JSP Expressions to insert values directly into the output, e.g.,
<%= variable %>
. - JSP Directives to control page settings, e.g.,
<%@ page language="java" %>
. - JSP Actions to interact with JavaBeans or include other files, e.g.,
<jsp:useBean>
,<jsp:include>
. - Tag Libraries (JSTL) allow you to avoid Java code in JSPs and write cleaner, tag-based pages.
Typical Life Cycle of a JSP:
- First Request: JSP is translated into a servlet.
- Servlet Compilation: The generated servlet is compiled into a
.class
file. - Servlet Loading: The servlet is loaded into memory.
- Request Processing: For each client request, the servlet’s
service()
method is called. - Response Generation: The servlet writes the HTML output back to the client.
Example:
Simple JSP Page (greeting.jsp
):
<html>
<body>
<h1>Hello, <%= request.getParameter("name") %>!</h1>
</body>
</html>
If you visit greeting.jsp?name=Stanley
, the server would return:
<html>
<body>
<h1>Hello, Stanley!</h1>
</body>
</html>
Why Use JSP?
- Faster and easier development of server-side UI compared to plain servlets.
- Easy access to Java classes, beans, and libraries.
- Built-in support for session management, database connectivity, etc.
- Integration with MVC frameworks like Spring MVC, Struts, or JSF.
Shortcomings:
- Mixing Java and HTML can lead to messy code if not used carefully.
- Modern applications often prefer templating engines (like Thymeleaf, Freemarker) or front-end frameworks (React, Angular) instead of JSP.
- JSP is old but still used in some legacy systems.