www.wikidata.de-de.nina.az
Jakarta Server Pages JSP fruher JavaServer Pages ist eine von Sun Microsystems entwickelte auf JHTML basierende Web Programmiersprache zur einfachen dynamischen Erzeugung von HTML und XML Ausgaben eines Webservers Sie erlaubt Java Code und spezielle JSP Aktionen in HTML oder XML Seiten einzubetten Dabei ermoglicht es die JSP Syntax mittels spezieller XML Tags JSP Aktionen vordefinierte Funktionalitat einzubinden Diese JSP Aktionen werden in sogenannten Tag Bibliotheken Tag Libraries als Erweiterung der HTML bzw XML Tags definiert Jakarta Server Pages werden unter Verwendung eines speziellen JSP Compilers in Java Quellcode umgewandelt Dieser Quellcode der einem Java Servlet entspricht wird im Anschluss durch den Java Compiler in Bytecode umgewandelt Die so erzeugten Java Klassen konnen dann von einem mit einer Java Ausfuhrungseinheit ausgestatteten Webserver ausgefuhrt werden JSP das schon Ende der 1990er Jahre verfugbar war ist eine vergleichsweise althergebrachte Technik zum Erzeugen von Webanwendungen Es wird zunehmend von anderen Techniken abgelost 1 Unter Verwendung des Frameworks Jakarta Server Faces JSF und der neueren Facelets Technik unter Jakarta EE Jakarta Enterprise Edition gilt Oracle JSP als deprecated 2 Inhaltsverzeichnis 1 Syntax 1 1 Statischer Inhalt 1 2 Direktiven 1 2 1 Standardvariablen 1 2 2 Skriptelemente 1 3 Deklarationen 1 4 Ausdrucke 1 5 Skriptlets 1 6 Kommentare 1 7 Aktionen 1 8 Tag Bibliotheken 2 Model View Controller 3 JSP 2 0 4 Versionen 5 Siehe auch 6 Weblinks 7 EinzelnachweiseSyntax BearbeitenGrundsatzlich lasst sich JSP als eine Art HTML oder XML Seite mit zusatzlichen JSP spezifischen Tags und Java Code beschreiben Eine JSP kann grob in die folgenden Elemente aufgeteilt werden statischer Inhalt wie HTML template text JSP Direktiven JSP Skriptelemente JSP Aktionen JSP Tag Bibliotheken Tag Libraries Statischer Inhalt Bearbeiten Der statische Inhalt sind all jene Elemente die vom Webserver in die HTTP Response Antwort ohne Veranderung ubernommen werden z B HTML Tags So ware ein normales HTML Dokument ganzlich ohne JSP Elemente wie eingebetteten Java Code oder JSP Aktionen eine gultige JSP denn JSP erlaubt es zwar dynamische Daten in statischen Inhalt einzufugen erfordert dies aber nicht Daraus folgt dass wie bei jeder Templatesprache der Ersteller des statischen Inhalts also des Designs keinerlei Java Kenntnisse benotigt sobald HTML Strukturen aber durch Java Code erzeugt werden erhoht sich deren Komplexitat und das Layout kann an diesen Stellen fast nur noch vom Programmierer geandert werden Da es sich bei einer JavaServer Page um eine dynamische Komponente handelt kann diese aber auch ganzlich ohne statische Elemente auskommen Auf diese Weise ist es moglich uber ein JSP Dokument auch Binardaten wie Bilder oder Tone zu erzeugen und an den Client zu senden Direktiven Bearbeiten Eine Direktive dient zum Ubermitteln spezieller Seiteninformationen an den JSP Compiler dadurch kann man angeben ob die JSP eine Tag Library kurz Taglib einbindet oder wie im Fehlerfall weiter zu verfahren ist Die allgemeine Syntax fur eine Direktive ist b lt gt b Folgende Direktiven mit den am weitesten verbreiteten Attributen sind vorhanden include weist den JSP Compiler an den vollstandigen Inhalt einer externen Datei in die Originaldatei zu kopieren Diese Einbettung geschieht zur Translation Time also statisch einmalig mit der Ubersetzung der JSP in ein Servlet lt include file BeispielDatei ext gt dd page import generiert ein Java Import Statement in der Datei lt page import java util gt contentType gibt die Art des Datei Inhaltes an Sollte dann eingesetzt werden wenn man kein HTML benutzt oder nicht den voreingestellten Zeichensatz verwendet lt page contentType text html gt errorPage gibt die Seite an die im Fehlerfall angezeigt werden soll lt page errorPage ErrorHandler jsp gt isErrorPage gibt an ob diese Seite eine Error Page ist oder nicht wenn ja ist das exception Objekt verfugbar lt page isErrorPage false gt lt die Seite ist keine Error Page gt isThreadSafe gibt an ob das aus der JSP generierte Servlet threadsicher ist oder nicht lt page isThreadSafe true gt lt eine threadsichere JSP gt dd taglib gibt an dass eine Taglib verwendet werden soll Es mussen ein Prafix und eine URI fur die Taglib vergeben werden lt taglib prefix MeinPrefix uri taglib MeineTagLib tld gt dd Standardvariablen Bearbeiten Die folgenden Variablen konnen in jeder JSP verwendet werden Sie werden auch als implizite Objekte bezeichnet application Anwendungsobjekt lebt solange der Server lauft config eine Konfigurationsschnittstelle out JSPWriter der die Daten in den HTTP Response Stream schreibt page das Servlet selbst pageContext eine Instanz des PageContext welche die Daten der gesamten Seite enthalt request das HTTP Request Objekt also die Anfrage vom Client an den Server response das HTTP Response Objekt also die Antwort vom Server an den Client session das HTTP Session Objekt Es kann dazu benutzt werden Information uber den Benutzer von einem Request zum nachsten weiterzureichen Skriptelemente Bearbeiten Es gibt drei grundlegende Skriptelemente die erlauben Java Code direkt in die JSP einzufugen Ein Tag das erlaubt Code in die Klasse einzufugen Dieses Tag kann dazu verwendet werden Daten der Klasse festzulegen Der Ausdruck wird in Member Variablen der generierten Servlet Klasse uberfuhrt lt int serverInstanceVariable 1 gt Ein Tag das erlaubt Code in die Methode jspService des generierten Servlets einzufugen Es werden also lokale Variablen daraus Methoden konnen nicht erzeugt werden hierzu muss die vorstehende Notation verwendet werden lt int localStackBasedVariable 1 gt Ein Tag das erlaubt Code zu expandieren und direkt in die HTTP Antwort zu schreiben Das Semikolon wird hier nicht benutzt da der Code als Ausdruck ausgewertet wird lt expanded inline data 1 gt Deklarationen Bearbeiten Deklarationen dienen zur Definition von Variablen und Methoden die von anderen Elementen in der JSP verwendet werden konnen Deklarationen erzeugen keine Ausgabe innerhalb der JSP lt int variableMeinerKlasse 0 gt Ausdrucke Bearbeiten Ausdrucke expressions werden dazu verwendet Variablen oder Methoden direkt in den HTML oder XML Ausgabestrom zu integrieren Die Klassenvariable ist lt variableMeinerKlasse gt Skriptlets Bearbeiten JSP Skriptlets konnen zur Implementierung der Ablauflogik sowie der Erzeugung der XML Ausgabe eingesetzt werden Der Skriptlet Code wird innerhalb der Methode jspService des generierten Servlets eingefugt lt int variable 0 out println Der Wert der Variable ist variable gt Kommentare Bearbeiten Kommentare sind nur innerhalb der originalen JSP sichtbar sie werden nicht in den Ausgabestrom geschrieben lt Kommentar innerhalb einer JSP gt Aktionen Bearbeiten JSP Aktionen sind XML Tags welche die eingebaute Funktionalitat von Webservern einbinden Die folgenden Aktionen sind verfugbar jsp include die angegebene JSP wird vom Java Servlet aufgerufen dabei werden der Request und der Response ubergeben Ist die angegebene JSP abgearbeitet kommt die Steuerung zur gegenwartigen JSP zuruck Diese JSP Aktion bewirkt dass der eingebettete JSP Code von allen einbettenden JSPs gemeinsam genutzt und nicht kopiert wird lt jsp include page mycommon jsp gt lt jsp param name extraparam value myvalue gt lt jsp include gt jsp param definiert einen Parameter der zu den Request Parametern hinzugefugt wird Diese Aktion kann innerhalb eines jsp include oder jsp forward Blocks verwendet werden Falls der Parameter schon im Request vorhanden war wird der Parameter uberschrieben also der Wert aus dem Query String mit dem definierten value Attribut ersetzt jsp forward der Request und der Response werden an eine andere JSP oder ein Servlet ubergeben Die Steuerung kommt nicht zur gegenwartigen JSP zuruck lt jsp forward page subpage jsp gt lt jsp param name forwardedFrom value this jsp gt lt jsp forward gt jsp plugin diese Aktion generiert je nach verwendetem Browser ein Tag zum Einbinden eines Java Applets Dies wird benotigt da in den alteren Versionen von Netscape Navigator und Internet Explorer verschiedene Tags zum Einbinden eines Applets verwendet werden lt jsp plugin type applet height 100 width 100 archive myjarfile jar myotherjar jar codebase applets code com example foo MyApplet class gt lt jsp params gt lt jsp param name enableDebug value true gt lt jsp params gt lt jsp fallback gt Your browser does not support applets lt jsp fallback gt lt jsp plugin gt jsp fallback definiert den Inhalt der angezeigt wird falls der Browser keine Applets unterstutzt jsp setProperty diese Aktion setzt ein Property in der definierten Java Bean lt jsp setProperty name myBean property lastChanged value lt new Date gt gt jsp getProperty diese Aktion holt sich ein Property von der definierten Java Bean lt jsp getProperty name myBean property lastChanged gt jsp useBean diese Aktion erstellt oder verwendet eine Java Bean wieder Ist eine Bean vom definierten Typ nicht vorhanden wird sie also initial neu erstellt Das optionale Attribut scope gibt an wie lange die Bean zur Verfugung steht d h in welchem Sichtbarkeitsbereich die Bean hinterlegt wird Folgende Werte konnen definiert werden request Attribute sind nur solange verfugbar wie der Request existiert page Attribute sind nur fur die gegenwartige JSP verfugbar Standard session Attribute sind nur solange verfugbar wie die Benutzer Session existiert application Attribute sind immer verfugbar dd Verfugbar heisst hier wie lange bzw von wo der Entwickler auf die Bean zugreifen kann Ist die Bean beispielsweise im Request Scope so kann der Entwickler mit dieser Bean sowohl innerhalb der aktuellen JSP als auch in nachgelagerten inkludierten arbeiten Page Scope beschrankt den moglichen Zugriff auf die aktuelle JSP Seite Session beschreibt alle Requests einer Benutzersitzung zu dieser Web Anwendung Application sind alle Requests aller Benutzer der gleichen Web Anwendung dieses Web Servers Beispiel lt jsp useBean id myBean class com example foo MyBean scope request gt lt jsp useBean gt Tag Bibliotheken Bearbeiten Zusatzlich zu den vordefinierten JSP Aktionen gibt es die Moglichkeit benutzerdefinierte JSP Aktionen zu verwenden Dazu muss eine eigene JSP Tag Bibliothek zur Verfugung gestellt werden Eine Tag Bibliothek wird uber eine XML Beschreibungsdatei den sogenannten Tag Library Descriptor TLD definiert der Elemente Tags zu einer Bibliothek Library zusammenfasst und mit serverseitigen Java Klassen assoziiert die die funktionale Logik eines oder mehrerer Tags implementieren Im Rahmen des Java Community Process wurde die JavaServer Pages Standard Tag Library JSTL erstellt Diese standardisiert die wichtigsten Customtags in verschiedenen Bibliotheken Ebenfalls sehr verbreitet sind die Apache Taglibs die neben der Referenzimplementierung fur die JSTL auch viele zusatzliche Tag Bibliotheken enthalten Model View Controller BearbeitenSun empfiehlt die Verwendung des Model 2 Entwurfsmusters ahnlich dem Model View Controller Entwurfsmuster beim Benutzen von JSPs Fur sehr kleine Projekte kann das Model 1 benutzt werden Der Einsatz des Entwurfsmuster dient zur Trennung der Darstellung von der Request Verarbeitung Es sollten eigene Servlets fur die Request Verarbeitung verwendet werden Nach der Request Verarbeitung sollte eine eigene JSP nur fur die Erstellung des Ausgabestroms vorhanden sein Diese JSP sollte nur HTML oder XML und vordefinierte oder benutzerdefinierte JSP Aktionen enthalten Zum Einbinden der Daten sollten JavaBeans verwendet werden JSP 2 0 BearbeitenMit Einfuhrung der Servlet API 2 4 und der Verabschiedung von JSP 2 0 ist es moglich komplett auf JSP Skriptelemente zu verzichten JSPX Dokumente entsprechen wohlgeformten XML Dokumenten deren Tag Elemente durch eindeutige Namensraume definiert sind So ist es beispielsweise moglich XHTML konforme Ausgaben zu erzeugen ohne dass Tag Bezeichner kollidieren Das folgende Beispiel zeigt das Gerust eines wohlgeformten JSPX Dokumentes zur Erzeugung von XHTML Code Uber das XML Wurzelelement lt jsp root gt werden ein Standardnamensraum fur XHTML Elemente definiert xmlns und ein Namensraum fur JSP Elemente xmlns jsp Durch das Voranstellen des jeweiligen Namensraums zum Beispiel lt jsp kann ein Tag auf diese Weise eindeutig referenziert werden Auch Java Tag Libraries werden auf diese Weise als Namensraum eingebunden eine entsprechende Direktive gibt es nicht mehr Die Namensraumdefinition wird an Kindelemente vererbt Im Beispiel wird aus Kompatibilitatsgrunden zu aktuellen Browsern uber die JSP Direktive page als Content Type text html anstatt application xhtml xml vereinbart da viele gangige Browser XHTML Dokumente sonst als XML Quelltext interpretieren wurden anstatt die XHTML Elemente zu interpretieren und darzustellen Ausserdem kennt der Internet Explorer diesen Typ nicht was dazu fuhrt dass die Seite als Datei zum Download angeboten wird Das passiert allerdings nur wenn der Webserver die Datei auch als application xhtml xml ausliefert lt xml version 1 0 encoding utf 8 gt lt jsp root xmlns http www w3 org 1999 xhtml xmlns jsp http java sun com JSP Page version 2 0 gt lt jsp output doctype root element html doctype public W3C DTD XHTML 1 1 EN doctype system http www w3c org TR xhtml11 DTD xhtml11 dtd gt lt jsp directive page contentType text html charset utf 8 language java gt lt html xmlns http www w3 org 1999 xhtml gt XHTML und oder JSP Elemente lt html gt lt jsp root gt Eine weitere Neuerung ist die sogenannte Expression Language EL Die Expression Language besteht aus Skriptelementen die an Skriptelemente interpretierter Skriptsprachen angelehnt sind Jedes Skriptelement beginnt mit einem Dollarzeichen und schliesst einen Ausdruck englisch expression in geschweiften Klammern ein 1 2 PI 2 person name Der Ausdruck kann ein einfacher Platzhalter einer Variablen sein eine Konstante oder ein Term Auch eine Referenzierung innerhalb abstrakter Datenstrukturen ist uber Introspektion moglich Eine spezielle Erweiterung des JSP Compilers ersetzt vor dem Kompiliervorgang jedes Vorkommen der EL Elemente durch den entsprechenden Java Code Die EL Elemente wurden so konzipiert dass sie weitgehend ohne geschutzte XML Entitaten auskommen Ausnahmen sind gewisse boolesche Vergleiche die sich aber leicht umschreiben lassen so wird beispielsweise lt zu lt Die Elemente konnen also in wohlgeformten XML Dokumenten eingesetzt werden Eine weitere Neuerung in JSP 2 0 sind die sogenannten Tag Files damit lassen sich Custom Tags in Form von JSP Seiten ohne spezielle Java Klassen erstellen Ihre Verwendung bietet sich insbesondere fur Custom Tags die hauptsachlich Visualisierungskomponenten enthalten an Versionen BearbeitenJSP 1 0 Release am 27 September 1999 3 JSP 1 1 JSP 1 2 JSP 2 0 JSPX EL JSP 2 1 Bestandteil von Java EE 5 JSP 2 2 10 Dezember 2009 Maintenance Release von JSP 2 1 Bestandteil von Java EE 6 JSP 2 3 12 Juni 2013 2 Maintenance Release von JSP 2 1 Bestandteil von Java EE 7Siehe auch BearbeitenApache TomcatWeblinks Bearbeiten nbsp Commons Jakarta Server Pages Sammlung von Bildern JavaServer Pages Technology Produktbeschreibung bei Oracle JSP 2 0 Syntaxreferenz von Sun tomcat apache org Referenzimplementierung eines Servlet Containers Open Source www jsptutorial org ein Tutorial zu JavaServer Pages und javabasierten Web ApplikationenEinzelnachweise Bearbeiten developer com oracle com JavaServer Pages 1 0 Specification 1 2 Vorlage Toter Link cds sun com Seite nicht mehr abrufbar festgestellt im April 2018 Suche in Webarchiven nbsp Info Der Link wurde automatisch als defekt markiert Bitte prufe den Link gemass Anleitung und entferne dann diesen Hinweis PDF Abgerufen von https de wikipedia org w index php title Jakarta Server Pages amp oldid 219880472