Slide 5-Java Server Pages
Slide 5-Java Server Pages
Objectives
JavaServer Pages (JSP) introduction
How JSP Works?
Basic tags
Comment
Directive
Declaration
Expression
Scriplets
Implicit Objects
Action tags
Exception handling
06/24/24 2/26
JavaServer Pages (JSP)
JavaServer Pages (JSP) technology provides a
simplified, fast way to create web pages that
display dynamically-generated content.
JSP is an extension to Servlet, provides more
functionality than servlet like EL, JSTL..
The JSP specification is an important part of the
Java 2 Platform, Enterprise Edition.
The first place to check for information on JSP
technology is
https://www.oracle.com/java/technologies/jspt.html
Presentation layer for MVC architecture: separate
the dynamic content of a Web page from its
presentation
06/24/24 3/26
JSP introduction
Middle-tier
Presentation-tier
Web Server
(Servlet Container)
HTTP
JDBC
Request
Browser
Servlet Database
(client)
1st tier Server
Response (3rd tier)
JSP
Request
06/24/24 4
JSP Page
• JSP page consists of HTML tags and JSP tags. The JSP
pages are easier to maintain than Servlet because
we can separate designing and development.
• A JSP page has the extension .jsp; this signals to the
web server that the JSP engine will process elements
on this page.
• Pages built using JSP technology are typically
implemented using a translation phase that is
performed once, the first time the page is called.
The page is compiled into a Java Servlet class and
remains in server memory, so subsequent calls to
the page have very fast response times.
06/24/24 5/26
Example
HTML tag
<HTML>
<HEAD><TITLE>MyFirstProgram.jsp</TITLE></HEAD>
Comment
<BODY> JSP
Directive
<%-- MyFirstProgram.JSP -->
JSP
<%@ page import = "java.util.Date" %> Scriptlet
JSP
<% out.println("Hello there!"); %> <Br>
Expression
Server
Server
Create
CreateServlet
Servletfrom
fromJSP
JSP File
File
Translation
Translation Changed
Changed
Servlet
ServletCompile
Compile Execute
ExecuteServlet
Servlet
06/24/24 7/26
Class Hierarchy Generated Servlet
06/24/24 8/26
JSP Lifecycle
Servlet from JSP
Init Event jspInit()
jspInit()
Request
Response
jspService()
jspService()
06/24/24 9/26
HTML Comment
• Generates a comment that is sent to the client.
Syntax
Example:
<!-- This page was loaded on
<%= (new java.util.Date()).toLocaleString() %>
-->
06/24/24 10/26
JSP Directives
• Directives are used to control how the web
container translates and executes the JSP page
• Directives have attributes that dictate their meaning
and effect. In almost all cases, the effects produced
by directives can’t be replicated using expressions,
scriptlets, or declarations.
• We’ll consider the three directives:
page,
include,
taglib.
06/24/24 11/26
The page Directive
The page directive defines attributes that apply to an
entire JSP page
<%@ page attributeName=“value" %>
Page attribute
06/24/24 12/26
The page Directive
import to create import statements in the generated
servlet source produced at translation phase.
import=“java.util.*,model.*”
contentType is a String that specifies the MIME type of
the response to be sent back. The default value is
"text/html;charset=ISO-8859-1"
contentType=“text/html;charset=UTF-8”
pageEncoding set the character encoding of the page
source.
pageEncoding=“UTF-8”
buffer sets the buffer size in kilobytesThe default size
of the buffer is 8Kb.
06/24/24 13/26
Other attributes of the page directive
06/24/24 14/26
The include Directive
• A JSP source file and the pages it includes through
the include directive are collectively referred to as a
“translation unit.”
• The file type you include doesn’t have to be JSP page
source, nor does it have to have a .jsp extension.
Once included, the file contents must make sense
to the JSP translation process, but this gives scope
to include entire HTML or XML documents, or
document fragments.
• Defining Implicit Includes with JSP property group
06/24/24 15/26
The include Directive…
<%@ include file=“relativeURL " %>
<html>
<body>
<%@ include file="header.jsp" %>
<h1>Including Page</h1>
<%@ include file="footer.html" %>
</body>
</html>
• Expressions
<%= expression%>
• Scriplets
<% java code %>
06/24/24 17/26
Declaration
• Declares variable or method valid in the scripting
language used in the JSP page.
Syntax
<%! declaration; [ declaration; ]+ ... %>
Examples
<%! String destin; %>
<%! public String getDestination()
{return destin;}%>
<%! Circle a = new Circle(2.0); %>
You can declare any number of variables or methods within one
06/24/24 18/26
Expression
• Contains an expression valid in the scripting language used
in the JSP page.
Syntax
<%= expression %>
Example
<%! String name = new String(“JSP World”); %>
<%! public String getName() { return name; } %>
<B><%= getName() %></B>
Description:
06/24/24 19/26
Scriptlet
• Contains a code fragment valid in the page scripting
language.
Syntax
<% code fragment %>
<%
String var1 = request.getParameter("name");
out.println(var1);
%>
• This code will be placed in the generated servlet method:
_jspService()
• The use of scriptlet should be limited in JSP because JSP is
mainly used for presentation
06/24/24 20/26
Predefined Variable – Implicit Objects
• request – Object of HttpServletRequest (request parameters, HTTP headers, cookies
06/24/24 21/26
Predefined Variable – Implicit Objects
06/24/24 22/26
JSP Actions
• Standard actions are used for the same purpose as
Java language-based scripting: Most if not all the
goals that you can achieve with standard actions
are achievable with other scripting elements.
• So why use them?
The answer is that they get the job done more
elegantly. They often provide an alternative to
inserting java code into your neatly designed
presentation page.
06/24/24 23/20
Standard actions general syntax
<prefix:tagname firstAttribute="value"
secondAttribute="value">
...
</prefix:tagname>
06/24/24 24/20
Dispatching action <jsp:include>
• The standard action <jsp:include> can be used to
include the response from another page within your
JSP page output.
• You specify the file whose response should be
included with the page attribute, like this:
<jsp:include page="pageToInclude.jsp" />
• The file whose response should be included has to
reside somewhere in your web application but
doesn’t have to be present until the page is actually
requested.
06/24/24 25/20
<jsp:include> vs. <%@ include %>
<jsp:include>
06/24/24 26/20
<jsp:include> vs. <%@ include %>
06/24/24 27/20
Dispatching action <jsp:forward>
• The purpose of this standard action is to forward
processing to another resource within the web
application.
<jsp:forward page=“destinationPage">
<jsp:param name=“.." value=“.." />
…
</jsp:forward>
06/24/24 28/20
JSP exception handling
Translation and compilation errors
Both the translation and the compilation phases can
yield errors that are observed only when the page is
requested for the first time.
If an error is encountered during either phase, the
server will return JasperException and a message
that includes the name of the JSP page and the line
where the error occurred.
Runtime Exception
Occurs during serving request
Catch by error page for specific exception
Define error pages for the whole web app in web.xml
06/24/24 29
JSP exception handling
The page directive in JSP provides two
attributes to be used in exception handling.
errorPage: Used to site which page to be
displayed when exception occurred
isErrorPage : Used to mark a page as an error
page where exceptions are displayed
<%@page isErrorPage="true“ %>
<%@page errorPage=“errorhandle.jsp“ %>
exception implicit object available only on error
page
use to send customized error message to the client.
06/24/24 30
Summary
• JavaServer Pages (JSP)
Presentation tier
JSP Page
How JSP Works?
JSP Lifecycle
JSP Tags
JSP Implicit Objects
JSP Action
JSP error handling
06/24/24 31/26
Constructive question
Why should you limit the use of scriptlets in JSP?
Design views for customer registration of a web
application.
How will the JSP page meet the needs of multiple
concurrent users?
Compare 2 variables declared by declaration tag and by
scriptlet
Compare two include mechanisms using directives and
actions
When you want to redirect users to login to their role-
specific page, should use sendRedirect or action forward?
06/24/24 32/20