1 / 45

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.

sorena
Download Presentation

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. Deployment: Memorandum • Il server (ad es. JBoss) èstatoavviato da shell • Eseguireil deployment copiandoilfile .war (eventualmentegenerato con Eclipse) nell’apposita directory del server (ad es. $JBOSS_HOME/server/default/deploy/) • La modifica di un componente software all’interno di Eclipse noncausail re-deployment automaticodell’applicazione (di default) • Il re-deployment deveessereeseguitorigenerandoil file .war e copiandolonell’apposita directory (come sopra)

  4. Deployment: Memorandum • Il server (ad es. JBoss) èstatoavviatoall’interno di Eclipse • Eseguireil deployment aggiungendol’applicazioneall’ambiente server di runtime nel tab “Servers” • Questononcausa la copia del file .war all’internodella directory di deploy del server (ad es. $JBOSS_HOME/server/default/deploy/) • Ognimodificacomportail re-deploy automatico • Di default Eclipse salvai file .war in unapropria directory interna al workspace ${workspace_dir}/.metadata/plugins/org.jboss.ide.eclipse.as.core/JBoss_5.1_Runtime_Server1387444525540/deploy

  5. Deployment: Memorandum

  6. Java EE: Architettura Multi-tier Java EE Application Server Web Client Legacy Tier Web Tier Connector/Messaging Tier B2B Client Data Tier Business Tier Data Access Tier Client Tier Middle Tier Data Tier

  7. Cos’èuna JSP? • Di fattounapagina JSP èuna Servlet! • Oltreaivantaggidelle Servlet offre: • Look-and-feel HTML (plain-text) • Facilità per i web designer • Svilupposenzaprogrammare in Java tramitel’uso di custom tags e expression language (EL) • Compilazione e deployment automatico da parte del Servlet container • Si dovrebbeconcentrare solo sullivello di “presentazione” (GUI) • La logicaapplicativaimplementataaltrove

  8. Java Servlet vs. JSP (1)

  9. Java Servlet vs. JSP (2)

  10. JSP: Ciclo di Vita • Simile a quello di una Servlet “classica” • Se l’istanzadella Servlet corrispondentealla JSP richiesta non esiste, il Servlet container: • Compila la JSP nella Servlet corrispondente • Carica la classe e la istanzia • Inizializzal’istanzadellaclasse Servlet tramiteilmetodojspInit • Per ognirichiestautente, ilcontainer invocailmetodo _jspServicedella Servlet associataalla JSP, passandoglioggetti request e response • Se rimossa, il container invocailmetodojspDestroy

  11. JSP: Compilazione • La compilazione da JSP a Servlet avviene in 2 passi: • Il file .jspvienecompilato in un file .java dal compilatore del container • Jasper suJBoss/Tomcat • Il file .java generato dal compilatoreviene a suavoltacompilato in un file .class dal compilatore Java standard (javac) • Eccoperchéil Servlet container necessitadell’intero JDK e non della sola piattaforma JRE

  12. JSP: Note sullacompilazione • La conversione .jsp .java  .class avvienesoltantounavolta o a fronte di unamodifica del file .jsp • I file generati (.java e .class) suJBosssitrovanoin: server/default/work/jboss.web/localhost/myapplication/org/apache/jsp/MyJSP_jsp.java

  13. Lab: MyFirstJSP con Eclipse • Creare un nuovo Dynamic Web Project • Creareuna JSP tramite Eclipse • Packaging tramite WAR • Deployment • Testing

  14. Lab: MyFirstJSP con Eclipse

  15. Lab: MyFirstJSP con Eclipse

  16. Hello.jsp: Implementazione

  17. Hello.jsp: Deployment+Testing HTTP GET HTTP POST

  18. Da JSP a Java Servlet: _jspService

  19. JSP API • Il contenutodellapagina JSP vieneeseguitoall’interno del metodogenerato _jspService • Tuttiicontenutistaticisonoconvertiti in chiamate a out.write() • Tutticontenutidinamici (inclusinei tag <% %>) vengonoeseguiti come codice Java “normale”

  20. JSP: Oggetti “impliciti” • Il metodogeneratoautomaticamente con la compilazione .jsp .java definisce e inizializzaalcunioggetti • Questioggettipossonoessereriferitiall’internodellastessapagina JSP

  21. JSP: Oggetti “impliciti”

  22. Sintassi JSP: Direttive • Le direttive JSP controllano la compilazione da JSP a Servlet • Non hannoalcuneffettosulcomportamento a run-time • Controllano solo la fase di generazione di codice

  23. Sintassi JSP: DirettivaPage

  24. Sintassi JSP: DirettivaInclude • Include ilcontenuto di un altro file JSP a tempo di traduzione/compilazione • Analogo ad editare in contenuto del file JSP inclusodirettamentenel file JSP che lo include

  25. Sintassi JSP: DirettivaTaglib • Fornisceaccesso a librerie di tag standard e custom • Piùavantiesamineremo JSTL

  26. Sintassi JSP: Scriptlets • Rappresentanoporzioni di codice Java all’interno di unapagina JSP • La sintassi per inserirescriptletsè la seguente: <% java_code %> oppure <jsp:scriptlet>…</jsp:scriptlet> • Unavoltatradotta la pagina JSP diventano parte del metodo _jspService • Come qualsiasiporzione di codice Java: • tuttigli statement devonoterminare con il “;” • tutte le parentesidevonoesserebilanciate • L’usomassiccio di scriptletèsconsigliatopoiché “snatura” ilveroruolo di unapagina JSP • interfaccia vs. logicaapplicativa

  27. Sintassi JSP: Scriptlets (esempio)

  28. Sintassi JSP: Expressions • Similiagliscriptlets ma piùspecifiche • Il risultato di un’espressioneèinviatoallo stream chegestisce la risposta • La sintassiè la seguente: <%= java expr%> oppure <jsp:expression>java expr</jsp:expression> • Le espressioninondevonoessere terminate con “;” perchévengonoconvertite in out.print(java expr);

  29. Sintassi JSP: Expressions (esempi)

  30. Sintassi JSP: Declarations • Usate per dichiararemetodi e variabili al di fuoridelloscope del metodo _jspService • sia di istanzachestatici • La sintassiè la seguente: <%! java decl %> oppure <jsp:declaration>java decl </jsp:declaration> • Consentonoilriuso del codicesebbene vi siano alternative migliori • custom tags e beans

  31. Sintassi JSP: Declarations (esempio)

  32. Sintassi JSP: Comments • Usati per commentareporzioni di pagina JSP • Siacontenutistatici <% -- comment --%> • Siacontenutidinamici <% -- Hello <%= getUser() %> --%> • Non ci possonoesserecommentiannidati • NOTA: Icommenti Java tradizionalisipossonousareall’internodegliscriptlets, espressioni (tranne “//”) e le dichiarazioni

  33. Lab: Calcolatrice JSP • CreareunaCalcolatriceattraversounapagina JSP cheprende2 argomentinumericiedunotra 4 possibilioperatori (+,-,*,/) e produce ilrisultatocorrispondente

  34. Sintassi JSP: Actions

  35. Sintassi JSP: Tag Libraries • HTML puòessereinseritoall’interno di Java Servlets • Analogamenteilcodice Java puòessereinseritoall’interno di pagine JSP • Desiderata: Piùseparazionetracontenutistatici e dinamici! • Soluzione: Incapsulamento di codice Java all’interno di specifici tag XML

  36. Sintassi JSP: Tag Libraries (2) • La sintassi per i tag XML è la seguente: <prefix:tag attr1=“val1”… attrN=“valN”>…</prefix:tag> • Si possonousare tag “standard” definiti da JSTL oppuredefinirsene di propri • I tag sonodistribuiti in cosiddette tag libraries checontengonoglioggettinecessari ad implementarei tag in esse definite

  37. Sintassi JSP: Tag Libraries (3) • Prima chei tag possanoessereusatidevonoesseredichiaratinel/i file JSP • La sintassi per la dichiarazioneè la seguente: <%@ taglib prefix=“pre” [ tagdir=“/WEB-INF/tags/dir” | uri=“URI” ] %> • Il prefisso (prefix) deveessereunivoco per ogni tag definitonella tag library di unapagina • Gliattributitagdiro uridevonoriferirsiaitag library descriptors (TLD)

  38. Sintassi JSP: Tag Library Descriptors (TLD)

  39. JSPStandard Tag Library (JSTL) • Include funzionalitàcomuni a molte JSP • Fornisce tags: • per ilcontrollo del flussodellepagine • if, choose, forEach, redirect, etc. • per la formattazionechesupporta I18N • per la manipolazione di documenti XML • per l’accesso a RDBMS

  40. JSTL: Esempio

  41. Supporto JSTL • NOTA: JBossfornisce “nativamente” ilsupporto JSTL • Altriambienti (ad es. Tomcat) non contengono le librerie JSTL, in questocasoènecessario: • Scaricarel’implementazione JSTL, ad esempio:http://download.java.net/maven/1/jstl/jars/jstl-1.2.jar • Copiareil file jstl.jardentro la directory WEB-INF/lib/ del progetto • Dichiarare le tag libraries usatenellecorrispondentipagine JSP • Re-packaging + Re-deployment

  42. JSP Expression Language (EL) • Linguaggio per l’accessoaidatimemorizzati in JavaBeans o Map usato al postodelleespressioniviste in precedenza ${user.name} vs. <%= user.getName() %> • Supportaaritmetica e logica ${2 + 2 > 3} • Supportailrecupero di informazioniannidate ${user.name.first} vs.<%= user.getName().getFirst() %>

  43. JSP Expression Language: Esempio

  44. JSP Expression Language: Operatori • Aritmetici: +, -, *, /, %, mod • Logici: and, &&, or, ||, not, !, ==, eq, !=, ne, <, lt, >, gt, <=, le, >=, ge, empty • Condizionali: a ? b : c

  45. JSP Expression Language: Oggetti “impliciti” • pageContext, servletContext, session, request, response • param, paramValues, header, headerValues, cookie, initParam, pageScope, requestScope, sessionScope, applicationScope

More Related