Introduzione a JSP (Java Server Pages) MC 2005



Documenti analoghi
CORSO DI PROGRAMMAZIONE JAVA

JUG Ancona Italy. JSP 2.0: Tag Library. Matteo Piccinini Web Developer

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_1 V1.7. JSP parte A

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

19. LA PROGRAMMAZIONE LATO SERVER

Protocolli e architetture per WIS

Java Server Pages. Corso di Applicazioni Telematiche. A.A Lezione n.18 Prof. Roberto Canonico

Introduzione al linguaggio Java: Servlet e JSP

PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE

JavaServer Pages: Introduzione

Architetture Web: un ripasso

Laboratorio di Sistemi Fondamenti di JSTL (parte 1) Java (JSTL)

Programmazione server-side: Java Servlet

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Siti web centrati sui dati (Data-centric web applications)

Laboratorio di Basi di Dati

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Applicazioni web centrati sui dati (Data-centric web applications)

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Il Protocollo HTTP e la programmazione di estensioni Web

Componenti Web: client-side e server-side

UNIVERSITÀ DEGLI STUDI DI PARMA REALIZZAZIONE DI UNO STRUMENTO PER LA GESTIONE DI BASI DI DATI IN APPLICAZIONI WEB

Siti interattivi e dinamici. in poche pagine

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Laboratorio di sistemi Prima Web Application JSP [Java]

Architettura MVC-2: i JavaBeans

Concetti base. Impianti Informatici. Web application

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

Application Server per sviluppare applicazioni Java Enterprise

Server-side Programming: Java servlets Parte II

Laboratorio di reti II: Java Server Pages

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Il Web, HTML e Java Corso di Laurea in Ingegneria Informatica Progetto S.C.E.L.T.E.

SWIM v2 Design Document

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base Variabili, operatori e commenti Array...

Analisi e sviluppo di un componente per un ESB open source

Guida all Installazione del ProxyFatturaPA

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Manuale d uso della libreria Volta Log

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Strutture di accesso ai dati

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Funzioni in C. Violetta Lonati

Implementazione di MVC. Gabriele Pellegrinetti

Esercizi di JavaScript

Panoramica: che cosa è necessario

Corso basi di dati Introduzione alle ASP

Capitolo 4 Pianificazione e Sviluppo di Web Part

UNIVERSITÀ DEGLI STUDI DI FIRENZE FACOLTA DI INGEGNERIA DIPARTIMENTO DI SISTEMI E INFORMATICA. Elaborato di Tecnologie del Software per Internet

Primi passi con Apache Tomcat. L application server dell Apache group

PHP e Java ovvero come poter sfruttare entrambi i linguaggi e vivere felici... forse

Laboratorio di Sistemi Fondamenti di JSTL (parte 2) Java (JSTL)

Al giorno d oggi, i sistemi per la gestione di database

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Flavio De Paoli

Corso di Informatica Modulo T3 B2 - Database in rete

Programmazione ad Oggetti. Java Parte I

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

MetaMAG METAMAG 1 IL PRODOTTO

Introduzione alla programmazione Http lato server in Java

Programmazione Java Avanzata Spring - JDBC

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Programmazione Java Avanzata

Esercitazione 8. Basi di dati e web

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Come funziona internet

Access. P a r t e p r i m a

Indice Introduzione Elementi di base dei database Il linguaggio SQL (Structured Query Language)

Progettaz. e sviluppo Data Base

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

Lezione 6: Form 27/04/2012

Lezione III: Oggetti ASP e interazione tramite form HTML

Lezione 1 Introduzione

b) Dinamicità delle pagine e interattività d) Separazione del contenuto dalla forma di visualizzazione

Una metodologia di progettazione di applicazioni web centrate sui dati

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

INTEGRAZIONE DI DOCUSOFT CON UN ALTRO SOFTWARE GESTIONALE CON IL MODULO ACQUIRE&VIEW

Lezione 9. Applicazioni tradizionali

APPENDICE A Servlet e Java Server Page

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Informatica. Prof. A. Longheu. Introduzione a Java

Lezione II: Web server e ambiente di lavoro

Tutorial web Application

ITI M. FARADAY Programmazione modulare a.s

VIVAIO LAUDENSE RELAZIONE

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Transcript:

Introduzione a JSP (Java Server Pages) MC 2005

Cosa è JSP JSP è una tecnologia per lo sviluppo di pagine web con contenuti dinamici Miglioramento rispetto alle CGI (modello multithread) Indipendenza dalla piattaforma e dal produttore (write ones, run everywhere) Integrazione con JDBC, JNDI, RMI (tecnologie J2EE) Efficienza Scalabilità Robustezza e sicurezza (non è consentita l SQL injection)

