1 / 63

Java Enterprise Edition

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.

glenys
Télécharger la présentation

Java Enterprise Edition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Enterprise Edition Gabriele Tolomei DAIS – UniversitàCa’ FoscariVenezia

  2. 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

  3. AffableBean UnA VERA Applicazione Java EE

  4. 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

  5. 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)

  6. 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

  7. Scenario: Ambiente • L’ambienteprevistosu cui verràeseguital’applicazione in fase di rilascioè: • Java EE server  JBoss AS 5.1 • RDBMS  MySQL

  8. 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

  9. 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”

  10. Requisiti: Console Admin • La console di amministrazionedell’applicazioneè ad usoesclusivo del personale di AffableBean • Consente di visualizzaregliordinieseguitidaiclienti • Utilizzaun’interfaccia web via browser

  11. Requisiti: Livelli di Sicurezza • I dati “sensibili” deiclientichevengonotrasferitisulla rete devonoessereopportunamenteprotetti • Occorreprevenirel’accessoalla console di amministrazione da parte di utenti non autorizzati

  12. 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

  13. 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

  14. PaginadelleCategorie di Prodotti • Elencaiprodottidisponibili per quellacategoria (4) • Da questapaginal’utentepuòvisualizzareidettagli di un prodotto o aggiungereelementi al propriocarrello

  15. 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

  16. Pagina del CarrellodellaSpesa

  17. 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)

  18. Pagina del Pagamento

  19. Pagina di Conferma • Restituisce un messaggio al cliente con la confermacheilsuoordineèstatopreso in carica • All’ordinevieneassociato un identificativo • Vienevisualizzatoilriepilogodell’ordine

  20. Pagina di Conferma

  21. 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)

  22. Business Flow

  23. 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 • …

  24. 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)

  25. Architetturadell’Applicazione: MVC

  26. 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

  27. AffableBean + MVC

  28. 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

  29. Setup

  30. 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)

  31. Database

  32. 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

  33. 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) • mysqlavvia la console interattiva da linea di comando per interagire con il server MySQL • mysqladmintool di amministrazione del server da linea di comando

  34. 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

  35. 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;

  36. MySQL: Lista di Comandi • Per unalista di comandiutili, consultareilseguenteriferimento: http://www.pantz.org/software/mysql/mysqlcommands.html

  37. 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’;

  38. 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/

  39. 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

  40. 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

  41. MySQL + Eclipse: Profilo Selezionareil “tipo” di DB Specificare ilnome del profilo

  42. MySQL + Eclipse: Profilo Aggiungere/Editare il driver JDBC • Specificareiparametri • del profilo DB da creare: • Nome: affablebeanDB • URL • Username: affablebean • Password: affablebean

  43. MySQL + Eclipse: Profilo • Prima di testareilcorrettofunzionamento del profiloricordarsi di aver avviatoil server DB! • Se tuttova a buon fine, verrannomostratiidettagli del DB a cui siriferisceilprofilocreato

  44. 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)

  45. MySQL + Eclipse: SQL

  46. Interfaccia Web

  47. 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

  48. 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

  49. 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)

  50. Servlet “Controller”

More Related