630 likes | 830 Views
Java Enterprise Edition. Gabriele Tolomei DAIS – Università Ca ’ Foscari Venezia. Programma del Corso. 09/01 – Introduzione 10/01 – Java Servlets 16-17 /01 – JavaServer Pages (JSP) 23-24/01 – Lab: Applicazione “ AffableBean ” 30-31/01 – Enterprise JavaBeans (EJB) + Lab.
E N D
Java Enterprise Edition Gabriele Tolomei DAIS – UniversitàCa’ FoscariVenezia
Programma del Corso • 09/01 –Introduzione • 10/01 – Java Servlets • 16-17/01 – JavaServer Pages (JSP) • 23-24/01 – Lab: Applicazione“AffableBean” • 30-31/01 – Enterprise JavaBeans (EJB) + Lab
AffableBean UnA VERA Applicazione Java EE
Scenario: Introduzione • AffableBeanèilnome di un piccolo negozio di generialimentari • Collabora con agricoltorilocali per fornireprodotti di colturabiologica • Da un sondaggioeffettuato sui clientièrisultatocheil 65% di essisarebbeinteressato ad un servizio di acquisto/consegna online
Scenario: Obiettivo • In quantosviluppatori Java web, vi vienerichiestodi realizzare: • l’applicazione web checonsental’acquisto online aiclienti di AffableBean • una console amministrativa (sempretramiteinterfaccia web) checonsentaallo staff di AffableBean di teneretracciadegliordini • Implementazione del modello MVC (Model-View-Controller)
Scenario: SupportoLinguistico • Il negoziositrova in Italia, ma vista la posizioneturistica, serve molticlientistranieri con cui siinterfaccia in inglese • L’applicazione web dovràpertantosupportareentrambe le lingue: italiano e inglese
Scenario: Ambiente • L’ambienteprevistosu cui verràeseguital’applicazione in fase di rilascioè: • Java EE server JBoss AS 5.1 • RDBMS MySQL
Requisiti: CategorieProdotti • Rappresentazione “online” deibeni e deiprodottichesonovendutifisicamente dal negozio • 4 categoriedi prodotto: • Latticini • Carni • Panetteria • Frutta e Verdura • Ciascunacategoriacontiene4prodotti • Per ciascunprodotto (16 in totale) occorrespecificarealcunidettagli, come: nome, immagine, descrizionee prezzo
Requisiti: CarrellodellaSpesa • Occorreimplementare le seguentifunzioni: • Aggiungere/Rimuovereprodotti al/dal carrello • Aggiornare la quantità di prodottinelcarrello • Visualizzare un sommario di tuttiiprodotti e le relative quantitàpresentinelcarrello • Eseguire un ordine di un prodotto e procedere al pagamentotramite un servizio “sicuro”
Requisiti: Console Admin • La console di amministrazionedell’applicazioneè ad usoesclusivo del personale di AffableBean • Consente di visualizzaregliordinieseguitidaiclienti • Utilizzaun’interfaccia web via browser
Requisiti: Livelli di Sicurezza • I dati “sensibili” deiclientichevengonotrasferitisulla rete devonoessereopportunamenteprotetti • Occorreprevenirel’accessoalla console di amministrazione da parte di utenti non autorizzati
Casid’Uso: “Mockups” • Per potersviluppareefficacementel’applicazioneè utile disegnare le schermateprincipali con cui l’utentesiinterfacceràdurante la navigazione • Vedremopiùavanti come queste “bozze” di interfacce web non sianoaltroche le “viste” nelmodello MVC
Pagina di Benvenuto • Costituisce la home page del sito web e ilpuntod’ingressoprincipaleall’applicazione • Consenteall’utente di iniziare la navigazioneall’internodellevarie (4) categorie di prodotti
PaginadelleCategorie di Prodotti • Elencaiprodottidisponibili per quellacategoria (4) • Da questapaginal’utentepuòvisualizzareidettagli di un prodotto o aggiungereelementi al propriocarrello
Pagina del CarrellodellaSpesa • Elencaiprodottipresentinelcarrellodellaspesa • Mostraidettagli di ciascunprodotto e ilsubtotale • Da questapaginal’utentepuò: • Cancellaretuttiglielementinelcarrello • Aggiornare la quantità di un qualsiasiprodottoprovocando, di conseguenza, ilricalcolo del prezzo e quantità (se la quantitàvieneimposta a “0” la rigarelativa a quelprodottovienerimossa • Ritornareallapaginaprecedente per proseguiregliacquisti • Completarel’acquisto e procedere con ilpagamento
Pagina del Pagamento • Raccoglie le informazioni di pagamento del clientetramiteapposito form • Mostra le condizioni di pagamento • Offreilriepilogodeibenichesistanno per acquistare • L’utentedeveinviare le propriecredenziali per ilpagamentosu di un canale di comunicazionesicuro (HTTPS vs. HTTP)
Pagina di Conferma • Restituisce un messaggio al cliente con la confermacheilsuoordineèstatopreso in carica • All’ordinevieneassociato un identificativo • Vienevisualizzatoilriepilogodell’ordine
AltriRequisiti • L’utentepuòprocedereall’acquisto da qualsiasipagina a pattoche: • Il carrello non siavuoto • L’utente non siagiànellapagina di pagamento • L’utente non abbiagiàeseguitoilpagamento (ovverosianellapagina di conferma) • Da tutte le paginel’utentepuò: • Vedere lo stato del propriocarrello (se non èvuoto) • Ritornarealla homepage (cliccandosul logo) • L’utentedevepoterselezionare la lingua di qualunquepagina (eccettoquella di conferma)
Architetturadell’Applicazione • Suddividere le responsabilità/funzionitra le variecomponenti e determinare la lorointerazione • Usaresolamente la tecnologia JSP (Scriptlet) ha alcunisvantaggi: • Il codiceall’internodellepagine JSP non èriusabile da altricomponenti • Ripetizione di logicachedeveesserecondivistatrapiùcomponenti JSP • Mix tralogica e presentazione • La fase di testing èpiuttostocomplicata • …
Architetturadell’Applicazione: MVC • Paradigmachesuddividel’applicazione in 3 componentiinteroperabili: • Model (M) rappresentai “dati” del dominioapplicativosu cui opera la business logic • View (V) visualizzailcontenuto di un modello (di dati) secondo specifichemodalità e smistal’inputdell’utente ad un controller • Controller (C) definisceilcomportamentodell’applicazioneinterpretando le richiestedell’utente (HTTP GET/POST nelcaso web)
AffableBean + MVC • Applicareilparadigma MVC per la realizzazionedell’applicazioneAffableBean • Usareservlet per gestire le richiestecheprovengonodagliutenti Controller • Le pagine “bozza” mostrate in precedenzadiventano le “viste” JSP View • Infineidati (memorizzati in un RDBMS) sarannoacceduti e modificatitramiteEJB session beans e JPA entity classes Model
Pianificazione • Setup dell’ambiente di sviluppo • Preparazione del modellodeidatidell’applicazione (DB) • Creazione/Organizzazionedei file per il front-end (interfaccia) dell’applicazione • Creazione di una servlet chefaccia da “controller” • Connessionedell’applicazione al DB • Sviluppodella business logic • Aggiuntasupportolinguistico • Creazione console di amministrazione • Gestionedellasicurezzadell’applicazione
Setup Ambiente di Sviluppo • Abbiamobisogno di 3 progetti Eclipse distinti: • AffableBeanWeb (.war) Progetto Web dinamico per la realizzazione del webtier (Servlet + JSP) • AffableBeanEJB (.jar) Progetto EJB per la realizzazionedell’enterprise tier (EJB) • AffableBeanEAR (.ear) Progetto Enterprise Application contenitore di AffableBeanWeb e AffableBeanEJB • NOTA: A partire da Java EE 6 èpossibileincludere le funzionalità EJB direttamenteall’interno di un progetto Web dinamico (.war)
Il Database MySQL • Scaricareilserver MySQL Community Server + MySQL Workbench http://dev.mysql.com/downloads • Prendereconfidenza con alcunicomandi di base per l’interazione con MySQL • Di seguitosupponiamoche ${MYSQL_HOME} siail path del file system in cui sitrovailvostro server MySQL
MySQL: Comandi Base • Tuttiicomandiseguentisitrovano in ${MYSQL_HOME}/bin • mysqldèl’eseguibilechedeveesserelanciato per avviareilDB server • supiattaforma Windows NT èpossibileconfigurareil server come servizio di sistema (avvio in fase di boot) • mysqlavvia la console interattiva da linea di comando per interagire con il server MySQL • mysqladmintool di amministrazione del server da linea di comando
MySQL: Avvio • Portarsisu ${MYSQL_HOME}/bin e avviareil server tramiteilcomando: > mysqld • Per accertarsicheil server sisiaavviatocorrettamentedigitareilseguentecomando: > mysqladminping • Se tuttoèandato a buon fine compariràilseguentemessaggio: mysqld is alive
MySQL: Interfaccia da Linea di Comando • Unavoltaavviatoil server DB èpossibileinteragire con essotramiteinterfaccia da linea di comandodigitando: > mysql –u root • L’utenterootèl’utente di default creatodall’installazione di MySQL ed ha tuttiiprivilegi di amministrazione • Èconsigliabileaggiungereuna password a questoutente in questomodo: > mysql –u root mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘password’); mysql> FLUSH PRIVILEGES;
MySQL: Lista di Comandi • Per unalista di comandiutili, consultareilseguenteriferimento: http://www.pantz.org/software/mysql/mysqlcommands.html
Il ModellodeiDati • Usiamo MySQL Workbench per ildisegnodello schema del DB • Questostrumentoconsente la progettazionedello schema concettuale • Lo schema concettualeverrà poi realizzatoconcretamentein un’istanza del nostro DB server MySQL (Forward Engineering) • Unavolta create le tabelle “reali” sul DB, crearel’utentechel’applicazioneuserà per accedereaidati: • GRANT ALL PRIVILEGES ON affablebeanDB.* TO affablebean@localhost IDENTIFIED BY ‘affablebean’;
Java + DB: JDBC API • La JDBC API forniscel’interfacciatraun’applicazione Java ed un qualsiasi DB • In questomodoconsenteallosviluppatore di astrarre dal particolare DB con cui sideveinteragire • La maggior parte deiproduttori di DB (MySQL, Oracle, IBM DB2, etc.) fornisceun’implementazione di JDBC API • Per interfacciarsi con MySQL scaricarel’appositoconnettore JDBC e renderlodisponibilealla/alleapplicazioneche ne fa/fannouso http://dev.mysql.com/downloads/connector/j/ • Nelnostrocaso, aggiungereil file .jar nella directory del server JBoss ${JBOSS_SERVER}/lib/
Java + DB: JDBC API MySQL J D B C A P I JDBC MySQL Oracle Java SE/EE Application JDBC Oracle … IBM DB2 JDBC IBM
MySQL + Eclipse: Profilo • Eclipse offreun’apposita “vista” per l’interfaccia con variesorgentidati • Window Show View Data Source Explorer • Per aggiungere un profilospecificosu un DB esistente: • Click dx su “Database Connections” New • Seguire le istruzioni del wizard per la creazione del profilo
MySQL + Eclipse: Profilo Selezionareil “tipo” di DB Specificare ilnome del profilo
MySQL + Eclipse: Profilo Aggiungere/Editare il driver JDBC • Specificareiparametri • del profilo DB da creare: • Nome: affablebeanDB • URL • Username: affablebean • Password: affablebean
MySQL + Eclipse: Profilo • Prima di testareilcorrettofunzionamento del profiloricordarsi di aver avviatoil server DB! • Se tuttova a buon fine, verrannomostratiidettagli del DB a cui siriferisceilprofilocreato
MySQL + Eclipse: SQL • Interagire con il DB dall’interno di Eclipse tramiteillinguaggio standard per RDBMS: SQL • Click dx sulprofilo DB Open SQL Scrapbook • Cisonomoltialtristrumenti ad hoc per l’interazione via SQL con il DB (extra Eclipse)
Le Viste: Pagine JSP • 5 vistecorrispondenti a 5 pagine JSP: • index.jsp (punto di accessodell’applicazione) • All’interno di WebContent/WEB-INF/ • Accedibile “pubblicamente” via HTTP GET • Le altrevistedevonoessereaccedute solo a fronte di scambi di dati col server e per questosonomemorizzate in unasottocartella “view” di WEB-INF • view/cart.jsp carrellodellaspesa • view/category.jsp categorie di prodotto • view/checkout.jsp inserimentodatipagamento • view/confirmation.jsp confermaordine
Le Viste: Pagine JSP • Header e Footer a comune di tutte le paginevengonoinseriti in appositi “frammenti” JSP (.jspf) • All’internodella directory WEB-INF/jspf • Evitano la duplicazione di contenutostaticocomune a tutte le viste
Le Viste: Pagine JSP • Utilizzareil link fornitonel tutorial per scaricare le viste • Il contenuto di questepagine JSP utilizza un foglio di stile CSS (affablebean.css) • Inserireil .cssall’interno di un’apposita directory del progetto Eclipse (ad es. WebContent/css)