CGI Common Gateway Interface Prgrammi scritti in Perl, C o usando la shell (Linux) Modello multiprocess (CGI) Modello multithread (JSP)

Web server [1]

Web server Java [2]

Servlet Una Servlet è un programma in esecuzione sul server e in grado di colloquiare col client per mezzo del protocollo HTTP

Ciclo di vita di una Servlet Init() Service() doget() dopost() Destroy() Apri

Init Il metodo Init serve per inizializzare la Servlet Viene eseguito una sola volta In genere si usa per effettuare operazioni computazionalmente costose Es: connessione ad un database

Service Il metodo Service viene mandato in esecuzione al momento di una richiesta di tipo GET o POST Manda in esecuzione il metodo doget() o dopost()

Destroy Il Servlet viene terminato dal Servlet Container Si usa per liberare la risorsa usata dal servlet Es: un file aperto o una connessione di database aperta

Codice Esempio di Servlet Esecuz

Progettazione di una Servlet con NetBeans Apri

Le servlet sono roba da programmatori! Soluzione: Java Server Pages

Fasi di traduzione ed elaborazione di una pagina JSP

JSP Servlet Engine/Application Server Servlet container Borland Enterprise Server Sun One Application Server Jetty JRun Orion Application Server Resin Apache Tomcat Weblogic Application Server WebSphere EAServer URL http://www.inprise.com http://www.sun.com http://jetty.mortbay.org/jetty/index.html http://www.macromedia.com/software/jrun http://www.orionserver.com http://www.caucho.com http://jakarta.apache.org/tomcat http://www.bea.com http://www- 4.ibm.com/software/webservers/appserv http://www.sybase.com

Web Application Nelle specifiche J2EE è chiamata Web Module Consiste di una logica di Presentazione Include HTML, JSP, file di testo, immagini, risorse generiche ecc Logica di Business Include JavaBean, Servlet, classi di utilità generale ecc Informazioni su come logica di presentazione e logica di business si legano (XML)

Struttura delle cartelle di una Web Application Apri

Root folder Ogni web application ha una struttura di cartelle ben definita. Esiste una cartella principale detta root folder o document base che contiene una sottocartella WEB-INF. All interno troviamo una sottocartella classes, una cartella lib e un file chiamato web.xml (deployment descriptor).

File War Una applicazione web di solito è impacchettata e distribuita (deployment) come file WAR (web archive), un formato compatibile con il formato Winzip

Un'applicazione web può contenere Pagine JSP e segmenti JSP Applets Classi java per le servlet, filtri, listeners, javabean, documenti statici (per es file HTML), immagini, suoni ecc Tag file e tag segment Custom tag library con file TLD

Una pagina JSP contiene Direttive Azioni JSP Commenti Testo template Elementi di scripting (Scriplet)

Esempio di pagina JSP (Es. 1) Servlet generata <%@ page contenttype="text/html" %> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <html> <head><title>jsp è facile</title></head> <body> <h1>jsp è facile come...</h1> <%-- Calcola la somma di 1 + 2 + 3 dinamicamente -- %> 1 + 2 + 3 = <c:out value="${1 + 2 + 3}" /> </body> </html> Azione JSTL direttive Testo template Direttiva commento Esecuz

Esempio di pagina JSP (Es. 2) Servlet generata <%@page contenttype="text/html"%> <%@page pageencoding="utf-8"%> <html> <head><title>jsp Page</title></head> <body> Scriptlet <% int a=1,b=2,c=3,d=a+b+c; out.println("<h1>ciao</h1>"); out.println("<h2>1+2+3="+d+"</h2>"); %> </body> </html> Direttiva Esecuz

Direttive e azioni JSP Le direttive hanno effetto soltanto durante la fase di traduzione della pagina in Servlet Java e sono utilizzate per specificare informazioni che riguardano la pagina stessa Le azioni rappresentano operazioni dinamiche, come inviare e-mail, scrivere un file sul server, leggere da un database che devono aver luogo durante l esecuzione della pagina

Direttive La sintassi generica è <%@ direttiva attr1= val1 attr2= val2 %> Ci sono 3 tipi di direttive: Page Include Taglib

Direttiva Page <%@ page contenttype="text/html" %> La direttiva page definisce gli attributi dipendenti dalla pagina, come il linguaggio di scripting, la pagina d errore e i requisiti di buffer In questo caso viene utilizzato soltanto l attributo contenttype che specifica il tipo MIME della pagina da generare

