440 likes | 647 Views
Seminar Internet - Technologie. Java Server Pages. Michael Klenke. Inhalt. Was sind Java Server Pages. Voraussetzungen für den Einsatz von JSP. Syntax von JSP: Ausdrücke, Scriptlets und Deklarationen Direktiven Implizierte Objekte Aktionen JavaBeans. Was sind Java Server Pages (JSP)?.
E N D
Seminar Internet - Technologie Java Server Pages Michael Klenke
Inhalt • Was sind Java Server Pages. • Voraussetzungen für den Einsatz von JSP. • Syntax von JSP: • Ausdrücke, Scriptlets und Deklarationen • Direktiven • Implizierte Objekte • Aktionen • JavaBeans
Was sind Java Server Pages (JSP)? • Anfang 1999 von Sun Microsystems entwickelte Technologie, um Java-Code in HTML-Seiten einbetten und beim Abruf der Seite auf dem Server ausführen zu können. • Alternative zum Common Gateway Interface (CGI), PHP oder den Active Server Pages (ASP) von Microsoft. • Erweiterung von Java Servlets • Aktuelle Version: 2.1
Vor- und Nachteile von CGI • Vorteile: • Beliebige Programmiersprache • Mehrere Clients beeinflussen sich nicht gegenseitig • Alle gängigen Webserver unterstützen CGI • Nachteile: • Hohe Antwortzeiten • I.d.R. keine Trennung von Anwendungslogik und HTML-Präsentation
Vor- und Nachteile von Servlets • Vorteile: • Performance (pro Request ein Thread) • Plattformunabhängig durch Java • Webcontainer können zusätzliche Dienste anbieten • Sicherheit (Security) • Error-Handling • ... • Nachteile: • Keine Trennung von Logik und HTML-Präsentation • Ungeeignet für Designer
Ausgangspunkt: HTML-Dokument <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>JSP - HelloWorld</title> </head> <body style="text-align:center"> Dies ist eine statische HTML-Seite. </body> </html>
Einfügen von Java-Anweisungen <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>JSP - HelloWorld</title> </head> <body style="text-align:center"> Dies ist eine dynamische JSP.<br /> Es ist jetzt genau: <%= new java.util.Date() %> </body> </html>
Voraussetzungen für den Einsatz von JSP • JSP-/Servlet-Engine • Apache Tomcat • Jetty • Oder Applikationsserver • Glassfish • Jboss • Gerimino • Java, Standard Edition • Java, Enterprise Edition • Eine Datenbank (MySQL)
Projektverzeichnis Date Web DeploymentDescriptor
Web DeploymentDescriptor <?xmlversion="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Eine Webanwendung</display-name> <description> Dies ist eine auf JSP basierende Beispielanwendung </description> </web-app>
JSP - Syntax Bisher ist eine JSP zunächst nichts anderes, als eine um besondere Tags erweiterte HTML-Seite. Diese Tags unterteilen sich in vier Klassen: • Scriptlets der Form <%Java-Code%> • Deklarationen der Form <%!Java-Code%> • Ausdrücke der Form <%=Java-Ausdruck%> • Kommentare der Form <%--Kommentartext --%>
Beispiel für eine if-else-Anweisung <%! private staticbooleanisDay(){ int hour = new java.util.GregorianCalendar().get( … ); if (hour > 6 && hour< 18){ returntrue; } returnfalse; } %> <html> <body> <% if ( isDay() ) { %> Guten Tag … <% } else { %> Gute Nacht … <% } %> </body> </html> java.util.Calendar.HOUR_OF_DAY
Vordefinierte Objekte Innerhalb einer JSP-Datei existieren implizierte Objekte, die in jeder JSP von Anfang an zur Verfügung stehen, ohne das sie vorher über eine Deklaration erstellt wurden.
Das request-Objekt request (javax.servlet.http.HttpServletRequest) Ist für Anfragen zuständig, z.B. beim Senden von Formularen aus Formularfeldern an eine JSP-Datei. <html> <head> <title>IhreDaten</title></head><body> <form name="Eingabe" action="get_Data.jsp" method="post">Vorname: <input type="text" name="vorname“ ><br> Nachname: <input type="text" name="nachname"><br> <input type="submit" value="Abschicken"> </form> </body> </html> Form.jsp
Das request-Objekt <html> <head><title>Ausgabe</title></head> <body> <% String vn = request.getParameter("vorname"); String nn = request.getParameter("nachname"); out.println("Vorname: " + vn); out.println("<br>Nachname: " + nn); %> </body> </html> get_Data.jsp
Direktiven – Eigenschaften einer JSP Direktiven betreffen die aktuelle JSP-Datei und beeinflussen den Aufbau der JSP-Seite. Sie sind in drei Kategorien aufgeteilt: • page • include • taglib Alle drei Direktiven haben stets die gleiche Form:<%@NameDerDirektiveattribut="Wert" %>
Page Direktive Die page-Direktive gibt Auskunft über die verwen-dete Sprache, kann Java-Klassen importieren und eine Fehlerseite angeben. <%-- Importieren der Java-Klasse 'java.util.Date' --%> <%@pageimport="java.util.GregorianCalendar()" %> ... <%-- Verwenden der Klasse 'Date' ohne vollständigen Pfad --%> <%GregorianCalendar cal = newGregorianCalendar();%>
Aktionen Neben den Direktiven kennt JSP so genannte Aktionen. Diese sind nichts anderes als bestimmte definierte JSP-Elemente, die eine besondere Funktion ausführen. Derartige Funktionen können sein: • Weiterleitung auf eine externe Datei oder Webseite. • Einfügen einer externen HTML- oder JSP-Datei. • Einbinden einer JavaBean.
JSPs und JavaBeans Die Idee der Beans ist die Aufteilung von Funktion-alitäten in kleine Komponenten, die so genannten Beans. Beans sind normale Java-Klassen, die nach gewissen Regeln geschrieben sind. • JavaBeans müssen einen parameterlosen Konstruktor besitzen, über den sie erzeugt werden. • Die Attribute bzw. Eigenschaften bestehen aus einer nichtöffentlichen (private) Instanzvariable und öffentlichen Zugriffsmethoden (public), welche umgangssprachlich auch Getter und Setter genannt werden. • Die Zugriffsmethoden haben immer die Form setXxx() und getXxx() bzw. isXxx() bei booleschen Attributen.
Die erste Bean Eine Zufallszahl soll von einer Bean ermittelt werden und von der JSP-Datei im Browser angezeigt werden. • Eine einfache Bean, die innerhalb einer JSP eingesetzt werden kann. ->Zufallsgenerator • Die JSP-Datei ruft die Bean auf. • Die Bean ermittelt die Zufallszahl. • Das Ergebnis wird an die JSP-Datei zurückgegeben und angezeigt.
Der Bean-Code - Teil 1 packagebean; importjava.util.Random; publicclassRandomize { privateintobergrenze; private Random r = new Random(); publicRandomize() { } …
Der Bean-Code - Teil 2 publicintgetObergrenze() { returnobergrenze; } publicvoidsetObergrenze(intobergrenze) { this.obergrenze = obergrenze; } publicintgetZufall() { int zufall = r.nextInt(obergrenze); return zufall; } } // classRandomize
Der JSP-Code <jsp:useBeanid="ran" class="bean.Randomize" /> <html> <head> <title>Zufallszahl</title></head> <body> <% ran.setObergrenze(50); int zufall=ran.getZufall(); out.println("Die Zufallszahl lautet: "); out.println(zufall); %> </body> </html>
Gültigkeitsbereiche einer JavaBean Durch Scoping lässt sich die Sichtbarkeit von Objekten innerhalb der Web-Applikation regeln. <jsp:useBeanid="ran" class="bean.Randomize"scope="session" /> Die Sichtbarkeit ist in verschiedene Levels aufgeteilt. Jedes Level hat eine höhere Sichtbarkeit: • page(Standardwert) • request • session • application
Alternativer Aufruf der setter-/getter-Methoden <jsp:useBeanid="ran" class="bean.Randomize" /> <jsp:setPropertyname="ran" property="obergrenze“, value="50" /> <html> <head> <title>Zufallszahl</title></head> <body> Die Zufallszahl lautet: <jsp:getPropertyname="ran" property="zufall" /> </body> </html>
Fazit – Java Server Pages • Vorteile: • JSP sind effizient • Java eröffnet als OO-Programmiersprache mehr Möglichkeiten als Skriptsprachen. • Plattformunabhängig • Nachteil: • Servlet-/JSP-Container ist notwendig: z.B. Tomcat
Quellen • Michael Seeboerg Weichselbaum: Java Server Pages. Markt und Technik (2004) • Thomas Stark: Java EE 5 Einstieg für Anspruchsvolle.Addison-Wesley, München (Oktober 2006) • http://www.jsptutorial.org/ • http://de.wikipedia.org/
Seminar Internet - Technologie Vielen Dank ! Java Server Pages