B6 JSP Paolo Salvaneschi 1
B6_1 V1.7
JSP parte A
Applicazioni Internet B
Paolo Salvaneschi
Università di BergamoFacoltà di Ingegneria
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 2B6 JSP Paolo Salvaneschi 2
• Java Server Pages• Installazione di Tomcat• Struttura directory Tomcat• Creazione e installazione di una applicazione
JSP• JSP Overview• Sintassi degli elementi JSP
INDICE
B6 JSP Paolo Salvaneschi 3B6 JSP Paolo Salvaneschi 3
Java Server Pages
ClientServer
HTTPD
Server
Data base
Sistema Informativo
HTTP
Microsoft Internet ExplorerNetscape Navigator
JSP
Tomcat
Application Server
HTMLCSS
JavaScript
B6 JSP Paolo Salvaneschi 4B6 JSP Paolo Salvaneschi 4
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 Paolo Salvaneschi 5B6 JSP Paolo Salvaneschi 5
Installazione di Tomcat
• INSTALLAZIONE TOMCAT• Versioni:
Java j2sdk1.4.1_01 (con compilatore, non versione re solo runtime)
Tomcat 4.1.30JSTL 1.0 (jakarta-taglibs-standard-1.0.5.zip)
B6 JSP Paolo Salvaneschi 6B6 JSP Paolo Salvaneschi 6
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 Paolo Salvaneschi 7B6 JSP Paolo Salvaneschi 7
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 Paolo Salvaneschi 8B6 JSP Paolo Salvaneschi 8
Installazione di Tomcat
• Installazione di Tomcatnella cartella C:\Apache Group\Tomcat 4.1– HTTP/1.1 Connector Port: 8080 – User:admin– Passw: nessuna
B6 JSP Paolo Salvaneschi 9B6 JSP Paolo Salvaneschi 9
Installazione di Tomcat
• AVVIO TOMCAT• Start TOMCAT
• Al termine delle attività: stop TOMCAT
B6 JSP Paolo Salvaneschi 10B6 JSP Paolo Salvaneschi 10
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 defaultper le applicazioniWeb servite da Tomcat Applicazione di default
B6 JSP Paolo Salvaneschi 11B6 JSP Paolo Salvaneschi 11
Installazione di Tomcat
B6 JSP Paolo Salvaneschi 12B6 JSP Paolo Salvaneschi 12
Installazione di Tomcat
• Amministrazione di TOMCAT: http://localhost:8080/admin• Definizione e gestione utenti • ……….
B6 JSP Paolo Salvaneschi 13B6 JSP Paolo Salvaneschi 13
Installazione di Tomcat
• Amministrazione di TOMCAT: http://localhost:8080/manager
• Es: lista applicazioni installate e gestione relativa• Installazione di nuove applicazioni
B6 JSP Paolo Salvaneschi 14B6 JSP Paolo Salvaneschi 14
Installazione di Tomcat
B6 JSP Paolo Salvaneschi 15B6 JSP Paolo Salvaneschi 15
Struttura directory Tomcat
Applicazioneservita da Tomcat
B6 JSP Paolo Salvaneschi 16B6 JSP Paolo Salvaneschi 16
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 Paolo Salvaneschi 17B6 JSP Paolo Salvaneschi 17
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 Paolo Salvaneschi 18B6 JSP Paolo Salvaneschi 18
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 Paolo Salvaneschi 19B6 JSP Paolo Salvaneschi 19
Creazione e installazione di una applicazione JSP
Applicazioneservita da Tomcat
B6 JSP Paolo Salvaneschi 20B6 JSP Paolo Salvaneschi 20
Creazione e installazione di una applicazione 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>
index.jsp
<%= Espressione %>Utilizzate per aggiungere alla risposta http il risultato dell’esecuzione di un’espressione di scripting
B6 JSP Paolo Salvaneschi 21B6 JSP Paolo Salvaneschi 21
Creazione e installazione di una applicazione 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>
http://localhost:8080/Esempio_1
Testo HTML generato
B6 JSP Paolo Salvaneschi 22B6 JSP Paolo Salvaneschi 22
Creazione e installazione di una applicazione JSP
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-appPUBLIC "-//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>
Descrittore dell’installazione
B6 JSP Paolo Salvaneschi 23B6 JSP Paolo Salvaneschi 23
Creazione e installazione di una applicazione JSP
http://localhost:8080/Esempio_1
%CATALINA_HOME%\webapps\Esempio_1\index.jsp
C:\Apache Group\Tomcat 4.1\webapps\Esempio_1\index.jsp
Regole di mappatura
Context path
B6 JSP Paolo Salvaneschi 24B6 JSP Paolo Salvaneschi 24
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 Paolo Salvaneschi 25B6 JSP Paolo Salvaneschi 25
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 servletgirano.
– Il “container” passa i dati dal client verso le servlet e viceversa (via protocollo http).
B6 JSP Paolo Salvaneschi 26B6 JSP Paolo Salvaneschi 26
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 Paolo Salvaneschi 27B6 JSP Paolo Salvaneschi 27
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 Paolo Salvaneschi 28B6 JSP Paolo Salvaneschi 28
JSP Overview
• Elaborazione della pagina JSPIl 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 Paolo Salvaneschi 29B6 JSP Paolo Salvaneschi 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>
<%}
}%>
<HR></BODY></HTML>
index.jsp
Scriptlet
<% Frammento di codice %>Utilizzati per includere frammenti di codice nella pagina
B6 JSP Paolo Salvaneschi 30B6 JSP Paolo Salvaneschi 30
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>
<%}
}%>
<HR></BODY></HTML>
http://localhost:8080/Esempio_2
B6 JSP Paolo Salvaneschi 31B6 JSP Paolo Salvaneschi 31
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>
Testo HTML generato
B6 JSP Paolo Salvaneschi 32B6 JSP Paolo Salvaneschi 32
JSP Overview
• Jsp è case-sensitive
• Directories e nomi di files della web application sono case-sensitive
…<IMG SRC=“Citta.gif">…
…<IMG SRC="citta.gif">…
Uno.htm
Due.htm
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
B6 JSP Paolo Salvaneschi 33B6 JSP Paolo Salvaneschi 33
JSP Overview
• Pagina JSP• Testo template• Elementi JSP
–Direttive–Elementi di scripting–Componenti JavaBean–Elementi di azione standard–Azioni personalizzate e JSTL
B6 JSP Paolo Salvaneschi 34B6 JSP Paolo Salvaneschi 34
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><% 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>?
<% } else if (numguess.getNumGuesses() == 0) { %>…………
Azioni
Direttive
Elementi discripting
Testo template
B6 JSP Paolo Salvaneschi 35B6 JSP Paolo Salvaneschi 35
JSP Overview
• Modi diversi di inserire il codice• Primo modo:
–Elementi di scriptingCodice java inserito nel testo
• La pagina è realizzata da un programmatore java
B6 JSP Paolo Salvaneschi 36B6 JSP Paolo Salvaneschi 36
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 Paolo Salvaneschi 37B6 JSP Paolo Salvaneschi 37
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 Paolo Salvaneschi 38B6 JSP Paolo Salvaneschi 38
JSP Overview
Java Beans
<%@ 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 Paolo Salvaneschi 39B6 JSP Paolo Salvaneschi 39
<%@ 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>
JSP Overview
Elementi di azione personalizzate e JSTL
B6 JSP Paolo Salvaneschi 40B6 JSP Paolo Salvaneschi 40
Sintassi degli elementi JSP
• <%-- … --%> Commento• Direttive• Sintassi
<%@nomeDirettiva attr1=“valore” attr2=“valore2 … %>
• Tipi di direttive<%@include … %><%@page … %><%@taglib … %>
B6 JSP Paolo Salvaneschi 41B6 JSP Paolo Salvaneschi 41
Sintassi degli elementi JSP
• <%@include file=“Percorso” %>• Esegue l’inserimento del contenuto di un file
nella pagina• Il nuovo testo è compilato
B6 JSP Paolo Salvaneschi 42B6 JSP Paolo Salvaneschi 42
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 Paolo Salvaneschi 43B6 JSP Paolo Salvaneschi 43
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 azioneuri stringa utilizzata per localizzare
l’implementazione della tag library
B6 JSP Paolo Salvaneschi 44B6 JSP Paolo Salvaneschi 44
Sintassi degli elementi JSP
• Elementi di scriptingConsentono di aggiungere porzioni di codice alla pagina JSP
• Tipi di elementi– Dichiarazioni– Espressioni– Scriptlet
B6 JSP Paolo Salvaneschi 45B6 JSP Paolo Salvaneschi 45
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 Paolo Salvaneschi 46B6 JSP Paolo Salvaneschi 46
Sintassi degli elementi JSP
• Scriptlet<% Frammento di codice %>Utilizzati per includere frammenti di codice nella paginaIl linguaggio deve essere definito nella direttiva page(default java)
B6 JSP Paolo Salvaneschi 47B6 JSP Paolo Salvaneschi 47
<%@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>
…………………
Sintassi degli elementi JSP
Elementi di scripting
Dichiarazione
B6 JSP Paolo Salvaneschi 48B6 JSP Paolo Salvaneschi 48
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>
Elementi di scripting
Espressione
B6 JSP Paolo Salvaneschi 49B6 JSP Paolo Salvaneschi 49
Sintassi degli elementi JSP
<HTML><HEAD></HEAD><BODY BGCOLOR="ffffcc"><H1>Esempio 3</H1><HR><CENTER><H2>Date and Time</H2><%
java.util.Date today = new java.util.Date();out.println("Today's date is: "+today);
%></CENTER> <HR></BODY></HTML> Elementi di scripting
Classe Datedel package
java.util
Scriptlet
B6 JSP Paolo Salvaneschi 50B6 JSP Paolo Salvaneschi 50
Sintassi degli elementi JSP
<%@page import="java.util.*" %><HTML><HEAD></HEAD><BODY BGCOLOR="ffffcc"><H1>Esempio 4</H1><HR><CENTER><H2>Date and Time</H2><%
Date today = new Date();out.println("Today's date is: "+today);
%></CENTER> <HR></BODY></HTML> Elementi di scripting
Import del packagejava.util
Classe Date
Scriptlet
B6 JSP Paolo Salvaneschi 51B6 JSP Paolo Salvaneschi 51
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> Elementi di scripting
Scriptlet
B6 JSP Paolo Salvaneschi 52B6 JSP Paolo Salvaneschi 52
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 Paolo Salvaneschi 53B6 JSP Paolo Salvaneschi 53
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 Paolo Salvaneschi 54B6 JSP Paolo Salvaneschi 54
Sintassi degli elementi JSP
• Elementi di azione standardComponenti invocati quando un client chiede la pagina JSP
• Sintassi XMLEsempio:
<jsp:forward page=“nextPage.jsp”><jsp:param name=“aParam” nvalue=“aValue”/>
</jsp:forward>Tag iniziale con eventuali attributi, tag finale, annidamento
B6 JSP Paolo Salvaneschi 55B6 JSP Paolo Salvaneschi 55
Sintassi degli elementi JSP
• Notazione completaTag iniziale <jsp:… >
corpoTag finale </jsp:… >
• Notazione abbreviata se non c’è un corpo<jsp:… />
B6 JSP Paolo Salvaneschi 56B6 JSP Paolo Salvaneschi 56
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 Paolo Salvaneschi 57B6 JSP Paolo Salvaneschi 57
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 Paolo Salvaneschi 58B6 JSP Paolo Salvaneschi 58
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: Core
<x: Elaborazione XML
<fmt: Formattazione e internazionalizzazione
<sql: Accesso a database
B6 JSP Paolo Salvaneschi 59B6 JSP Paolo Salvaneschi 59
<%@ 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>
Sintassi degli elementi JSP
Top Related