Direttiva Include <%@ include file= nomefile.htmlf %> La direttiva include esegue l inserimento del contenuto di un file statico all interno di una pagina nomefile.htmlf è un file statico e può non rappresentare una pagina html completa (f=fragment)

Direttiva Taglib <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> La direttiva taglib dichiara una tag library, contenente azioni personalizzate utilizzate nella pagina L attributo prefix definisce il prefisso dello spazio dei nomi XML (namespace) che si desidera utilizzare L attributo uri è un identificatore unico della tag library

Azioni [1] Un azione è rappresentata da un elemento simile a un tag HTML ordinario Formato1: <prefix:action attr1= val1 attr2= val2 > ActionBody </prefix:action> Formato2: <prefix:action attr1= val1 attr2= val2 />

Azioni [2] - Tag Library Gli elementi o tag di azione vengono spesso raggruppati in librerie note come Tag Library Una libreria molto utile è la JSTL (Java Standard Tag Library)

Azioni [3] Azioni standard Azioni personalizzate Azioni JSTL

Javabean [1] è una componente software riutilizzabile con la capacità di interagire con altre componenti Offre servizi Può essere utilizzato in ambienti di sviluppo differenti Classi java manipolabili mediante codice o mediante ambienti di sviluppo grafici

Javabean [2] Gli attributi di un javabean in genere sono attributi privati accessibili attraverso opportuni metodi getter e setter I metodi sono pubblici e rappresentano la via di accesso ai servizi offerti da un javabean Consentono la cosiddetta introspezione e personalizzazione La persistenza consente ad un javabean di salvare il proprio stato e di ripristinarlo in un secondo tempo (Object Serialization) I javabean adottano un meccanismo di comunicazione basato sugli eventi simile a quello utilizzato da AWT e Swing I javabean possono essere distribuiti attraverso file jar [deployment]

Azioni standard Elemento di azione <jsp:usebean> <jsp:getproperty> <jsp:setproperty> <jsp:include> <jsp:forward> <jsp:param> <jsp:plugin> Descrizione Rende disponibile un javabean Ricava il valore di una proprietà di un javabean Imposta il valore di una proprietà di un javabean Include la risposta di una servlet o di una pagina Jsp Inoltra l elaborazione di una richiesta a una servlet o una pagina jsp (reindirizzamento) Inserisce il valore di un parametro in una richiesta utilizzando <jsp:forward> o <jsp:include> Esecuzione di un applet con un plugin java Esempi Esempio1 Esempio2 Esempio3 Esempio4 Esempio5 Esempio6 Esempio7

JSTL [1] Nel giugno 2002, un gruppo di programmatori esperti si riunì nell ambito del programma Java Community Process col nome di JSR052 Expert Group Il risultato di quel lavoro fu la release 1.0 della JSTL (Java Standard Tag Library) In realtà si tratta di un insieme di 4 librerie che raggruppano azioni correlate

JSTL [2] CORE Elaborazione condizionale e iterativa XML Elaborazione di dati XML, come la trasformazione e l accesso ai singoli elementi I18N Formattazione e parsing di informazioni localizzate, inserimento di dati localizzati in una pagina SQL Lettura e scrittura di dati in database relazionali

JSTL [3] Libreria CORE XML I18N SQL URI http://java.sun.com/jsp/jstl/ core http://java.sun.com/jsp/jstl/ xml http://java.sun.com/jsp/jstl/ fmt http://java.sun.com/jsp/jstl/ sql Prefisso c x fmt sql

Usare JSTL con NetBeans Apri demo

Gestione di un database MySql con NetBeans Apri demo

Gestione di un database MySql con NetBeans Apri pdf

Linguaggio EL della JSTL [1] Codice EL (Expression Language) è un semplice linguaggio (simile a Javascript o ECMAScript e XPath) per definire i valori degli attributi delle azioni JSTL Esempio: <c:out value= ${1 + 2 + 3} /> <c:out value= ${param.parametroform} /> dove param è una variabile implicita EL che rappresenta la collezione di tutti i parametri contenuti in un form (parametroform è uno di questi) Esecuz

EL [2] Codice Altri dati relativi alla richiesta sono disponibili sotto forma di proprietà della variabile EL pagecontext Esempio: <c:out value= ${pagecontext.request.servername} /> (restituisce il nome del server al quale è stata inoltrata la richiesta) <c:foreach items= ${pagecontext.request.cookies} var= c > <c:out value= ${c.name} />=<c:out value= $ {c.value} /> </c:foreach> (restituisce la collection dei cookie memorizzati sul client, almeno JSESSIONID) Esecuz

