JSP - Università degli studi di Bergamo

Università di Bergamo
Facoltà di Ingegneria
Applicazioni Internet B
Paolo Salvaneschi
B6_1 V1.7
JSP parte A
Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e per supporto a lezioni universitarie.
Ogni altro uso è riservato, e deve essere preventivamente autorizzato dall’ autore.
Sono graditi commenti o suggerimenti per il miglioramento del materiale
B6 JSP
Paolo Salvaneschi
1
INDICE
•
•
•
•
Java Server Pages
Installazione di Tomcat
Struttura directory Tomcat
Creazione e installazione di una applicazione
JSP
• JSP Overview
• Sintassi degli elementi JSP
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
2
2
Java Server Pages
Server
Server
Client
Application Server
Data base
Sistema
Informativo
JSP
H
T
T
P
D
Microsoft Internet Explorer
Netscape Navigator
Tomcat
B6 JSP
B6 JSP
HTTP
HTML
CSS
JavaScript
Paolo Salvaneschi
Paolo Salvaneschi
3
3
Java Server Pages
• Java Server Pages (JSP)
– Pagina di testo HTML che include codice java
– Pagina dinamica che è eseguita lato server e
restituisce HTML al client
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
4
4
Installazione di Tomcat
• INSTALLAZIONE TOMCAT
• Versioni:
Java
j2sdk1.4.1_01 (con compilatore, non
versione re solo runtime)
Tomcat 4.1.30
JSTL
1.0 (jakarta-taglibs-standard-1.0.5.zip)
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
5
5
Installazione di Tomcat
• INSTALLAZIONE TOMCAT
• Installazione di java sdk nella cartella
C:\j2sdk1.4.1_01
• Download dal sito http://www.apache.inetcosmos.org
di jakarta-tomcat-4.1.30.exe
• Definizione delle variabili di ambiente
•
JAVA_HOME
•
CATALINA_HOME
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
6
6
Installazione di Tomcat
(es: Windows 2000-XP) : Pannello di controllo-Sistema Avanzate -Variabili ambiente
CATALINA_HOME
C:\Apache Group\Tomcat 4.1
JAVA_HOME
C:\Programmi\j2sdk1.4.1_01\bin
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
7
7
Installazione di Tomcat
• Installazione di Tomcat
nella cartella C:\Apache Group\Tomcat 4.1
– HTTP/1.1 Connector Port: 8080
– User:admin
– Passw: nessuna
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
8
8
Installazione di Tomcat
• AVVIO TOMCAT
• Start TOMCAT
• Al termine delle attività: stop TOMCAT
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
9
9
Installazione di Tomcat
• UTILIZZO TOMCAT
• http://localhost:8080/
• http://127.0.0.1:8080/
• Esegue il file: index.jsp con il path completo
(percorso di contesto):
%CATALINA_HOME%/webapps/ROOT/index.jsp
Cartella di default
per le applicazioni
Web servite da Tomcat
B6 JSP
B6 JSP
Applicazione di default
Paolo Salvaneschi
Paolo Salvaneschi
10
10
Installazione di Tomcat
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
11
11
Installazione di Tomcat
• Amministrazione di TOMCAT:
http://localhost:8080/admin
• Definizione e gestione utenti
• ……….
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
12
12
Installazione di Tomcat
• Amministrazione di TOMCAT:
http://localhost:8080/manager
• Es: lista applicazioni installate e gestione relativa
• Installazione di nuove applicazioni
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
13
13
Installazione di Tomcat
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
14
14
Struttura directory Tomcat
Applicazione
servita da Tomcat
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
15
15
Struttura directory Tomcat
• Script per avvio e interruzione del server Tomcat
...\Tomcat-4.1\bin
• Files di configurazione del server
...\Tomcat-4.1\conf
• Files di log del server
...\Tomcat-4.1 \logs
• Cartella di default per le applicazioni Web servite
da Tomcat
...\Tomcat-4.1 \webapps
• Files temporanei (qui sono salvate le servlet generate dalle pagine
JSP)
...\Tomcat-4.1 \work
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
16
16
Struttura directory Tomcat
• Applicazioni Web servite da Tomcat
• Container
– Metodo standard di installazione e packaging delle
risorse che compongono un’applicazione (pagine
JSP, pagine statiche, classi java,…). Files disposti
in una gerarchia definita all’interno di un archivio
WAR (Web archive)
–
Archivio .jar (.zip)
–
Cartella di file system
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
17
17
Struttura directory Tomcat
– Descrittore dell’installazione (file XML)
– Contesto servlet
associato ad un context path utilizzato per
raggiungere l’applicazione a cui inviare le richieste
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
18
18
Creazione e installazione di una applicazione JSP
Applicazione
servita da Tomcat
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
19
19
Creazione e installazione di una applicazione JSP
index.jsp
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<H1>Esempio 1</H1>
<%= Espressione %>
Utilizzate per aggiungere alla risposta
http il risultato dell’esecuzione di
un’espressione di scripting
<P><%= "pippo" + ", pluto" %> </P>
<IMG SRC="citta.gif" WIDTH="100" HEIGHT="100" BORDER="0" ALT="">
<HR>
</BODY>
</HTML>
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
20
20
Creazione e installazione di una applicazione JSP
http://localhost:8080/Esempio_1
Testo HTML generato
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<H1>Esempio 1</H1>
<P>pippo, pluto </P>
<IMG SRC="citta.gif" WIDTH="100" HEIGHT="100" BORDER="0" ALT="">
<HR>
</BODY>
</HTML>
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
21
21
Creazione e installazione di una applicazione JSP
Descrittore dell’installazione
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
</web-app>
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
22
22
Creazione e installazione di una applicazione JSP
http://localhost:8080/Esempio_1
Context path
Regole di mappatura
%CATALINA_HOME%\webapps\Esempio_1\index.jsp
C:\Apache Group\
Tomcat 4.1\webapps\Esempio_1\index.jsp
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
23
23
Creazione e installazione di una applicazione JSP
• Installazione di una nuova applicazione
– Costruire l’applicazione (archivio)
– Copiare in /webapps
– Stop Tomcat
– Start Tomcat
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
24
24
JSP Overview
• Servlet
– Oggetti Java particolari che sono caricati ed
eseguiti dal web server (application server) che
li utilizza come proprie estensioni.
– Il server mette a disposizione delle Servlet un
“container” che si occupa della gestione
dell’ambiente all’interno delle quali le servlet
girano.
– Il “container” passa i dati dal client verso le
servlet e viceversa (via protocollo http).
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
25
25
JSP Overview
• Ciclo di vita di una Servlet
– Una servlet è caricata e inizializzata dal web
server al momento della prima richiesta http da
parte di un client o al momento dell’avvio del
servizio.
– All’inizializzazione la servlet può, se il caso,
aprire una connessione con un DataBase
(connessione che resta aperta per servire più
richieste del client).
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
26
26
JSP Overview
• Ciclo di vita di una Servlet
– La servlet esegue le richieste del client.
Per ogni richiesta è creato un thread
– La servlet rilascia le risorse ed è distrutta
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
27
27
JSP Overview
• Elaborazione della pagina JSP
Il server utilizza la pagina JSP come una servlet. Al momento
del primo accesso la pagina JSP è trasformata in un file Java e
compilata ottenendo una classe Java che rappresenta una
servlet che crea una pagina html e la invia al client.
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
28
28
JSP Overview
<HTML>
<HEAD></HEAD>
<BODY>
<H1>Esempio 2</H1>
<HR>
<% for(int i=0; i<10; i++) {
if(i%2==0) {
%>
<h1>Pari</h1>
<% } else { %>
<h2>Dispari</h2>
<%
}
Scriptlet
}
<% Frammento di codice %>
%>
Utilizzati per includere frammenti di
<HR>
codice nella pagina
</BODY>
</HTML>
index.jsp
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
29
29
JSP Overview
<HTML>
<HEAD></HEAD>
<BODY>
<H1>Esempio 2</H1>
<HR>
<% for(int i=0; i<10; i++) {
if(i%2==0) {
%>
<h1>Pari</h1>
<% } else { %>
<h2>Dispari</h2>
<%
}
}
%>
http://localhost:8080/Esempio_2
<HR>
</BODY>
</HTML>
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
30
30
JSP Overview
<HTML>
<HEAD></HEAD>
<BODY>
<H1>Esempio 2</H1>
<HR>
<h1>Pari</h1>
<h2>Dispari</h2>
<h1>Pari</h1>
<h2>Dispari</h2>
<h1>Pari</h1>
<h2>Dispari</h2>
<h1>Pari</h1>
<h2>Dispari</h2>
<h1>Pari</h1>
<h2>Dispari</h2>
<HR>
</BODY>
</HTML>
B6 JSP
B6 JSP
Testo HTML generato
Paolo Salvaneschi
Paolo Salvaneschi
31
31
JSP Overview
• Jsp è case-sensitive
• Directories e nomi di files della web application sono
case-sensitive
Uno.htm
…
<IMG SRC="citta.gif">
…
Due.htm
…
<IMG SRC=“Citta.gif">
…
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
Eseguiti sul file system di
windows da Explorer
utilizzano lo stesso file
immagine
Copiati in Webapps ed Eseguiti
da Tomcat (con OS Windows)
NON utilizzano lo stesso file
immagine
32
32
JSP Overview
• Pagina JSP
• Testo template
• Elementi JSP
–Direttive
–Elementi di scripting
–Componenti JavaBean
–Elementi di azione standard
–Azioni personalizzate e JSTL
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
33
33
JSP Overview
<%@ page import = "num.NumberGuessBean" %>
<jsp:useBean id="numguess"
Direttive
class="num.NumberGuessBean" scope="session"/>
<jsp:setProperty name="numguess" property="*"/>
<html>
Azioni
<head><title>Number Guess</title></head>
<body bgcolor="white">
Testo template
<font size=4>
<% if (numguess.getSuccess()) { %>
Congratulations! You got it.
And after just <%= numguess.getNumGuesses() %> tries.<p>
<% numguess.reset(); %>
Care to <a href="numguess.jsp">try again</a>?
Elementi di
<% } else if (numguess.getNumGuesses() == 0) { %> scripting
…………
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
34
34
JSP Overview
• Modi diversi di inserire il codice
• Primo modo:
–Elementi di scripting
Codice java inserito nel testo
• La pagina è realizzata da un programmatore
java
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
35
35
JSP Overview
• Modi diversi di inserire il codice
• Modi ulteriori
– Componenti JavaBean (Classi java con regole di
codifica tali da poterle utilizzare in modo semplice)
– Elementi di azione standard, Azioni
personalizzate e JSTL (Tag specializzati)
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
36
36
JSP Overview
• Motivazioni:
• Motivazione gestionale:
• separare il ruolo del programmatore (java,
DB) dal costruttore di interfaccia (HTML)
• Motivazioni tecniche:
• Strumenti di sviluppo rapido
• Vedi pattern Model View Controller
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
37
37
JSP Overview
<%@ page import = "num.NumberGuessBean" %>
<jsp:useBean id="numguess"
class="num.NumberGuessBean" scope="session"/>
<jsp:setProperty name="numguess" property="*"/>
<html>
<head><title>Number Guess</title></head>
<body bgcolor="white">
<font size=4>
Classi java esterne
…………
Java Beans
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
38
38
JSP Overview
<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>JSP is Easy</title>
</head>
<body bgcolor="white">
<h1>JSP is as easy as ...</h1>
<%-- Calculate the sum of 1 + 2 + 3 dynamically --%>
1 + 2 + 3 = <c:out value="${1 + 2 + 3}" />
</body>
</html>
B6 JSP
B6 JSP
Elementi di azione personalizzate e JSTL
Paolo Salvaneschi
Paolo Salvaneschi
39
39
Sintassi degli elementi JSP
• <%-- …
• Direttive
• Sintassi
--%>
Commento
<%@nomeDirettiva attr1=“valore” attr2=“valore2
• Tipi di direttive
<%@include
<%@page
<%@taglib
B6 JSP
B6 JSP
… %>
… %>
… %>
… %>
Paolo Salvaneschi
Paolo Salvaneschi
40
40
Sintassi degli elementi JSP
• <%@include file=“Percorso” %>
• Esegue l’inserimento del contenuto di un file
nella pagina
• Il nuovo testo è compilato
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
41
41
Sintassi degli elementi JSP
• <%@page
nome=“valore” … %>
• Definisce gli attributi della pagina
contentType=“tipo MIME per la risposta”
errorPage=“percorso pagina a cui trasferire il
controllo in caso di eccezione”
import=“elenco classi o package java da
importare”
language=“linguaggio di scripting usato”
session=“true” (default) se la pagina partecipa ad una
sessione utente
…
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
42
42
Sintassi degli elementi JSP
• <%@taglib prefix=“Prefisso”
uri=“taglibURI” %>
• Dichiara una tag library utilizzata nella pagina
che contiene azioni personalizzate (o JSTL)
prefix prefisso da utilizzare nei nomi degli
elementi di azione
uri
stringa utilizzata per localizzare
l’implementazione della tag library
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
43
43
Sintassi degli elementi JSP
• Elementi di scripting
Consentono di aggiungere porzioni di codice
alla pagina JSP
• Tipi di elementi
– Dichiarazioni
– Espressioni
– Scriptlet
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
44
44
Sintassi degli elementi JSP
• Dichiarazioni
<%! Dichiarazione %>
Dichiara una variabile o un metodo
<%! Int globalCounter = 0; %>
• Espressioni
<%= Espressione %>
Utilizzate per aggiungere alla risposta http il risultato
dell’esecuzione di un’espressione di scripting
<%= globalCounter ++ %>
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
45
45
Sintassi degli elementi JSP
• Scriptlet
<% Frammento di codice %>
Utilizzati per includere frammenti di codice nella
pagina
Il linguaggio deve essere definito nella direttiva page
(default java)
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
46
46
Sintassi degli elementi JSP
<%@page language="java" contentType="text/html" %>
<%! int globalCounter = 0; %>
<HTML>
<HEAD></HEAD>
<BODY BGCOLOR="ffffcc">
<HR>
<CENTER>
<H2>Questa pagina è stata visitata (n. volte): <%= ++globalCounter %> </H2>
…………………
Dichiarazione
Elementi di scripting
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
47
47
Sintassi degli elementi JSP
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<H1>Esempio 1</H1>
<P> <%= "pippo" + ", pluto" %> </P>
<IMG SRC="citta.gif" WIDTH="100" HEIGHT="100" BORDER="0" ALT="">
<HR>
</BODY>
</HTML>
Espressione
Elementi di scripting
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
48
48
Sintassi degli elementi JSP
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="ffffcc">
<H1>Esempio 3</H1>
Classe Date
<HR>
del package
<CENTER>
java.util
<H2>Date and Time</H2>
<%
java.util.Date today = new java.util.Date();
out.println("Today's date is: "+today);
%>
</CENTER>
<HR>
</BODY>
</HTML>
Scriptlet
Elementi di scripting
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
49
49
Sintassi degli elementi JSP
<%@page import="java.util.*" %>
<HTML>
<HEAD>
</HEAD>
Import del
<BODY BGCOLOR="ffffcc">
package
<H1>Esempio 4</H1>
java.util
<HR>
<CENTER>
Classe Date
<H2>Date and Time</H2>
<%
Date today = new Date();
out.println("Today's date is: "+today);
%>
</CENTER>
<HR>
</BODY>
</HTML>
Scriptlet
Elementi di scripting
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
50
50
Sintassi degli elementi JSP
<%@page import="java.util.*" %>
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="ffffcc">
<H1>Esempio 5</H1>
<HR><CENTER>
<H2>Saluto</H2>
<% Date clock = new Date(); %>
<% if ( clock.getHours() < 12 ) { %>
<H2>Buongiorno!</H2>
<% } else if ( clock.getHours() < 17 ) { %>
<H2>Buon pomeriggio!</H2>
<% } else { %>
<H2>Buona sera!</H2>
<% }%>
</CENTER><HR>
</BODY></HTML>
Scriptlet
Elementi di scripting
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
51
51
Sintassi degli elementi JSP
• Componenti JavaBean
• Un componente JavaBean è una classe java
conforme a definite regole di codifica
• Un insieme di elementi di azione standard
<jsp: … > ne permette l’utilizzo
• Sono utilizzati come contenitori che descrivono
entità dell’applicazione (cliente, ordine,…)
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
52
52
Sintassi degli elementi JSP
<%@ page import = "num.NumberGuessBean" %>
<jsp:useBean id="numguess"
class="num.NumberGuessBean" scope="session"/>
<jsp:setProperty name="numguess" property="*"/>
<html>
<head><title>Number Guess</title></head>
<body bgcolor="white">
<font size=4>
Classi java esterne
…………
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
53
53
Sintassi degli elementi JSP
• Elementi di azione standard
Componenti invocati quando un client chiede la
pagina JSP
• Sintassi XML
Esempio:
<jsp:forward page=“nextPage.jsp”>
<jsp:param name=“aParam” nvalue=“aValue”/>
</jsp:forward>
Tag iniziale con eventuali attributi, tag finale, annidamento
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
54
54
Sintassi degli elementi JSP
• Notazione completa
Tag iniziale <jsp:…
>
corpo
Tag finale </jsp:…
>
• Notazione abbreviata se non c’è un corpo
<jsp:… />
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
55
55
Sintassi degli elementi JSP
• Elementi di azione standard
<jsp:forward page=“nextPage.jsp”/>
Trasferisce il controllo dell’elaborazione della
richiesta http ad un’altra pagina
<jsp:forward page=“nextPage.jsp”>
<jsp:param> <jsp:param> ….
</jsp:forward >
Trasferisce il controllo dell’elaborazione della
richiesta http ad un’altra pagina passando parametri
supplementari
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
56
56
Sintassi degli elementi JSP
• Elementi di azione standard
<jsp:getProperty name=“nomeAssegnatoAlBean”
property = “NomeProprietà” >
Aggiunge il valore della proprietà di un Bean,
convertito in una stringa, alla risposta generata dalla
pagina
<jsp:setProperty name=“nomeAssegnatoAlBean”
property = “NomeProprietà” >
Imposta il valore della proprietà di un Bean
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
57
57
Sintassi degli elementi JSP
• Elementi di azione personalizzata
– Specifica e ambiente di sviluppo per realizzare nuove
azioni personalizzate (nuove tag library)
• JSTL (Java Standard Tag Library)
– Librerie predefinite di azioni
<c:
<x:
<fmt:
<sql:
B6 JSP
B6 JSP
Core
Elaborazione XML
Formattazione e internazionalizzazione
Accesso a database
Paolo Salvaneschi
Paolo Salvaneschi
58
58
Sintassi degli elementi JSP
<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>JSP is Easy</title>
</head>
<body bgcolor="white">
<h1>JSP is as easy as ...</h1>
<%-- Calculate the sum of 1 + 2 + 3 dynamically --%>
1 + 2 + 3 = <c:out value="${1 + 2 + 3}" />
</body>
</html>
B6 JSP
B6 JSP
Paolo Salvaneschi
Paolo Salvaneschi
59
59