You are on page 1of 49

Java Server Pages

Introduction

• What is JSP?
• My first JSP
• JSP Fundamentals
• JSP Directives and APIs
• JSP, Java Beans and Tags
What is JSP

• A simplified way to generate dynamic web


content
 Simpler then Servlet
 Editing tool friendly
 Can be used to separate the coding of presentation
and business logic
cont…

• JSP is based on Java and Servlet technologies


 An HTML page with embedded tags and Java
Code
 At runtime the JSP page is translated into a Java
Servlet
 The runtime is usually encapsulated in a special
JSP-Runtime Servlet
JSP – A standard

• JSP is a Java Standard:


 Defined by a group of companies led by JavaSoft
 Current version is 1.2, but previous versions are
also in use (mainly 1.1)
 Ongoing effort to improve JSP
Why JSP?

• Because it is needed!
 In fact, there are several JSP like technologies both
in the Java (as well as non-Java) world
• Servlet that generate HTML output hide the
HTML inside Java
 Makes it hard for an HTML expert (!= Java expert)
to fix stuff
 Lock the content in Java
 Makes look and feel changes to the site
problematic
cont…

• The ability to script with Java and JavaBeans


makes generating dynamic content simpler
 The competitors (ASP) provide an extremely !!!
simple (and appealing) method for generating
dynamic content
The JSP Syntax

• Inline Java code delimited by


<% and %>
 Also printing of expressions as text by using <%=
%>
• Special tags to declare class wide variables
and methods
• Special tags to use with JavaBeans
cont…

• Special tags to expose JSP services


• JSP directives to specify
 Interfaces implemented by the Servlet, classes it
extends, packages to import etc
My first JSP

Hello World
Helloworld.jsp – Code

<HTML>
<HEAD>
<%@ page language="java"
contentType="text/html; charset=US-ASCII"
pageEncoding="US-ASCII" %>
<TITLE>helloworld.jsp</TITLE>
</HEAD>
<BODY>
<P> <% out.print("This is a sample JSP file"); %> </P>
</BODY>
</HTML>
Helloworld.jsp – Output
Helloworld.jsp – Observations

• At first, the JSP file looks like a regular HTML


page
 HTML tags, html, body etc
• There is a new <%@ page … %> “Tag” that
has nothing to do with HTML
 This is a JSP directive
• We have some Java code enclosed between
<% and %>
 This is a JSP scriptlet
JSP Fundamentals
JSP Fundamentals

• Adding Java to a plain HTML page.


 Scriptlets
• Use JSP implicit variables.
 To obtain information.
 To write data back to the user.
• Defining class wide variables and methods.
 For initialization.
• Commenting your scripts.
JSP Scriptlets

• Scriptlets let the developer place inline Java


code inside the HTML
 General syntax: <% Java code %>
• <% i++; %>

• Expression placement lets the developer place


a Java expression (converted to a String)
inline with the HTML
 General syntax <%= expression %>
• <%= new Date() %>
Conditional HTML

• Scriptlets can be used to implement


conditional HTML

<% if(variable ) { %>


<h1> variable is true </h1>
<% } else { %>
<h1> variable is false </h1>
<% } %>
Looping

• Scriptlets can be used to implement loops


inside the HTML

<% for(int k = 0 ; k < 10 ; k++ ) { %>


<h1> variable’s value is <%= k %> </h1>
<% } %>
JSP Implicit Variables

• JSP has several implicit variables that can


be used freely within the JSP page
 Available without prior declaration and
definition
 Provides all the services and APIs that are
available for the servlet developer
cont…

• Some of the implicit variables are:


 request – The HttpServletRequest object as arrived
to the service method
 response – The HttpServletResponse object as
arrived to the service method
 out – A JspWriter connected to the
ServletOutputStream of response
 session – The HttpSession object associated with
the current user-session
Class Wide Declarations

• Class wide can be used to define instance


methods and variables in the page
 These methods and variables end up defined in the
class created from the JSP file

<%! int varname = 1;


void jspInit(){
System.out.println("inside init");
}
%>
cont…

• Class wide declarations are enclosed within a


<%! %> pair
• Example usage can be creating initialization
code
Comments in JSP

• There are two types of comments in JSP


• HTML comments that should arrive to the
client's browser
 These comments can contain JSP code and
Scriptlets that are executed
• <!-- <% out.print("My comment"); %> -->

• Comments to the JSP page itself


 These comments and their content are not
interpreted and will not arrive to the client
• <%-- anything but a closing --%> ... --%>
The include Directive

• A tool for inclusion of content inside the JSP


page at translation time
• General syntax:
 <%@ include file="relativeURLspec" %>
 File points to a URI that identifies the resource to
be included into the JSP page
• Very useful for sites with specific headers
footers etc
Snoop.jsp

• Uses scriptlets to present the request headers


and form parameters sent to the page
 Employs scriptlets, implicit variables and
comments
Snoop.jsp – Code

<HTML>
<HEAD>
<%@ page language="java"
contentType="text/html” import="java.util.*" %>
<TITLE>JSP snoop page</TITLE>
</HEAD>
<BODY>