Azioni JSTL [Core] <c:out> <c:if> <c:when> <c:choose> <c:set> <c:foreach>

Azione <c:out> Codice Inserisce il valore di un espressione nel buffer corrente della risposta (JspWriter) o un valore di default se l espressione principale è null Sintassi: <c:out value= espressioneel [escapexml=[true false] ] [default= espressionedidefault ] /> Esecuz

Codice Azione <c:if> Valuta il corpo soltanto se l espressione specificata è true. In alternativa il risultato può essere salvato come variabile Boolean di uno scope Sintassi1: <c:if test= espressionebooleana var= var [scope= page request session application ]/> Sintassi2: <c:if test= espressionebooleana > ElementiJSP </c:if> Esecuz

Scope [ambito di visibilità] (1) Lo scope definisce la durata di un oggetto per la condivisione dei dati tra le pagine, indicando se è disponibile solo a un utente oppure a tutti gli utenti. Sono definiti i seguenti scope: Pagina (page) Richiesta (request) Sessione (session) Applicazione (application)

Scope [2]

Esempio 1 Codice Esecuz

Azione <c:when> Rappresenta una delle alternative mutuamente esclusive di un blocco <c:choose> Sintassi: <c:when test= espressionebooleana > ElementiJSP </c:when>

Azione <c:choose> Codice Consente l elaborazione della prima azione <c:when> con il test che vale true; se non ce n è nessuna, l elaborazione passa a <c:otherwise> Sintassi: <c:choose> <c:when > <%-- prima when --%>. </c:when>. <c:when > <%-- seconda when --%>. </c:when>. <c:otherwise> <%-- altrimenti --%>. </c:otherwise> Esecuz </c:choose>

Azione <c:set> Imposta una variabile di scope o una proprietà di un oggetto sul valore di un espressione Sintassi: <c:set value= espressione var= var [scope= page request session application ] />

Azione <c:foreach> Codice Valuta il corpo un numero di volte prefissato oppure per ciascun elemento di una collezione Sintassi 1(collection): <c:foreach items= collection var= var ElementiJSP </c:foreach> Sintassi 2(numero prefissato): <c:foreach begin= startindex end= endindex [step= increment ] var= var > ElementiJSP </c:foreach> Esecuz

Codice Azioni JSTL [XML] XML è un formato di interscambio dei dati strutturati tra piattaforme differenti Esecuz

Azioni JSTL [Sql] <sql:setdatasource> <sql:query> <sql:param> <sql:update>

Azione <sql:setdatasource> Imposta la variabile di configurazione dell origine dati o salva le informazioni relative in una variabile di scope. Usata per prototipi di applicazioni piccole e semplici Sintassi: <sql:setdatasource [datasource= originedati url= url [driver= nomeclassedriver ] [user= nomeutente ] [password= password ]] [var= var ] [scope= page request session application ] />

Azione <sql:query> Codice Esegue un istruzione SQL SELECT e salva il risultato in una variabile di scope. L istruzione può contenere un punto interrogativo (?) come segnaposto di valori assegnati da <sql:param> nidificate Sintassi: <sql:query sql= istruzionesqlselect [datasource= originedati ] [maxrows= massimonumerorighe ] [startrow= index ] var= var [scope= page request session application ] /> Esecuz

Azione <sql:param> Codice Si utilizza come azione nidificata di <sql:query> e <sql:update> per assegnare un valore a un segnaposto Sintassi: <sql:param value= valoreparametro /> Esecuz

Azione <sql:update> Esegue un istruzione SQL INSERT, UPDATE, DELETE. Esegue l istruzione CREATE (DDL) Sintassi: <sql:update sql= istruzionesql [datasource= originedati ] [var= var [scope= page request session application ]] />

Schema di autenticazione con JSP Apri demo

Schema di autenticazione con JSP Apri pdf

Database example (MySql)

Registrazione dipendenti Esecuz

Ricerca Esecuz

Approfondimenti Java ServerPages 3rd edition Hans Bergsten, OReally-HopsLibri Web Application in Java M. Bigatti, Ed. Master (IoProgrammo) JSP-Guida alla programmazione C. Pelliccia, Ed. Master (IoProgrammo) Java, Manuale pratico Mokabyte, www.mokabyte.it VisualBuilder.com www.visualbuilder.com