© 2010 Marty Hall
JSP
JSP
Intro and Overview
Ori
g
inals of Slides and Source Code for Examples:
/>Customized Java EE Training: />Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.
2
© 2010 Marty Hall
For live Java EE training, please see training courses
at
at
Servlets, JSP, Struts, JSF 1.x, JSF 2.0, Ajax (with jQuery, Dojo,
Prototype, Ext-JS, Google Closure, etc.), GWT 2.0 (with GXT),
Java 5, Java 6, SOAP-based and RESTful Web Services, Sprin
g
,
g
Hibernate/JPA, and customized combinations of topics.
Taught by the author of Core Servlets and JSP, More
Servlets and JSP
and this tutorial Available at public
Customized Java EE Training: />Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.
Servlets and JSP
,
and this tutorial
.
Available at public
venues, or customized versions can be held on-site at your
organization. Contact for details.
Agenda
• Understanding the need for JSP
• Evaluating the benefits of JSP
• Com
p
arin
g
JSP to other technolo
g
ies
pg g
• Avoiding JSP misconceptions
•
Understanding the JSP lifecycle
Understanding
the
JSP
lifecycle
• Installing JSP pages
•
Looking at JSP in the real world
•
Looking
at
JSP
in
the
real
world
4
The Need for JSP
• With servlets, it is easy to
– Read form data
– Read HTTP request headers
Set HTTP status codes and response headers
–
Set
HTTP
status
codes
and
response
headers
– Use cookies and session tracking
– Share data amon
g
servlets
g
– Remember data between requests
– Get fun, high-paying jobs
• But, it sure is a pain to
– Use those println statements to generate HTML
Miti thtHTML
–
M
a
i
n
t
a
i
n
th
a
t
HTML
5
The JSP Framework
• Idea:
Use regular HTML for most of page
–
Use
regular
HTML
for
most
of
page
– Mark servlet code with special tags
– Entire JSP page gets translated into a servlet (once), and
servlet is what actually gets invoked (for each request)
servlet
is
what
actually
gets
invoked
(for
each
request)
• Example:
<!DOCTYPE …>
<
HTML>
<
HEAD>
<TITLE>Order Confirmation</TITLE>
<LINK REL=STYLESHEET
HREF="JSP-St
y
les.css"
y
TYPE="text/css">
</HEAD>
<BODY>
<
H2>Order Confirmation</H2>
Thanks for ordering
<I><%= request.getParameter("title") %></I>!
</BODY></HTML>
6
Benefits of JSP
• Although JSP technically can’t do anything
l’dJSPkii
serv
l
ets can
’
t
d
o,
JSP
ma
k
es
i
t eas
i
er to:
– Write HTML
Read and maintain the HTML
–
Read
and
maintain
the
HTML
• JSP makes it possible to:
–
Use standard HTML tools such as Macromedia
Use
standard
HTML
tools
such
as
Macromedia
DreamWeaver or Adobe GoLive.
– Have different members of your team do the HTML
lhdhJ i
l
ayout t
h
an
d
o t
h
e
J
ava programm
i
ng
• JSP encourages you to
Separate the (Java) code that creates the content from the
–
Separate
the
(Java)
code
that
creates
the
content
from
the
(HTML) code that presents it
7
Advantages of JSP Over
Competing Technologies
Competing
Technologies
• Versus ASP or ColdFusion
– Better language for dynamic part
– Portable to multiple servers and operating systems
Versus PHP
•
Versus
PHP
– Better language for dynamic part
–
Better tool support
Better
tool
support
• Versus pure servlets
– More convenient to create HTML
– Can use standard tools (e.g., DreamWeaver)
– Divide and conquer
– JSP programmers still need to know
servlet programming
8
Advantages of JSP (Continued)
• Versus Velocity or WebMacro
– Standar
d
• Versus client-side JavaScript (in browser)
–
Capabilities mostly do not overlap with JSP but
Capabilities
mostly
do
not
overlap
with
JSP
,
but
• You control server, not client
• Richer language
•
Versus server
-
side JavaScript
•
Versus
server
-
side
JavaScript
(e.g., LiveWire, BroadVision)
– Richer language
V t ti HTML
•
V
ersus s
t
a
ti
c
HTML
– Dynamic features
–
Adding dynamic features no longer
Adding
dynamic
features
no
longer
“all or nothing” decision
9
Setting Up Your Environment
• Set your CLASSPATH. Not.
• Compile your code. Not.
• Use packages to avoid name conflicts. Not.
• Put JSP page in special directory. Not.
– Use the WebContent folder in Eclipse
Same as for HTML GIF JPEG CSS etc
•
Same
as
for
HTML
,
GIF
,
JPEG
,
CSS
,
etc
.
• Use special URLs to invoke JSP page. Not.
–
Use same URLs as for HTML pages (except for file
Use
same
URLs
as
for
HTML
pages
(except
for
file
extensions)
• Caveats
– Previous rules about CLASSPATH, install dirs, etc., still
apply to regular Java classes used by a JSP page
10
Example
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HTML>
<HEAD>
<TITLE>JSP Expressions</TITLE>
<
META NAME="keywords"
CONTENT="JSP,expressions,JavaServer Pages">
<
META NAME="descri
p
tion"
p
CONTENT="A quick example of JSP expressions.">
<LINK REL=STYLESHEET
HREF=
"
JSP
-
Styles css
"
HREF= JSP
-
Styles
.
css
TYPE="text/css">
</HEAD>
11
Example (Continued)
<BODY>
<
H2>JSP Expressions</H2
>
<UL>
<
LI>Current time:
<
%= new
j
ava.util.Date
()
%
>
j()
<LI>Server: <%= application.getServerInfo() %>
<LI>Session ID: <%= session.getId() %>
<LI>The <CODE>testParam</CODE> form parameter:
<LI>The
<CODE>testParam</CODE>
form
parameter:
<%= request.getParameter("testParam") %>
</UL>
</BODY></HTML>
12
Example: Result
• If Eclipse project was
–
j
sp-scripting
• And folder was
WbC
–
W
e
bC
ontent
• And file was
Expressions jsp
–
Expressions
.
jsp
• URL would be
–
http://localhost/jsp
-
scripting/Expressions jsp
http://localhost/jsp
scripting/Expressions
.
jsp
13
Most Common Misunderstanding
Forgetting JSP is Server
-
Side Technology
Forgetting
JSP
is
Server
-
Side
Technology
• Very common question
– I can’t do such and such with HTML.
Will JSP let me do it?
•
Why doesn
’
t this question make sense?
•
Why
doesn t
this
question
make
sense?
– JSP runs entirely on server
– It doesn’t chan
g
e content the client
(
browser
)
can handle
g()
• Similar questions
– How do I put a normal applet in a JSP page?
Adl hli
A
nswer: sen
d
an <app
l
et…> tag to t
h
e c
li
ent
– How do I put an image in a JSP page?
Answer: send an
<
img
…
>
tag to the client
Answer:
send
an
img
…
tag
to
the
client
– How do I use JavaScript/Acrobat/Shockwave/Etc?
Answer: send the appropriate HTML tags
14
2nd Most Common Misunderstanding
Translation/Request Time Confusion
Translation/Request
Time
Confusion
• What happens at page translation time?
– JSP constructs get translated into servlet code.
• What happens at request time?
Sl d d
N
iifJSP
–
S
erv
l
et co
d
e gets execute
d
.
N
o
i
nterpretat
i
on o
f
JSP
occurs at request time. The original JSP page is totally
i
g
nored at re
q
uest time; onl
y
the servlet that resulted from
gq y
it is used.
• When does page translation occur?
Till hfi i JSP i df ii
–
T
yp
i
ca
ll
y, t
h
e
fi
rst t
i
me
JSP
page
i
s accesse
d
a
f
ter
i
t
i
s
modified. This should never happen to real user
(
develo
p
ers should test all JSP
p
a
g
es the
y
install
)
.
(p pgy)
– Page translation does not occur for each request.
15
The JSP Lifecycle
Re
q
uest Re
q
uest Re
q
uest Re
q
uest Re
q
uest Re
q
uest
q
#1
q
#2
q
#3
q
#4
q
#5
q
#6
JSP page
translated into
servlet
Yes No No No Yes No
Servlet
Yes
No
No
No
Yes
No
Page first w
Server rest
a
Page modi
Servlet
compiled
Yes
No
No
No
Yes
No
Servlet
instantiated
and loaded into
Yes No Yes No Yes No
ritten
a
rted
fied
server’s
memory
init (or
equivalent)
called
Yes No Yes No Yes No
doGet (or
equivalent)
called
Yes Yes Yes Yes Yes Yes
16
Ten Most Popular Web Sites
(Alexa com Summer 2010)
(Alexa
.
com
,
Summer
2010)
1. Google 6. Baidu
–
Java (Web),
C++ (indexing)
2.
Facebook
–
Unknown
7. Wikipedia
PHP
2.
Facebook
– PHP
3. YouTube
–
PHP
8. Blogger
–
Java
–
Flash, Python, Java
4. Yahoo
PHP and Java
9. MSN
– .NET
10
Titt
–
PHP
and
Java
5. Microsoft Live.com
–
.NET
10
.
T
w
itt
er
– Ruby on Rails, Scala, Java
17
Fall 2010: Google reports over two billion Web pages that use JSP (inurl:jsp).
Keywords in Job Postings
18
JSP/Servlets in the Real World:
Airlines
Airlines
• Delta Airlines
• United Airlines
• AirTran
• American
Airlines
Biti hAi
•
B
r
iti
s
h
Ai
rways
• KLM
Ai Chi
•
Ai
r
Chi
na
• Saudi Arabian
Airlines
Airlines
• Iceland Air
19
JSP/Servlets in the Real World:
Travel Sites
Travel
Sites
• Travelocity.com
Obit
•
O
r
bit
z.com
• HotWire.com
•
Hotels.com
Hotels.com
• CheapTickets.
com
Nti lC
•
N
a
ti
ona
l
C
ar
Rental
•
Avis Car Rental
Avis
Car
Rental
• Enterprise
Car Rental
Hertz Car
•
Hertz
Car
Rental
20
JSP/Servlets in the Real World:
Financial Services
Financial
Services
• American
Century
Century
• Vanguard
• Fidelity
•
NY Stock
•
NY
Stock
Exchange
• First USA Bank
RlBkf
•
R
oya
l
B
an
k
o
f
Scotland
• Banco Popular de
Puerto Rico
Puerto
Rico
• Bank of America
• China
Ctti
C
ons
t
ruc
ti
on
Bank
21
JSP/Servlets in the Real World:
Retail
Retail
• Sears.com
Wl t
•
W
a
l
mar
t
.com
• HomeDepot.com
•
SamsClub com
•
SamsClub
.
com
• Macys.com
•
llbean.com
llbean.com
• Kohls.com
• Ikea.com
• Target.com
• Longaberger.com
Nik
•
Nik
e.com
• CircuitCity.com
22
JSP/Servlets in the Real World:
Entertainment
Entertainment
• WarnerBrothers.
com
• Billboard.com
E!
•
E!
(eonline.com)
•
PBS org
•
PBS
.
org
• Comcast
•
games atari com
•
games
.
atari
.
com
23
JSP/Servlets in the Real World:
Military and Federal Government
Military
and
Federal
Government
• DHS
TSA
•
TSA
• FAA
•
CIA
•
CIA
• NSA
• GSA
• IRS
• Army
N
•
N
avy
• USPS
24
Science and Research
• NSF
• UN
Oceans
di b t
•
di
a
b
e
t
es.or
g
• fas.org
dl
•
dl
se.or
g
• science.edu.sg
bif t
•
gbif
.ne
t
• collegeboard
com
.
com
25
JSP/Servlets in the Real World:
State Local International
State
,
Local
,
International
26
JSP/Servlets in the Real World:
Sports
Sports
• Baltimore
Oi l
O
r
i
o
l
es
• Baltimore
Ravens
Ravens
• Washington
Redskins
Redskins
• Washington
Nationals
Nationals
• Major League
Baseball
• NHL.com
• Nascar.com
27
JSP/Servlets in the Real World:
Search/Portals
Search/Portals
• Most of Google
• All of Ebay
• netscape.com
• excite.com
• dice.com
• hi5
• Paypal
28
JSP/Servlets in the Real World:
Random Amusing
Random
Amusing
29
Summary
• JSP is more convenient, not more powerful
JSP k it i t t d i t i HTML hil
–
JSP
ma
k
es
it
eas
i
er
t
o crea
t
e an
d
ma
i
n
t
a
i
n
HTML
, w
hil
e
still providing full access to servlet code
• JSP pages get translated into servlets
– It is the servlets that run at request time
– Client does not see anything JSP-related
•
You still need to understand servlets
You
still
need
to
understand
servlets
– Understanding how JSP really works
– Servlet code called from JSP
ih l b hS
– Know
i
ng w
h
en serv
l
ets are
b
etter t
h
an J
S
P
– Mixing servlets and JSP
•
Other technologies use similar approach,
Other
technologies
use
similar
approach,
– But aren’t as portable and don’t let you use Java for the
“real code”
30
© 2010 Marty Hall
Questions?
Customized Java EE Training: />Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6.
Developed and taught by well-known author and developer. At public venues or onsite at your location.
31