250 likes | 384 Views
Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov. Überblick. Einleitung JSP im Kontext von J2EE JSP2 Benutzerdefinierte Tags Zusammenfassung. Einleitung. Java Server Pages ist eine Technik für die Entwicklung dynamischer Web-Seiten.
E N D
Java Server Pages 2 und Benutzerdefinierte Tags Strahil Yordanov
Überblick • Einleitung • JSP im Kontext von J2EE • JSP2 • Benutzerdefinierte Tags • Zusammenfassung
Einleitung • Java Server Pages ist eine Technik für die Entwicklung dynamischer Web-Seiten. • JSP ermöglicht die schriftliche Spezifikation von der Erzeugung einer dynamischen Antwort auf eine Anforderung • JSP unterstützt die Trennung zwischen Sicht und Geschäftslogik für eine Webanwendung.
JSP und J2EE • In der Regel, legt J2EE das Modell wobei viele Benutzer über das Web auf eine Anwendung zugreifen fest. • JSP ist so sehr gut für die Präsentationsschicht der J2EE geeignet. • JSP entspricht die “View“-Ebene beim MVC Modell:
JSP und J2EE • JSP ist auf eine andere Technologie zur dynamischen Generierung von Dokumenten basiert—Java Servlets. • Ein Servlet ist eine Java Klasse die auf einen Server lauft und Anforderungen von Client Browsers ausführt. • Das Servlet generiert dynamische Web-Seiten durch Einbettung von HTML in seinem Java Code.
JSP und J2EE • JSP Seiten führen dasselbe Funktion wie Servlets aus. Diesmal aber, sie erreichen das durch die Einbettung von Java Code (oder anderem Skript Sprache) in HTML. • Deshalb können sie auch wie „umgestülpte“ Servlets gezeichnet werden.
JSP und J2EE • Bei Übersetzung, JSP Quell-Code ist erst zu Servlet Code und dann zu ausführbarem Programm umgewandelt. • Der Lebenszyklus einer JSP-Seite ist wie folgt:
JSP und J2EE • Hier ist ein Beispiel der Übersetzung. Das ist ein Teil der JSP Seite: <HTML> <BODY> <%! String name = new String("BOB"); %> <%! public String getName() { return name; } %> Hello <B><%= getName() %></B> </BODY> </HTML>
Und hier ist der entsprechende Teil des generierten Servlets: out.write("<HTML>\r\n<BODY>\r\n\r\n"); // end // begin out.write("\r\n"); // end // begin out.write("\r\n\r\nHello <B>"); // end // begin [file="D:\\Expressions.jsp";from=(6,12);to=(6,23)] out.print( getName() ); // end // begin out.write("</B>\r\n\r\n</BODY>\r\n</HTML>\r\n"); // end
JSP2 • JSP 2.0 ist ein Upgrade von JSP 1.2. • Die folgenden syntaktischen Schwerpunkte sind in JSP2 von den vorigen Versionen geerbt: • Skripte • Direktive • Standard Aktionen
Skripte • Skripte versehen JSP mit dynamischer Verhaltung. • Mit denen kann man Variablen vereinbaren und lesen, Iteration und Bedingungen verwenden, usw. • Das Ergebnis von ihren Ausdrücken kann als Teil vom HTML Code verwandet werden.
Direktive • Direktive bestimmen globale Bedingungen für die jeweilige JSP Seite. • Unter anderen sie können: • Die JDK Klassen die in dem Dokument zur Verfügung sind bestimmen • Eine Datei zur Übersetzungszeit einfügen • Tagbibliotheken vereinbaren
Standard Aktionen • Standard Aktionen liefern Funktionalität die in JSP Seiten oft nötig ist. Sie haben die Syntax von XML tags und u. a. • JavaBeans in der Seite integrieren, • Kontrolle anderen Seiten weiterleiten • Ausgaben anderer Seiten zur Anfragezeit einbetten
<%@page import="java.util.*" %> <HTML> <HEAD> <TITLE>JSP Example</TITLE> </HEAD> <BODY BGCOLOR="ffffcc"> <CENTER> <H2>Date and Time</H2> <% java.util.Date today = new java.util.Date(); If (today.getYear() + 1900 < 2004) {%><jsp:forward page="TooLate.jsp"><%} else out.println("Today's date is: "+today); %> </CENTER> </BODY> </HTML> Direktive Skript Standart Aktion Beispiel
Expression Language • JSP2 bietet eine einfache Syntax, die Skripte ersetzen soll. Sie heißt „Expression Language“. Die folgenden Skripten können mit EL viel einfacher ausgedrückt werden. <someTags:aTag attribute="<%pageContext.getAttribute("aName") %>"> . <%= aCustomer.getAddress().getCountry() %> In EL das sieht so aus: <someTags:aTag attribute="${aName}"> . ${aCustomer.address.country}
JavaBeans und JSP • Java Beans wird erfolgreich bei der Konstruktion grafischer Benutzeroberflasche eingesetzt. • Sie speichern die Geschäftslogik in „Code-Behind“ Klassen und können durch die folgenden JSP Standartaktionen manipuliert werden: <jsp:useBean..>, <jsp:setProperty..> ,<jsp:getProperty>
JavaBeans und JSP • Die Verwendung dieser Komponenten in JSP bringt die folgende Vorteile: • Auslagerung von Java-Code und damit eine Bessere Aufteilung bei der Entwicklung von Anwendungen • Verwendung schon existierender Komponente • Bequemer Zugriff auf Daten aus HTML-Formularen • Temporäre Speicherung von Daten für die Dauer mehrer Anfragen
Benutzerdefinierte Tags • Benutzerdefinierte Tags kapseln Funktionalität für Wiederverwendung. • Tags minimieren den Anteil Java-Code in JSP Seiten • Tags bieten stärkere Abstraktion als Java-Code • Tags sorgen durch Wiederverwendung für ein konsistentes Aussehen Ihrer Seiten.
Benutzerdefinierte Tags • Tags werden durch Tag-Handlers definiert. Tag-Handlers sind Java Klassen, die die Funktionalität der Tags enthalten. • Tag-Handlers werden in Tag-Bibliotheken gespeichert. Tag-Bibliotheken sind in der Regel in der Form einer Jar-Datei. • Der Inhalt der Tag-Bibliotheken wird durch eine XML-Datei beschreibt. Die ist der Tag Library Descriptor(TLD).
Benutzerdefinierte Tags • Benutzerdefinierte Tags u.a. können: • Attribute einsetzen. • einen Body haben. Den können sie verarbeiten oder einfach erzeugen. • Ineinander geschachtelt werden • Miteinander kommunizieren
Beispiel: Definierung eines Tages Der Tag-Handler: import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; public class HelloTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { getJspContext().getOut().write("This is my first tag!"); } } Der Eintrag im Tag Library Descriptor: <tag> <description>Prints this is my first tag</description> <name>hello</name> <tag-class>jsp2.examples.simpletag.HelloTag</tag-class> <body-content>empty</body-content> </tag>
Die JSP Seite. Die taglib Direktive vereinbart die Tagbibliothek zu Benutzung. Ihrer Name und die URI vom TLD werden als Attribute eingegeben. <%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %> <HTML> <HEAD> <TITLE>Simple Tag Handler</TITLE> </HEAD> <BODY> <H2>Simple Tag Handler</H2> <P> <B>My first tag prints</B>: <mytag:hello/> </BODY> </HTML>
Zusammenfassung • JSP2 hat das Ziel JSP Programmierung einfacher zu machen, und zwar sie ohne Kenntnisse von JAVA zu ermöglichen. • Eine saubere Trennung zwischen Design und Programmierung dynamischer Web-Seiten wird dafür verwirklicht.
Referenzen: • Volker Turau, Krister Saleck. Java Server Pages und J2EE. dpunkt-Verlag, Heidelberg, 2001 • Stefan Wille. Go To Java Server Pages. Addison-Wesley Verlag, München, 2001 • http://java.sun.com/webservices/docs/1.3/tutorial/doc/JSPTags.html • http://java.sun.com/webservices/docs/1.3/tutorial/doc/JSPIntro.html • http://java.sun.com/developer/technicalArticles/javaserverpages/JSP20/