Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Einführung in Java Enterprise Edition 5 (Java EE 5) Dirk Wischermann Marc Spisländer Friedrich-Alexander-Universität Erlangen-Nürnberg 30. April 2007 Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Gliederung 1 Einführung 2 Web-Anwendungen mit Java EE Servlets Java ServerPages 3 Enterprise JavaBeans Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java EE Java EE 5 beschreibt eine Infrastruktur bzw. ein Framework, die folgendes erleichtern soll: Entwicklung von mehrschichtigen Anwendungen Kommunikation zwischen verteilten Objekten (d.h. zwischen Objekten aus verschiedenen Adressräumen) Objektpersistenz Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java EE Literatur http: //java.sun.com/javaee/5/docs/tutorial/doc/ Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java-EE-Anwendungen Eine Java EE Anwendung besteht aus einer Menge von clientund serverseitigen Komponenten: Serverseitig: Enterprise JavaBeans Servlets und Java ServerPages Clientseitig: Hypertextformulare Java-Applets Standard-Java-Anwendungen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java-EE-Anwendungen Eine Java EE Anwendung besteht aus einer Menge von clientund serverseitigen Komponenten: Serverseitig: Enterprise JavaBeans Servlets und Java ServerPages Clientseitig: Hypertextformulare Java-Applets Standard-Java-Anwendungen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java EE Containers Containers sind Umgebungen, in denen die Java=ËEKomponenten ausgeführt werden. Sie steuern den Lebenszyklus der Komponenten. Sie übernehmen Low-Level-Aufgaben, wie z. B. die Kommunikation zwischen Komponenten über Netzwerken, Verwaltung von Zugriffsrechten oder die Realisierung der Objektpersistenz. Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java EE 5 Konzeptionelle Sicht Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Erstellung von Java-EE-Anwendungen Arbeitsschritte 1 Java-EE-Server starten 2 Programmierung der EE-Komponenten in geeigneten Entwicklungsumgebungen 3 Komponenten als Archiv komprimieren 4 Archiv auf Server aufspielen (Deployment) Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Erstellung von Java-EE-Anwendungen Arbeitsschritte 1 Java-EE-Server starten 2 Programmierung der EE-Komponenten in geeigneten Entwicklungsumgebungen 3 Komponenten als Archiv komprimieren 4 Archiv auf Server aufspielen (Deployment) Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Erstellung von Java-EE-Anwendungen Arbeitsschritte 1 Java-EE-Server starten 2 Programmierung der EE-Komponenten in geeigneten Entwicklungsumgebungen 3 Komponenten als Archiv komprimieren 4 Archiv auf Server aufspielen (Deployment) Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Erstellung von Java-EE-Anwendungen Arbeitsschritte 1 Java-EE-Server starten 2 Programmierung der EE-Komponenten in geeigneten Entwicklungsumgebungen 3 Komponenten als Archiv komprimieren 4 Archiv auf Server aufspielen (Deployment) Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Web-Anwendungen mit Java EE Eine Web-Anwendung ist eine Anwendung, die ihre Eingabe als HTTP-Request erwartet und die Ausgabe (typischerweise) als HTML generiert. Realisierung mit Java EE mittels Servlets oder JavaServer Pages Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlets Ein Servlet ist eine Komponente, die aus einer Java-Klasse und einer XML-Beschreibung besteht. Die Java-Klasse erweitert javax.servlet.http.HttpServlet. Wichtigste Methoden: doGet(HttpServletRequest r, HttpServletResponse a) doPost(HttpServletRequest r, HttpServletResponse a) Sie werden von dem Application-Server bei einer HTTP-GET- bzw. HTTP-POST-Anfrage aufgerufen a kapselt die HTTP-Anfrage r kapselt die HTTP-Antwort Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlets Ein Servlet ist eine Komponente, die aus einer Java-Klasse und einer XML-Beschreibung besteht. Die Java-Klasse erweitert javax.servlet.http.HttpServlet. Wichtigste Methoden: doGet(HttpServletRequest r, HttpServletResponse a) doPost(HttpServletRequest r, HttpServletResponse a) Sie werden von dem Application-Server bei einer HTTP-GET- bzw. HTTP-POST-Anfrage aufgerufen a kapselt die HTTP-Anfrage r kapselt die HTTP-Antwort Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlets Ein Servlet ist eine Komponente, die aus einer Java-Klasse und einer XML-Beschreibung besteht. Die Java-Klasse erweitert javax.servlet.http.HttpServlet. Wichtigste Methoden: doGet(HttpServletRequest r, HttpServletResponse a) doPost(HttpServletRequest r, HttpServletResponse a) Sie werden von dem Application-Server bei einer HTTP-GET- bzw. HTTP-POST-Anfrage aufgerufen a kapselt die HTTP-Anfrage r kapselt die HTTP-Antwort Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlets Ein Servlet ist eine Komponente, die aus einer Java-Klasse und einer XML-Beschreibung besteht. Die Java-Klasse erweitert javax.servlet.http.HttpServlet. Wichtigste Methoden: doGet(HttpServletRequest r, HttpServletResponse a) doPost(HttpServletRequest r, HttpServletResponse a) Sie werden von dem Application-Server bei einer HTTP-GET- bzw. HTTP-POST-Anfrage aufgerufen a kapselt die HTTP-Anfrage r kapselt die HTTP-Antwort Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlets Ein Servlet ist eine Komponente, die aus einer Java-Klasse und einer XML-Beschreibung besteht. Die Java-Klasse erweitert javax.servlet.http.HttpServlet. Wichtigste Methoden: doGet(HttpServletRequest r, HttpServletResponse a) doPost(HttpServletRequest r, HttpServletResponse a) Sie werden von dem Application-Server bei einer HTTP-GET- bzw. HTTP-POST-Anfrage aufgerufen a kapselt die HTTP-Anfrage r kapselt die HTTP-Antwort Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlets Ein Servlet ist eine Komponente, die aus einer Java-Klasse und einer XML-Beschreibung besteht. Die Java-Klasse erweitert javax.servlet.http.HttpServlet. Wichtigste Methoden: doGet(HttpServletRequest r, HttpServletResponse a) doPost(HttpServletRequest r, HttpServletResponse a) Sie werden von dem Application-Server bei einer HTTP-GET- bzw. HTTP-POST-Anfrage aufgerufen a kapselt die HTTP-Anfrage r kapselt die HTTP-Antwort Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Quadratische Gleichungen lösen Arbeitsschritte 1 HTML-Seite für die Eingabe auf der Clientseite erstellen 2 Servlet erstellen, um die Eingabe auf der Serverseite zu lesen und die Antwort zu generieren 3 HTML-Seite und Servlet als Archiv komprimieren 4 Deployment des Archivs Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Quadratische Gleichungen lösen Arbeitsschritte 1 HTML-Seite für die Eingabe auf der Clientseite erstellen 2 Servlet erstellen, um die Eingabe auf der Serverseite zu lesen und die Antwort zu generieren 3 HTML-Seite und Servlet als Archiv komprimieren 4 Deployment des Archivs Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Quadratische Gleichungen lösen Arbeitsschritte 1 HTML-Seite für die Eingabe auf der Clientseite erstellen 2 Servlet erstellen, um die Eingabe auf der Serverseite zu lesen und die Antwort zu generieren 3 HTML-Seite und Servlet als Archiv komprimieren 4 Deployment des Archivs Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Quadratische Gleichungen lösen Arbeitsschritte 1 HTML-Seite für die Eingabe auf der Clientseite erstellen 2 Servlet erstellen, um die Eingabe auf der Serverseite zu lesen und die Antwort zu generieren 3 HTML-Seite und Servlet als Archiv komprimieren 4 Deployment des Archivs Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel HTML-Eingabeseite erstellen ... <body> <h1>L&ouml ; sen von q u a d r a t i s c h e n Gleichungen< / h1> <p>a&middot ; x&sup2 ; + b&middot ; x + c = 0< / p> <form action = " S o l v e r S e r v l e t " > <p>a = <input name= " a " type= " t e x t " s i z e = " 3 " / >< / p> <p>b = <input name= " b " type= " t e x t " s i z e = " 3 " / >< / p> <p>c = <input name= " c " type= " t e x t " s i z e = " 3 " / >< / p> <p>c = <input type= " submit " / >< / p> < / form> < / body> ... Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel HTML-Eingabeseite erstellen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Servlet-Klasse erstellen public class Q u a d r a t i c E q u a t i o n S o l v e r extends H t t p S e r v l e t { ... public void doGet ( H t t p S e r v l e t R e q u e s t request , HttpServletResponse response ) throws S e r v l e t E x c e p t i o n , IOException { / / Parameter lesen (Ohne Behandlung der NumberFormatException) double a = Double . parseDouble ( request.getParameter(" a") ) ; double b = Double . parseDouble ( request.getParameter("b") ) ; double c = Double . parseDouble ( request.getParameter("c") ) ; double d i s c r = b∗b − 4.0∗a∗c ; S t r i n g msg = " x & i s i n ; { " ; i f ( d i s c r >= 0 . 0 && a ! = 0 . 0 ) { double x1 = (− b + Math . s q r t ( d i s c r ) ) / (2∗a ) ; double x2 = (− b − Math . s q r t ( d i s c r ) ) / (2∗a ) ; i f ( x1 == x2 ) msg += Double . t o S t r i n g ( x1 ) + " } " ; else msg += Double . t o S t r i n g ( x1 ) + " , " + Double . t o S t r i n g ( x2 ) + " } " ; } else msg = " Gleichung " + ( ( a = = 0 . 0 ) ? " i s t n i c h t q u a d r a t i s c h . " : " h a t k e i n e L&ouml ; sung . " ) ; Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Servlet-Klasse erstellen (Fortsetzung) / / HTML−A n t w o r t g e n e r i e r e n response . setContentType ( " t e x t / h t m l " ) ; P r i n t W r i t e r o u t = response . g e t W r i t e r ( ) ; o u t . p r i n t l n ( " <html ><head> " ) ; o u t . p r i n t l n ( " < t i t l e > Quadratische Gleichungen l &ouml ; sen < / t i t l e > " ) ; o u t . p r i n t l n ( " </ head> " ) ; o u t . p r i n t l n ( " <body> " ) ; o u t . p r i n t l n ( " <h1>L&ouml ; sen von q u a d r a t i s c h e n Gleichungen < / h1> " ) ; o u t . p r i n t l n ( " <p> " +a+ "&middot ; x&sup2 ; + " +b+ "&middot ; x+ " +c+ " = 0 </p> " ) ; o u t . p r i n t l n ( " <p> " + msg + " </p> " ) ; o u t . p r i n t l n ( " </ body > </ html > " ) ; out . close ( ) ; } } Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Servlet-Beschreibung erstellen (web.xml) <?xml version= " 1 . 0 " encoding= "UTF−8" ?> <web−app version= " 2 . 5 " xmlns= " h t t p : / / j a v a . sun . com / xml / ns / javaee " x m l n s : x s i = " h t t p : / / www. w3 . org / 2 0 0 1 /XMLSchema−i n s t a n c e " x s i : s c h e m a L o c a t i o n = " h t t p : / / j a v a . sun . com / xml / ns / javaee h t t p : / / j a v a . sun . com / xml / ns / javaee / we <distributable /> <servlet> < d i s p l a y −name> Q u a d r a t i c Equation S o l v e r < / d i s p l a y −name> < s e r v l e t −name> Q u a d r a t i c E q u a t i o n S o l v e r < / s e r v l e t −name> < s e r v l e t −c l a s s > j a v a e e i n t r o d u c t i o n . Q u a d r a t i c E q u a t i o n S o l v e r < / s e r v l e t −c l a s s > </ servlet> < s e r v l e t −mapping> < s e r v l e t −name> Q u a d r a t i c E q u a t i o n S o l v e r < / s e r v l e t −name> < u r l −p a t t e r n > / S o l v e r S e r v l e t < / u r l −p a t t e r n > < / s e r v l e t −mapping> < / web−app> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Web-Archiv erstellen (WAR-Archiv) Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Application-Archiv erstellen (EAR-Archiv) Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Applikation aufspielen (Deployment) Deployment abhängig von Serverimplementierung Im Fall von Glassfish oder JBoss: Kopie des EAR-Archives in einem besonderen Verzeichnis speichern Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlet-Beispiel Applikation aufspielen (Deployment) Deployment abhängig von Serverimplementierung Im Fall von Glassfish oder JBoss: Kopie des EAR-Archives in einem besonderen Verzeichnis speichern Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlets Weiterführende Möglichkeiten Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Servlets Servlets Literatur http: //jcp.org/aboutJava/communityprocess/final/jsr154/index.html Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JavaServer Pages (JSP) JavaServer Pages sind eine bequeme Alternative zu Servlets. web.xml nicht notwendig Eine JSP-Seite beschreibt gleichzeitig den statischen und dynamischen Inhalt eines Textdokumentes. Vergleichbar mit PHP Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JavaServer Pages (JSP) JavaServer Pages sind eine bequeme Alternative zu Servlets. web.xml nicht notwendig Eine JSP-Seite beschreibt gleichzeitig den statischen und dynamischen Inhalt eines Textdokumentes. Vergleichbar mit PHP Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JavaServer Pages (JSP) JavaServer Pages sind eine bequeme Alternative zu Servlets. web.xml nicht notwendig Eine JSP-Seite beschreibt gleichzeitig den statischen und dynamischen Inhalt eines Textdokumentes. Vergleichbar mit PHP Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JavaServer Pages (JSP) JavaServer Pages sind eine bequeme Alternative zu Servlets. web.xml nicht notwendig Eine JSP-Seite beschreibt gleichzeitig den statischen und dynamischen Inhalt eines Textdokumentes. Vergleichbar mit PHP Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel Quadratische Gleichungen lösen Arbeitsschritte 1 Servlet aus vorherigem Beispiel durch JSP-Seite ersetzen 2 HTML-Seite für die Clientseite anpassen 3 WAR-Archiv erstellen 4 EAR-Archiv analog zu den Servlets erstellen und auf Server aufspielen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel Quadratische Gleichungen lösen Arbeitsschritte 1 Servlet aus vorherigem Beispiel durch JSP-Seite ersetzen 2 HTML-Seite für die Clientseite anpassen 3 WAR-Archiv erstellen 4 EAR-Archiv analog zu den Servlets erstellen und auf Server aufspielen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel Quadratische Gleichungen lösen Arbeitsschritte 1 Servlet aus vorherigem Beispiel durch JSP-Seite ersetzen 2 HTML-Seite für die Clientseite anpassen 3 WAR-Archiv erstellen 4 EAR-Archiv analog zu den Servlets erstellen und auf Server aufspielen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel Quadratische Gleichungen lösen Arbeitsschritte 1 Servlet aus vorherigem Beispiel durch JSP-Seite ersetzen 2 HTML-Seite für die Clientseite anpassen 3 WAR-Archiv erstellen 4 EAR-Archiv analog zu den Servlets erstellen und auf Server aufspielen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel JSP-Seite erstellen (result.jsp) <%@ page contentType= " t e x t / h t m l ; c h a r s e t =UTF−8" %> <%! p u b l i c S t r i n g getMessage ( ) { / / Parameter l e s e n ( Ohne Behandlung der NumberFormatException ) double a = Double . parseDouble ( r e q u e s t . getParameter ( " a " ) ) ; double b = Double . parseDouble ( r e q u e s t . getParameter ( " b " ) ) ; double c = Double . parseDouble ( r e q u e s t . getParameter ( " c " ) ) ; double d i s c r = b∗b − 4.0∗a∗c ; S t r i n g msg = " x & i s i n ; { " ; i f ( d i s c r >= 0 . 0 && a ! = 0 . 0 ) { double x1 = (− b + Math . s q r t ( d i s c r ) ) / (2∗a ) ; double x2 = (− b − Math . s q r t ( d i s c r ) ) / (2∗a ) ; i f ( x1 == x2 ) msg += Double . t o S t r i n g ( x1 ) + " } " ; else msg += Double . t o S t r i n g ( x1 ) + " , " + Double . t o S t r i n g ( x2 ) + " } " ; } else msg = " Gleichung " + ( ( a = = 0 . 0 ) ? " i s t n i c h t q u a d r a t i s c h . " : " h a t k e i n e L&ouml ; sung . " ) ; r e t u r n msg ; } %> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel JSP-Seite erstellen (Fortsetzung) < h t m l xmlns= " h t t p : / / www. w3 . org / 1 9 9 9 / x h t m l " > <head> < t i t l e > Quadratische Gleichungen l &ouml ; sen< / t i t l e > < / head> <body> <h1>L&ouml ; sen von q u a d r a t i s c h e n Gleichungen< / h1> <p><%= r e q u e s t . getParameter ( " a " ) %>&middot ; x&sup2 ; + <%= r e q u e s t . getParameter ( " b " ) %>&middot ; x + <%= r e q u e s t . getParameter ( " c " ) %> = 0 < / p> <p><%= getMessage ( r e q u e s t ) %>< / p> < / body> < / html> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel HTML-Seite anpassen ... <body> <h1>L&ouml ; sen von q u a d r a t i s c h e n Gleichungen< / h1> <p>a&middot ; x&sup2 ; + b&middot ; x + c = 0< / p> <form a c t i o n = " result.jsp " > <p>a = <p>b = <p>c = <p>c = < / form> < / body> ... <input <input <input <input name= " a " t y p e = " t e x t " s i z e = " 3 " / >< / p> name= " b " t y p e = " t e x t " s i z e = " 3 " / >< / p> name= " c " t y p e = " t e x t " s i z e = " 3 " / >< / p> t y p e = " submit " / >< / p> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel WAR-Archiv erstellen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel verbessern JSP-Beispiel bietet keine wesentlichen Vorteile im Vergleich zum Servlet-Beispiel. Verbesserung durch Trennung der HTML-Generierung von der algorithmischen Berechnung des Problems Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel verbessern JSP-Beispiel bietet keine wesentlichen Vorteile im Vergleich zum Servlet-Beispiel. Verbesserung durch Trennung der HTML-Generierung von der algorithmischen Berechnung des Problems Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel verbessern Schritt 1: JavaBean für die Berechnung erstellen p u b l i c c l a s s Q ua dr at icE qS ol v e r { p r i v a t e double a , b , c ; public public public public public public double void double void double void getA ( ) { return setA ( double a ) { t h i s . a getB ( ) { return setB ( double b ) { t h i s . b getC ( ) { return setC ( double c ) { t h i s . c a; } = a; } b; } = b; } c; } = c; } p u b l i c Set<Double> g e t S o l u t i o n s ( ) { Set<Double> r e s u l t = new HashSet<Double> ( ) ; double d i s c r = b∗b − 4.0∗a∗c ; i f ( d i s c r >= 0 . 0 && a ! = 0 . 0 ) { double x1 = (− b + Math . s q r t ( d i s c r ) ) / (2∗a ) ; double x2 = (− b − Math . s q r t ( d i s c r ) ) / (2∗a ) ; r e s u l t . add ( x1 ) ; r e s u l t . add ( x2 ) ; } return result ; } } Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel verbessern Schritt 2: JSP-Seite von Java-Code bereinigen <?xml version= " 1 . 0 " encoding= "UTF−8" ?> <%@ page language= " j a v a " contentType= " t e x t / h t m l ; c h a r s e t =UTF−8" pageEncoding= "UTF−8"%> <%@ t a g l i b u r i = " h t t p : / / j a v a . sun . com / j s p / j s t l / core " p r e f i x = " c " %> <jsp:useBean i d = " s o l v e r " c l a s s = " Qu ad ra ti cEq So lv er " / > < j s p : s e t P r o p e r t y name= " s o l v e r " p r o p e r t y = " ∗ " / > < h t m l xmlns= " h t t p : / / www. w3 . org / 1 9 9 9 / x h t m l " > <head> < t i t l e > Quadratische Gleichungen l &ouml ; sen< / t i t l e > < / head> <body> <h1>L&ouml ; sen von <p> <jsp:getProperty <jsp:getProperty <jsp:getProperty < / p> < / body> q u a d r a t i s c h e n Gleichungen< / h1> name= " s o l v e r " p r o p e r t y = " a " / >&middot ; x&sup2 ; + name= " s o l v e r " p r o p e r t y = " b " / >&middot ; x + name= " s o l v e r " p r o p e r t y = " c " / > = 0 Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel verbessern Schritt 2: JSP-Seite von Java-Code bereinigen (Fortsetzung) <p> <c:choose> <c:when t e s t = " $ { s o l v e r . a == 0 } " > Gleichung i s t n i c h t q u a d r a t i s c h . < / c:when> <c:otherwise> <c:choose> <c:when t e s t = " $ { empty s o l v e r . s o l u t i o n s } " > Gleichung h a t k e i n e L&auml ; sung ! < / c:when> <c:otherwise> x &isin ; { <c:forEach items=" ${ s o l v e r . s o l u t i o n s } " var=" s o l u t i o n " varStatus=" i t e r S t a t u s " > ${ s o l u t i o n } < c : i f t e s t =" ${ not i t e r S t a t u s . l a s t } " > , < / c : i f > < / c:forEach> } </ c:otherwise> < / c:choose> </ c:otherwise> < / c:choose> < / p> < / body> < / html> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Beispiel verbessern Schritt 3: Bean-Klasse in WAR-Archiv aufnehmen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Text Direktiven Aktionen Scripting-Elemente Deklarationen Scriptlets Ausdrücke Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Text Direktiven Aktionen Scripting-Elemente Deklarationen Scriptlets Ausdrücke Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Text Direktiven Aktionen Scripting-Elemente Deklarationen Scriptlets Ausdrücke Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Text Direktiven Aktionen Scripting-Elemente Deklarationen Scriptlets Ausdrücke Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Direktiven Legen Eigenschaften der JSP-Seite fest, die unabhängig von Benutzeranfragen (Requests) sind. Syntax: <%@ name ... %> Beispiele: <%@ page language="java"contentType="text/html; charset=UTF−8"%> <%@ taglib uri="http: // java.sun.com/jsp/ jstl /core" prefix ="c" %> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Direktiven Legen Eigenschaften der JSP-Seite fest, die unabhängig von Benutzeranfragen (Requests) sind. Syntax: <%@ name ... %> Beispiele: <%@ page language="java"contentType="text/html; charset=UTF−8"%> <%@ taglib uri="http: // java.sun.com/jsp/ jstl /core" prefix ="c" %> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Direktiven Legen Eigenschaften der JSP-Seite fest, die unabhängig von Benutzeranfragen (Requests) sind. Syntax: <%@ name ... %> Beispiele: <%@ page language="java"contentType="text/html; charset=UTF−8"%> <%@ taglib uri="http: // java.sun.com/jsp/ jstl /core" prefix ="c" %> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Aktionen Semantik der Aktionen sind abhängig von Requests. XML-Syntax (Tag, Abschlusstag, Attribute) Es gibt Standard-Aktionen und benutzerdefinierte Aktionen Benutzerdefinierte Aktionen über taglib-Direktiven importieren Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Aktionen Semantik der Aktionen sind abhängig von Requests. XML-Syntax (Tag, Abschlusstag, Attribute) Es gibt Standard-Aktionen und benutzerdefinierte Aktionen Benutzerdefinierte Aktionen über taglib-Direktiven importieren Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Aktionen Semantik der Aktionen sind abhängig von Requests. XML-Syntax (Tag, Abschlusstag, Attribute) Es gibt Standard-Aktionen und benutzerdefinierte Aktionen Benutzerdefinierte Aktionen über taglib-Direktiven importieren Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Aktionen Semantik der Aktionen sind abhängig von Requests. XML-Syntax (Tag, Abschlusstag, Attribute) Es gibt Standard-Aktionen und benutzerdefinierte Aktionen Benutzerdefinierte Aktionen über taglib-Direktiven importieren Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Beispiele für Aktionen Standardaktionen: <jsp:useBean id="solver" class="QuadraticEqSolver"/> <jsp:forward page="handler.jsp" /> Benutzerdefinierte Aktionen: <c:forEach items=" ${ s o l v e r . s o l u t i o n s } " var=" s o l u t i o n " varStatus=" i t e r S t a t u s "> ${ s o l u t i o n } < c : i f t e s t =" ${ not i t e r S t a t u s . l a s t } " > , < / c : i f > < / c:forEach> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Beispiele für Aktionen Standardaktionen: <jsp:useBean id="solver" class="QuadraticEqSolver"/> <jsp:forward page="handler.jsp" /> Benutzerdefinierte Aktionen: <c:forEach items=" ${ s o l v e r . s o l u t i o n s } " var=" s o l u t i o n " varStatus=" i t e r S t a t u s "> ${ s o l u t i o n } < c : i f t e s t =" ${ not i t e r S t a t u s . l a s t } " > , < / c : i f > < / c:forEach> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Deklarationen Betten Deklarationen und Definitionen der Programmiersprache ein, die durch die page-Direktive festgelegt wurde (üblicherweise Java) Syntax: <%! Deklarationen, Definitionen, ... %> Werden immer »zu Beginn« ausgewertet, unabhängig von ihrer Position in der JSP-Seite Beispiel: <%! p u b l i c i n t getMax ( i n t a , i n t b ) { r e t u r n a < b ? b : a ; } p u b l i c f i n a l S t r i n g pageAuthor = " Wischermann " ; %> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Deklarationen Betten Deklarationen und Definitionen der Programmiersprache ein, die durch die page-Direktive festgelegt wurde (üblicherweise Java) Syntax: <%! Deklarationen, Definitionen, ... %> Werden immer »zu Beginn« ausgewertet, unabhängig von ihrer Position in der JSP-Seite Beispiel: <%! p u b l i c i n t getMax ( i n t a , i n t b ) { r e t u r n a < b ? b : a ; } p u b l i c f i n a l S t r i n g pageAuthor = " Wischermann " ; %> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Deklarationen Betten Deklarationen und Definitionen der Programmiersprache ein, die durch die page-Direktive festgelegt wurde (üblicherweise Java) Syntax: <%! Deklarationen, Definitionen, ... %> Werden immer »zu Beginn« ausgewertet, unabhängig von ihrer Position in der JSP-Seite Beispiel: <%! p u b l i c i n t getMax ( i n t a , i n t b ) { r e t u r n a < b ? b : a ; } p u b l i c f i n a l S t r i n g pageAuthor = " Wischermann " ; %> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Deklarationen Betten Deklarationen und Definitionen der Programmiersprache ein, die durch die page-Direktive festgelegt wurde (üblicherweise Java) Syntax: <%! Deklarationen, Definitionen, ... %> Werden immer »zu Beginn« ausgewertet, unabhängig von ihrer Position in der JSP-Seite Beispiel: <%! p u b l i c i n t getMax ( i n t a , i n t b ) { r e t u r n a < b ? b : a ; } p u b l i c f i n a l S t r i n g pageAuthor = " Wischermann " ; %> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Ausdrücke Erlauben Auswertung von Skript-Ausdrücken (meistens Java-Ausdrücke) Das Ergebnis der Auswertung wird nach String konvertiert Syntax: <%= Ausdruck %> Beispiele: <%= 3 + 4 %> <p>Ihr Name ist <%= kunde.getName() %>.</p> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Ausdrücke Erlauben Auswertung von Skript-Ausdrücken (meistens Java-Ausdrücke) Das Ergebnis der Auswertung wird nach String konvertiert Syntax: <%= Ausdruck %> Beispiele: <%= 3 + 4 %> <p>Ihr Name ist <%= kunde.getName() %>.</p> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Ausdrücke Erlauben Auswertung von Skript-Ausdrücken (meistens Java-Ausdrücke) Das Ergebnis der Auswertung wird nach String konvertiert Syntax: <%= Ausdruck %> Beispiele: <%= 3 + 4 %> <p>Ihr Name ist <%= kunde.getName() %>.</p> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Ausdrücke Erlauben Auswertung von Skript-Ausdrücken (meistens Java-Ausdrücke) Das Ergebnis der Auswertung wird nach String konvertiert Syntax: <%= Ausdruck %> Beispiele: <%= 3 + 4 %> <p>Ihr Name ist <%= kunde.getName() %>.</p> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Scriptlets Erlauben Mischung von Textelementen und Skriptelementen Dadurch kann der Kontrollfluss beeinflusst werden. Syntax: <% Skriptkonstrukt %> Beispiel: <ul> <% f o r ( i n t i = 0 ; i < s t u d e n t e n . getAnzahl ( ) ; i ++ { %> < i >Name: <%= s t u d e n t e n . g e t ( i ) . getName ( ) %>< / i > <% } %> </ ul> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Scriptlets Erlauben Mischung von Textelementen und Skriptelementen Dadurch kann der Kontrollfluss beeinflusst werden. Syntax: <% Skriptkonstrukt %> Beispiel: <ul> <% f o r ( i n t i = 0 ; i < s t u d e n t e n . getAnzahl ( ) ; i ++ { %> < i >Name: <%= s t u d e n t e n . g e t ( i ) . getName ( ) %>< / i > <% } %> </ ul> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Scriptlets Erlauben Mischung von Textelementen und Skriptelementen Dadurch kann der Kontrollfluss beeinflusst werden. Syntax: <% Skriptkonstrukt %> Beispiel: <ul> <% f o r ( i n t i = 0 ; i < s t u d e n t e n . getAnzahl ( ) ; i ++ { %> < i >Name: <%= s t u d e n t e n . g e t ( i ) . getName ( ) %>< / i > <% } %> </ ul> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP-Konstrukte Scriptlets Erlauben Mischung von Textelementen und Skriptelementen Dadurch kann der Kontrollfluss beeinflusst werden. Syntax: <% Skriptkonstrukt %> Beispiel: <ul> <% f o r ( i n t i = 0 ; i < s t u d e n t e n . getAnzahl ( ) ; i ++ { %> < i >Name: <%= s t u d e n t e n . g e t ( i ) . getName ( ) %>< / i > <% } %> </ ul> Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Java ServerPages JSP Weiterführende Konzepte Implizite Objekte Code-Wiederverwendung über include-Aktionen oder die include-Direktive Weiterleitung von Request über forward-Aktionen Unified Expression Language Literatur: http://java.sun.com/javaee/5/docs/ tutorial/doc/JSPIntro.html Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Enterprise JavaBeans (EJB) Nicht mit JavaBeans verwechseln! EJBs stellen serverseitige Komponenten dar. Sie übernehmen in einer Enterprise-Anwendung die Geschäftslogik. Zwei Arten: Session Beans Stateless Session Beans Statefull Session Beans Message-Driven Beans Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Einführung am Beispiel Für Session Beans müssen eine Schnittstelle und eine implementierende Klasse (Bean-Klasse) definiert werden. Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Session-Bean-Beispiel Die Bean-Schnittstelle i m p o r t j a v a x . e j b . Remote ; @Remote p u b l i c i n t e r f a c e QuadraticEqSolver { p u b l i c Set<Double> g e t S o l u t i o n s ( double a , double b , double c ) ; } Die Remote-Annotation gibt an, dass das Bean von verteilten Clients benutzt wird. Zur Performance-Steigerung gibt es die Local-Annotation; sie gibt an, dass das Bean ausschließlich von Clients benutzt wird, die sich in der gleichen virtuellen Maschine wie das Bean befinden. Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Session-Bean-Beispiel Die Bean-Klasse import javax . ejb . Stateless ; @Stateless p u b l i c c l a s s QuadraticEqSolverBean implements Q u a d r a t ic E q S o l v e r { / / H i e r d i e Loesung berechnen . ( Analog zum JSP " = B e i s p i e l . ) .... } Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Session-Bean-Beispiel Deployment-Archiv erstellen Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg Einführung Web-Anwendungen mit Java EE Enterprise JavaBeans Session-Bean-Beispiel Client-Zugriff i m p o r t j a v a x . naming . I n i t i a l C o n t e x t ; p u b l i c class EJBClient { p u b l i c s t a t i c v o i d main ( S t r i n g args [ ] ) { try { I n i t i a l C o n t e x t i c = new I n i t i a l C o n t e x t ( ) ; Q u a d r a t i c E q S o l v e r s o l v e r = i c . lookup ( " Q u a d r a t i c E q S o l v e r " ) ; System . o u t . p r i n t l n ( s o l v e r . g e t S o l u t i o n s ( 1 , 0 , − 1)); } catch ( Exception e ) { e . printStackTrace ( ) ; } } } Dirk Wischermann, Marc Spisländer Einführung in Java Enterprise Edition 5 (Java EE 5) Friedrich-Alexander-Universität Erlangen-Nürnberg