Java Server Pages Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden Java Server Pages Was sind JavaServer Pages? Wofür benutzt man JavaServer Pages? Unterschied zwischen Servlets und Java Server Pages Die Anatomie einer JSP-Seite Lebenszyklus von JSP-Seiten JSPs Sprachelemente Was sind Java Server Pages? Java Server Pages (JSP) sind Bestandteil der J2EE, der Java 2 Enterprise Edition von Sun Microsystems [J2EE]. Die JSP-API in der Version 1.0 erschien im Mai 1999. JSPs enthalten HTML, JavaScript + Java Code für die Visualisierung von dynamischen Web-Inhalten. JSPs werden serverseitig ausgeführt. JSPs werden beim ersten Aufruf in ein Servlet umgewandelt und kompiliert. Das Servlet wird von der Servlet Engine ausgeführt. JSPs sind plattformunabhängig und im Rahmen der Java APIs erweiterbar. JSPs erlauben die einfache Nutzung von : Datenbanken Sessions Cookies XML Wofür benutzt man JavaServer Pages? schneller und effizienter Webapplikationen und dynamische Webinhalte entwickeln. Mit Hilfe von JavaServer Pages können komplexe Webapplikationen entwickelt werden. innerhalb von JPS-Seiten auf Datenbanken zugreifen. Unterschied zwischen Servlets und Java Server Pages Trennung zwischen Informationen und Visualisierung fällt bei Servlet. Wo ein Servlet eine Java-Klasse ist, die sich um die Ausgabe des HTMLCodes kümmert, ist eine JSP eine HTML-Seite mit Java-Code. bedeutet dass JSPs sind leichter zu ändern als Java Servlet JSPs Code sind Wiederverwendbar durch Kapselung von Anwendungslogik. Die Anatomie einer JSP-Seite Eine JSP-Seite besteht aus „template text“ und JSP-Elementen. in der JSP-Seite zu den statischen HTML-Elementen zusätzlich JSPElemente hinzugefügt. JSP-Seite ist also im Grunde eine „normale“ Webseite mit zusätzlichen JSP-Elementen. JSP-Elemente sind Skripte, Direktiven, und Aktionen. Die Anatomie einer JSP-Seite Ein einführendes Beispiel helloWorld.jsp <html> <head> <title>JSP: HelloWorld</title> </head> <body> <h1>HelloWorld</h1> <% String name = request.getParameter("parameter"); if (name == null) { name = "world"; } %> <h2>Hello <% name.toString(); %>!</h2> </body> </html> Lebenszyklus von JSP-Seiten (1) Eine JSP-Seite kann nicht als solche zum Browser geschickt werden. Alle JSP-Elemente müssen vorher durch den Server verarbeitet werden. Wenn man die JSP-Technologie einsetzen möchte, benötigt man einen JSP-fähigen Webserver. Das bedeutet, dass der Webserver einen JSP-Container zur Verfügung stellt, der die Verarbeitung der JSP-Seiten vornimmt, also die Übersetzungsund Anfragephase erledigt. Dieses wird dadurch erreicht, dass die JSP-Seite in ein Servlet umgewandelt wird. Lebenszyklus von JSP-Seite (2) Generierung JSPSeite bei jeder Änderung der JSP-Seite Quellcode des Servlet Übersetzung bei jeder Änderung der JSP-Seite HTML Ausführung bei jeder Anfrage Servlets Lebenszyklus von JSP-Seiten (3) Übersetzungphase: JSP-Datei, falls vorhanden,in ein Servlet konvertiert. Es entsteht eine Datei mit dem Quelltext des Servlets ZB : index.jsp -> index$jsp.java Diese Datei wird nun in ein Servlet kompiliert. Es entsteht also eine .class-Datei. Diese beiden Schritte bezeichnet man als Übersetzungsphase (translation phase). Diese Phase wird nur ausgeführt, wenn die Seite zum ersten Mal angefragt wird Laden und Instantiieren des Servlet. Ausführen der Methode jspInit() Geeignet für alle einmaligen Aufgaben. Kann durch eine Deklaration auf der JSP-Seite überschrieben werden. Lebenszyklus von JSP-Seiten (4) Anfragephase : Des weiteren muss der Server auf jede Anfrage (request) eine Antwort (response) generieren durch die Methode : _jspService (HttpServletRequest req , HttpServletResponse resp ) Beendigung durch Ausführen der Methode jspDestroy() Diese Methode bildet das logische Gegenstück zur Methode jspInit() Freigabe von Ressourcen JSPs Sprachelemente JSP stellt verschiedenen Elemente zur Verfügung, um Webseiten mit dynamischen Inhalt zu generieren. Alle Elemente werden in die JSP-Seite eingebettet. JSPs Sprachelemente - Arten Skripte (Scriptlets). Direktiven . Aktionen. JSPs Sprachelemente - Skripte(1) Ausdrücke (expressions) Wert eines Java-Ausdrücke wird in das Ausgabedokument geschrieben. Zugriff auf bekannte Objekte und deren Methoden. String Behandlung. Die Syntax lautet : <%= Ausdruck % > Wichtig : Kein Semikolon. ist äquivalent zu : <% out.print(ausdruck) %> Siehe Beispiel JSPs Sprachelemente - Skripte(2) Vereinbarungen (declarations) Variablen , Methoden Vereinbarungen. Mehrere Vereinbarungen, Variablen Initialisierung. Gültifkeitsbereich : ganze JSP-Seite. Die Syntax lautet : <%! Vereinbarung(en) %> Siehe Beispiel. JSPs Sprachelemente - Skripte(3) Anweisungsfragmente (scriplets / code fragments): Einbettung Java Anweisungen in JSP-Seiten. Mehrere Ausdrücke. Keine vollständigen Anweisugen nötig. Die Syntax lautet: <% Anweisungsfragment (e) %> Siehe Beispiel JSPs Sprachelemente -Direktiven(1) Informationen über JSP-Seite Spezifizieren. Direktiven besitzen Attribute, die gesetzt werden können. JSP kennt verschiedene Direktiven : Include. Page. Taglib. Die Syntax lautet : <%@ Direktivenname { attributname=“wert“ } %> JSPs Sprachelemente -Direktiven(2) Die Direktive include: Mit dieser Direktive wird eine Datei während der Übersetzungsphase in die JSP-Datei mit der include-Direktive eingefügt. Die einzufügende Datei kann sowohl eine HTML- als auch eine JSP-Datei sein. Die Syntax lautet: : <%@ include file=“Relative URL“ %> JSPs Sprachelemente -Direktiven(3) Die Direktive page: Die Importkontrolle der einzelnen Klassen. Einfluss auf den Übersetzungsvorgang. Können eine oder Mehrere Attribute verwendet werden. 10 Attribute. Die Syntax lautet: <%@ page ... %> Beispiel für die Verwendung von Import : <%@ page import = java.utils.* , mypackage.class %> JSPs Sprachelemente -Direktiven(4) Die Direktive taglib: JSP file welches die taglibrary nutzt. Die Direktive taglib deklariert eine tag-Bibliothek, die benutzerdefinierte Aktionen enthält und somit in der JSP-Seite nutzbar macht. Die Syntax lautet: <%@ taglib uri=“URIderTagbibliothek“ prefix=“tagPrefix“%> JSPs Sprachelemente -Aktionen(1) Aktionen können Objekte erzeugen der existierende Objekte modifizieren. Beeinflussen der Aktuellen JSP- Seite. Die allgemeine Syntax lautet: <aktion_Name attribut1=“wert1“ attribut2=“wert2“ > aktion_Rumpf </aktion_Name> Wenn es keinen Rumpf gibt, kann man eine Kurzform benutzen: <aktion_Name attribut1=“wert1“ attribut2=”wert2” /> JSPs Sprachelemente -Aktionen(2) Standardaktionen: Standardaktionen müssen von jedem Server implementiert werden. Include. Forward. Plugin. JSPs Sprachelemente -Aktionen(include) Die Aktion include: Mit der Aktion include wird die Ausgabe einer JSP-Seite zur Laufzeit in eine andere JSP-Seite eingebettet. So sind Änderungen an der durch die include-Aktion einzufügende Seite sofort sichtbar. Bei der Direktive include geschieht dies zur Übersetzungszeit. Die Syntax lautet: <jsp:include page = “DateiURL” flush=”true” /> JSPs Sprachelemente -Aktionen(forward) Die Aktion forward : Die Aktion forward ermöglicht die Weiterleitung einer Anfrage an eine andere JSP-Seite oder auch an ein Servlet. Diese Aktion beendet die Ausführung der aktuellen Seite, sie wird auch nicht wieder aufgenommen. Die Syntax lautet: <jsp:forward page=“zielseite“ /> JSP Sprachelemente -Aktionen (Plugin & Benutzerdefinierte) Die Aktion plugin: Das Java Plugin ist eine Java Runtimeumgebung der Firma Sun, die im Browser eingebunden werden kann. Es ermöglicht also die Nutzung von Java Applets. Benutzerdefinierte Aktionen: Benutzerdefinierte Aktionen sind eine mächtige Möglichkeit dem Autor von JSP-Seiten weitere Logik zur Verfügung zu stellen. Vorteile von JSP: gegenüber reinen Servlets normales HTML ist bequemer zu schreiben. Bessere Trennung von Präsentation und Inhalt. gegenüber ActiveServer Pages(ASP) von Microsoft Java ist mächtiger für komplexe Anwendungen als VBScript oder andere ASP-spezifischeSprachen. JSP lässt sich auf andere Betriebssysteme und Webserver portieren, (plattformunabhängig ) gegenüber PHP(Hypertext Pre-Prozessor) Vorteil liegt im Bereich der bereits vielfältig vorhandenen API´sfür das Netzwerk, für Datenbankzugriffe usw. Wenn man Java kann, muss man keine neue Sprache lernen. gegenüber JavaScript Nur auf Clientseite ausgeführt. Keine Datenbankzugriffe. . Danke für Die Aufmerksamkeit