<H1>JSP Snoop page</H1>


Snoop.jsp – Code
<% Enumeration e = request.getHeaderNames();
if(e != null && e.hasMoreElements()) { %>

<H2>Request headers</H2>
<TABLE>
<TR>
<TH align=left>Header:</TH>
<TH align=left>Value:</TH>
</TR>
<% while(e.hasMoreElements()) {
String k = (String) e.nextElement(); %>
<TR>
<TD><%= k %></TD>
<TD><%= request.getHeader(k) %></TD>
</TR>
<% } %>
</TABLE>
<% } %>
Snoop.jsp – Code
<% e = request.getParameterNames();
if(e != null && e.hasMoreElements()) { %>
<H2>Request parameters</H2>
<TABLE>
<TR valign=top>
<TH align=left>Parameter:</TH>
<TH align=left>Value:</TH></TR>
<% while(e.hasMoreElements()) {
String k = (String) e.nextElement();
String val = request.getParameter(k); %>
<TR valign=top>
<TD><%= k %></TD>
<TD><%= val %></TD>
</TR>
<% } %>
</TABLE>
<% } %>
</BODY></HTML>
Snoop.jsp – Output
Directives and APIs
JSP Directives and APIs

• JSP 1.0 provides directives and APIs to allow


enhanced control over the page.
• Directives provides:
 Declarative page control (caching for example).
 Defining Java related page attributes.
cont…

• The APIs provides:


 Programmatic page control.
 Access to information that was supplied by using
directives
JSP Directives

• Directives begin with <%@ and ends with %>


• Directives have a type, attributes and values
 <%@ type attribute="value" %>
• For now the types are
 page
 include
• <%@ page attribute="value">
JSP Page Directives

• Page directives provides fine-grained control


over the JSP Page
 Buffering.
 Session Usage.
 Importing a Java class
 Programming language used in the page
 Required locale
<%@ page language="java"
contentType="text/html; charset=WINDOWS-1255"
pageEncoding="WINDOWS-1255"
import="java.util.*" %>
JSP, Java Beans and
Tags
JSP and JavaBeans

• JavaBeans is the component model used for


the Java language:
 Portable.
 Platform independent.
 Written in Java.
• Beans are:
 Java classes.
 Reusable software components.
 You can combine several beans to create a bigger
whole.
cont...

• One of the main ideas in JSP is that


developers can use JavaBeans to separate the
HTML view from the Java implementation
code.
• Developers integrate the JavaBeans into the
JSP page using special tags and Scriptlets.
Bean Tags in JSP

• JSP introduces new tags to handle beans:


 Attaching to a certain bean.
• jsp:useBean

 Initializing a bean.
 Setting a bean attribute
• jsp:setProperty

 Getting a bean attribue.


• jsp:getProperty
Beanmyname.jsp

• Print a name as submitted by the user

• Uses JavaBeans and JSP JavaBeans tags:


 To parse the parameters sent
 Print the parameters
Beanmyname.jsp – The code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<HTML>
<HEAD>
<%@ page language="java"
contentType="text/html”
import="NameBean"
%>
<META http-equiv="Content-Type"
content="text/html; charset=WINDOWS-1255">
<TITLE>beanmyname.jsp</TITLE>
</HEAD>

<jsp:useBean id="myusername" scope="page" class="NameBean">


<jsp:setProperty name="myusername" property="*" />
</jsp:useBean>
Beanmyname.jsp – The code

<BODY>
<H1>Print my name using JavaBeans</H1>

Your full name Is:


<jsp:getProperty name="myusername" property="name" />
<jsp:getProperty name="myusername" property="family" />

<H1>Send Your Name</H1>

<FORM method="GET" action="beanmyname.jsp">


<P>Your Name: <INPUT type="text" name="name" size="20"></P>
<P>Your Family: <INPUT type="text" name="family" size="20"></P>
<P><INPUT type="submit" value="Submit"> <INPUT
type="reset"value="Reset"></P>
</FORM>
</BODY>
NameBean – The code
public class NameBean implements java.io.Serializable {
String nameProperty = null;
String fnameProperty = null;

public void setName(String name) {


nameProperty = name;
}

public String getName() {


return nameProperty;
}

public void setFamily(String name) {


fnameProperty = name;
}

public String getFamily() {


return fnameProperty;
}
}
Beanmyname.jsp – Output
Custom Tags
Objectives

• Introduction
• Why custom tags?
• Basics of Tag Libraries
• Simple Custom Tag
Introduction

• A tag library is a collection of custom tags


• Tags within a tag library are written in Java
• A tag represents some functionality which is
written in a form of a Java method as a part of
a Java class
• A simple way to think of a custom tag is a
User Defined Scriptlet
Cont…

• Custom tags are to replace embedded Java


code within a JSP page
Why Custom Tags?

• Custom tags provide methods to cleanly


separate logic from presentation
• Ease of use
• Portability
Thank You

Zubair Shaikh
imzubair@gmail.com
Presentation Version 1.2

You might also like