Académique Documents
Professionnel Documents
Culture Documents
Limita:ons
Pas
pra:ques
pour
les
longs
chiers
HTML
out.println("<h1>Bla
Bla</h1>"
+
"bla
bla
bla
bla
bla
"
+
"
lots
more
here...")
Exemple
<HTML>
<HEAD>
<TITLE>Hello
World
Example</TITLE>
</HEAD>
<BODY>
<H2>Hello
World
Example</H2>
<B>Hello
<%
=request.getParameter("name")
%>!</B>
</BODY>
</HTML>
La jsp se trouve dans : tomcat_home/webapps/proj/HelloWorld.jsp Elle est appelle par lURL : http://<host>:<port>/proj/HelloWorld.jsp?name=snoopy6
Fonc:onnement
de
la
JSP
2
phases
:
Traduc:on
de
la
JSP
en
Servlet
La
premire
fois
que
la
JSP
est
accde
Le
code
peut
se
trouver
dans
tomcat_home/work
10
Bonnes
pra:ques
Pas
de
long
code
lintrieur
dune
page
Melre
le
long
code
dans
une
classe
Java
et
appeler
ce
code
dans
la
page
JSP
Objec:fs
Spara:on
claire
du
code
Simplica:on
du
dbogage
Simplica:on
de
la
tche
des
tests
Ru:lisa:on
du
code
11
12
Syntaxe
<%=
Java
Expression
%>
Exemple
<%=
Math.random()
%>
13
Ces
tapes
sont
eectues
au
run&me
(quand
la
page
est
appele
par
une
requte)
Accs
aux
informa:ons
de
la
requte
14
Variables
prdnies
Request
correspond
HlpServletRequest
Response
correspond
HlpServletResponse
Session
correspond
HlpSession
associe
la
requte
Out
correspond
PrintWriter
(une
version
en
buer
du
type
JspWriter)
u:lis
pour
envoyer
la
rponse
au
client
16
<HTML> <HEAD> <TITLE>JSP Expressions</TITLE></HEAD> <BODY> <H2>JSP Expressions</H2> <UL> <LI>Current time: <%= new java.util.Date() %> <LI>Your hostname: <%= request.getRemoteHost() %> <LI>Your session ID: <%= session.getId() %> <LI>The <CODE>testParam</CODE> parameter: <%= request.getParameter("testParam") %> </UL> </BODY> </HTML>
17
Encoded
Unencoded
18
19
public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setContentType("text/html"); HttpSession session = request.getSession(true); JspWriter out = response.getWriter(); out.println(foo()); bar(); ... }
20
Gnra:on
de
code
Les
Scriptlets
peuvent
crire
en
sor:e
en
u:lisant
out
Exemple:
<%
String
queryData
=
request.getQueryString();
out.println("Alached
GET
data:
"
+
queryData);
%>
21
if (Math.random() < 0.5) { out.println("You <B>won</B> the game!"); } else { out.println("You <B>lost</B> the game!"); }
22
Syntaxe
<%!
Java
Code
%>
Les dclara:ons ne gnrent pas de sor:es Elle dnissent des variables et des mthodes
23
Ache
le
nombre
de
requtes
reues
par
cele
page
depuis
quelle
a
t
charge
<%! private int accessCount = 0; %> <%! private synchronized int incAccess() { return ++accessCount; } %> Accesses to page since server reboot: <%= incAccess() %>
Exemple : dclara:on
24
25
Variables
prdnies
Appeles
aussi
implicit
objects
Variables
dj
tudies
request,
response,
out,
session
26
La
variable
ServletContext
Reprsente
le
contexte
de
la
Servlet
ServletContext
obtenu
par
appel
getServletCong().getContext()
Rappel
Les
Servlets
et
JSP
peuvent
stocker
des
donnes
constantes
dans
lobjet
ServletContext
Rcuprer
et
posi:onner
les
alributs
se
fait
grce
getAlribute
et
setAlribute
Le
contexte
ServletContext
est
partag
par
toutes
les
Servlets
du
serveur
La variable Applica:on est u:lise pour stocker des valeurs spciques lapplica:on Web
27
La
variable
cong
Correspond
ServletCong
de
la
page
obtenue
par
la
mthode
init
Rappel
Con:ent
des
valeurs
dini:alisa:on
spciques
la
Servlet
28
La
variable
pageContext
pageContext
encapsule
des
proprits
spciques
du
serveur
Exemple:
performance
de
JspWriters
29
La
variable
page
Synonyme
de
this
Cele
variable
nest
pas
vraiment
u:le
dans
les
pages
JSP
Elle
tait
conue
quand
le
language
de
scrip:ng
pouvait
tre
autre
chose
que
Java
30
Syntaxe
<%@
direc:ve
alribute="value"
%>
include, permet dinclure un chier dans une servlet au moment de sa gnra:on par:r de la JSP taglib, indique une librairie de tags que la page peut inclure
32
session=true|false
false
indique
que
la
session
ne
doit
pas
tre
crite
Sauve
les
donnes
de
la
session
en
mmoire
Toutes
les
pages
rela:ves
doivent
faire
la
mme
chose
buer=sizekb|none
spcie
la
taille
du
buer
de
out
de
JspWriter
34
extends=package.class
Fait
que
la
Servlet
cre
une
sous-classe
de
la
classe
donne
info=message
Un
message
retourner
par
la
mthode
getServletInfo
35
isErrorPage=true|false
Permet
la
page
JSP
dtre
une
page
derreurs
36
<HTML> <HEAD> <TITLE>Reading From Database</TITLE></HEAD> <BODY> <%@ page import="java.sql.*" %> <%@ page errorPage="Error.jsp" %> <% Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = DriverManager.getConnection("jdbc:oracle:thin:" + "snoopy/snoopy@sol4:1521:stud"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("Select * from a"); ResultSetMetaData md = rs.getMetaData(); int col = md.getColumnCount(); %>
37
<TABLE border="2"> <% while (rs.next()) { %> <TR> <% for (int i = 1 ; i <= col ; i++) { %> <TD><%= rs.getString(i) %></TD> <% } %> </TR> <% } %> </TABLE> </BODY> </HTML>
38
<HTML> <HEAD> <TITLE>Reading From Database</TITLE></HEAD> <BODY> <%@ page isErrorPage="true" %> Oops. There was an error when you accessed the database. <br> Here is the stack trace: <br> <br> <pre> <% exception.printStackTrace(new java.io.PrintWriter(out)); %> </pre> </BODY> </HTML>
39
Accs ReadingDatabase quant il nya pas de table "a" Accessing ReadingDatabase when there is a table "a"
40
La
direc:ve
include
But
Permet
dinclure
des
chiers
au
moment
o
les
pages
JSP
sont
traduites
en
Servlets
Syntaxe
<%@
include
le="rela:ve
url"
%>
41
<HTML> <HEAD> <TITLE>Reading From Database</TITLE></HEAD> <BODY> Here is an interesting page.<br><br> Bla, Bla, Bla, Bla. <%@ include file="AccessCount.jsp" %> </BODY> </HTML> <hr> AccessCount.jsp Page Created for Distributed system Course. Email us <a href="mailto:takoua_abdellatif@essths.rnu.tn">here</a>. <br> <%! private int accessCount = 0; %> Accesses to page since server reboot: <%= accessCount++ %>
42
BlaBla.jsp
43
44
<jsp:expression> Java Expression </jsp:expression> <jsp:scriptlet> Code Java </jsp:scriptlet> <jsp:declaration> Java Declaration </jsp:declaration> <jsp:directive.type Attribute = value/>
45
<%Code%>
<%!declaration%>
<%@directive%>
Les
Ac:ons
Les
ac:ons
JSP
u:lisent
la
syntaxe
XML
pour
contrler
le
comportement
du
Servlet
engine
Exemple
dac:ons
Inser:on
dynamique
de
chiers
Ru:lisa:on
de
composants
JavaBeans
Transfert
de
lu:lisateur
une
autre
page
Gnera:on
du
HTML
pour
le
plugin
Java
46
47
LAc:on
jsp:include
Insre
des
chiers
quand
la
page
est
appelle
Syntaxe
<jsp:include
page="rela:ve
URL"
ush="true"
/>
48
LAc:on
jsp:forward
Transfre
vers
une
autre
page
<jsp:forward
page="rela&ve
URL"/>
La
page
peut
tre
sta:que
ou
gnre
dyamiquement
Exemples:
<jsp:forward
page="/u:ls/errorReporter.jsp"
/>
<jsp:forward
page="<%=
someJavaExpression
%>"
/>
49
Les
commentaires
<%--
comment
--%>
Commentaire
JSP
est
ignor
par
le
traducteur
JSP-to-scriptlet
/*
comment
*/
or
//
comment
Commentaire
Java,
inclus
dans
le
code
Java
50
51
Init
et
Destroy
Dans
les
pages
JSP,
comme
dans
les
servlets
classiques,
il
est
possible
de
vouloir
u:liser
Init
et
destroy
Il
nest
pas
lgal
du:liser
les
dclara:ons
de
JSP
pour
surcharger
init
et
destroy
car
ces
mthodes
sont
dj
implantes
par
la
Servlet
cre
Il
faut
u:liser
jspInit
et
jspDestroy
La
Servler
gnre
appelle
ces
mthodes
Les
versions
standards
de
jspInit
et
jspDestroy
sont
vides
(Le
dveloppeur
peut
les
remplir)
52
Lecture
Modica9on
Ini9alise
tous
les
aAributs
de
lobjet
name
avec
les
paramtres
HTTP
du
mme
nom
(en
2
lignes
!)
<jsp:setProperty name="name" property="property" value="value" /> <jsp:setProperty name="name" property="*" />
53
Exemple
Dans
une
page
JSP
<html>
...
<jsp:usebean
id="test"
class=
CoursJEE.SimpleBean"
/>
<jsp:setProperty
name="test"
property="message"
value="Hello
!!"
/>
<h1>Le
message
est
:
<i>
<jsp:getProperty
name="test"
property="message"
/>
</i></h1>
</html>
Code
source
package CoursJEE; public class SimpleBean { private String message = " Bonjour"; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
54