![Page 1: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/1.jpg)
20.07.10 Thomas Perschke
Softwaretechnik
Servlets / JSP
![Page 2: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/2.jpg)
20.07.10
Rückblick
Servlets– Einfache Servlets– Auswerten von Form-Daten
![Page 3: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/3.jpg)
20.07.10
Heute
JSP
![Page 4: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/4.jpg)
20.07.10
Servlet - JSP
HTML-Code wird im Servlet-Code erzeugt– Darstellung und Logik vereint– Java und HTML-Know-How notwendig– Änderung der Darstellung hat Änderung des Servlet-Codes
zur Folge– Keine Nutzung von HTML-Entwicklungstools möglich– Langer Entwicklungszyklus
Lösung: JSP
![Page 5: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/5.jpg)
20.07.10
JSP – Java Server Pages
Technologie für die Entwicklung dynamischer Web-Seiten Kein Produkt, sondern offene Spezifikation Ermöglicht die Auslagerung der HTML-Formatierung Trennung
von Businesslogik und Darstellung Ermöglicht das Einbetten von speziellem Code in eine HTML-
Seite anstelle der Einbettung von HTML-Code in den Programmcode
JSP-Seiten bestehen aus– HTML-Code– Eingebettete JSP-Elemente
JSP-Elemente werden serverseitig aufgelöst, bevor die Ergebnisseite zurück gesendet wird
JSP-Seiten liegen auf dem Server compiliert vor Gutes Zusammenspiel von JSP und Servlets Voraussetzung: JDK, JSP-fähiger Web-Server
![Page 6: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/6.jpg)
20.07.10
Konkurrierende Technologien
ASP– Ermöglicht das Integrieren von Programmcode in eine HTML-Seite
(VBScript, JScript)– Ermöglicht das Einbinden und Aufrufen von ActiveX-Komponenten– Datenbankzugriff, andere Komponenten von Drittanbietern – Funktionsweise wie bei JSP– Microsoft-spezifische Funktionen, nur limitierter Support für andere
Plattformen PHP
– Open Source Web Scripting Language– C-ähnliche Syntax mit einigen Features von Perl, C++ und Java– Große Anzahl an vordefinierten Funktionen (DB-Zugriff, LDAP,
generieren von PDF-Dokumenten und Bilder)– Funktionsweise wie bei JSP– Unterstützt eine große Anzahl von Plattformen
![Page 7: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/7.jpg)
20.07.10
Beispiel einer JSP-Seite
<%@ page language="java" contentType="text/html" %> <html> <head><title>Meine JSP-Seite</title></head> <body> <h1>Meine erste JSP-Seite</h1> <% java.util.Date clock = new java.util.Date() %> <% if(clock.getHours()<12){ %> <h2>Guten Morgen</h2> <% } else if(clock.getHours()<18) { %> <h2>Guten Tag</h2> <% } else { %> <h2>Guten Abend</h2> <% } %> </body> </html>
<html><head><title>Meine JSP-Seite</title></head> <body> <h1>Meine erste JSP-Seite</h1> <h2>Guten Tag</h2> </body></html>
<html><head><title>Meine JSP-Seite</title></head> <body> <h1>Meine erste JSP-Seite</h1> <h2>Guten Tag</h2> </body></html>
![Page 8: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/8.jpg)
20.07.10
JSP-Elemente
Direktive– beschreibt Informationen über die Seite selbst– Ändern sich nicht zwischen zwei Seitenaufrufen– Direktive Elemente
<%@ page ... %>Seitenabhängige Attribute wie Script-Sprache, Fehlerseite
<%@ include ... %>Einbindung von Dateien währende der Übersetzungsphase
<%@ taglib ... %>Deklaration von Tag Libraries
<%@ page errorPage=„errorpage.jsp“ %><%@ page isErrorPage=„true“ %>
![Page 9: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/9.jpg)
20.07.10
JSP-Elemente
Standard Action Elemente– Dienen zum Ausführen von Aktionen– Basieren meist auf weiteren Informationen (Request-
Parameter, Informationen von externen Systemen,...)– Das Ergebnis der Aktion kann von Aufruf zu Aufruf
unterschiedlich sein– Action Elemente
<jsp:useBean>Ermöglicht den Zugriff auf JavaBeans
<jsp:getProperty>, <jsp:setProperty>Holt/Setzt den Wert eines bestimmten Attributes eines Beans
<jsp:forward>Leitet die Bearbeitung eines Requests an eine JSP-Seite oder an eine Servlet weiter
![Page 10: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/10.jpg)
20.07.10
JSP-Elemente
Scripting Elements– Ermöglichen das Einbetten kleiner Code-Fragmente in eine
JSP-Seite (if, while,...)– Scripting Elements:
<% ... %>Scriptlet, dient zur Einbindung von ScriptingCode
<%= ... %>Expression, dient zur Einbindung von Java-Ausdrücken, bei denen das Ergebnis der Seite hinzugefügt werden soll
<%! ... %>Deklaration, dient zur Deklaration von Instanzvariablen und Methoden in einer JSP-Seite
![Page 11: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/11.jpg)
20.07.10
JSP Processing
![Page 12: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/12.jpg)
20.07.10
Hello-World Servlet
![Page 13: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/13.jpg)
20.07.10
Hello World JSP-Seite
![Page 14: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/14.jpg)
20.07.10
Von JSP-Seite generiertes Servlet
![Page 15: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/15.jpg)
20.07.10
Einschub: JavaBeans
JavaBeans sind alle Javaklassen, die folgenden Bedingungen genügen:
– Implementieren das Interface „java.io.Serializable“– Verfügen über einen leeren Konstruktor– Für den Zugriff auf die Attribute stehen get- und set-Methoden
zur Verfügung, die einer Namenskonvention genügen: Die get-/set-Methoden beginnen mit get/set und Enden mit dem
Attributname, wobei der erste Buchstabe des Attributes groß geschrieben ist
Beispiel:– Attribute: String name– Get-Methode: public String getName()...– Set-Methode: public void setName(String newName)...
![Page 16: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/16.jpg)
20.07.10
Einschub: JavaBean - Beispiel
public class Person { private String name; private String fname; private String email; private String pwd; public Person(){ } public void setName(String newName){ name = newName; } public String getName(){ return name; } ... }
![Page 17: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/17.jpg)
20.07.10
Beispiel: Person
<%@ page language="java" contentType="text/html" %> <html> <head><title>Aktuelle Uhrzeit</title></head>
<body> <jsp:useBean id="person" class=„Person"></jsp:useBean> Die Daten der Person sind: <ul> <li>Name: <jsp:getProperty name="person" property="name"></jsp:getProperty> <li>Vorname: <jsp:getProperty name="person" property="fname"></jsp:getProperty> <li>Email: <jsp:getProperty name="person" property="email"></jsp:getProperty> <li>Kennwort: <jsp:getProperty name="person" property="pwd"></jsp:getProperty> </ul> </body> </html>
![Page 18: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/18.jpg)
20.07.10
Übergabe von Parametern (1)
<html> <head><title>Zeit eingeben</title></head>
<body> Geben Sie das aktuelle Datum ein: <form method="post" action="zeit2.jsp"> <input type="text" name="hours" size="2">: <input type="text" name="minutes" size="2"> <br><input type="submit" value="go"> </form> </body> </html>
![Page 19: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/19.jpg)
20.07.10
Übergabe von Parametern (2)
<%@ page language="java" contentType="text/html" %> <html> <head><title>Eingegebene Uhrzeit</title></head>
<body> <jsp:useBean id="clock" class="java.util.Date„ scope=„request“> <jsp:setProperty name="clock" property="*"></jsp:setProperty> </jsp:useBean> Die eingegebene Zeit ist: <br>Stunden: <jsp:getProperty name="clock" property="hours"></jsp:getProperty> <br>Minuten: <jsp:getProperty name="clock" property="minutes"></jsp:getProperty> </body> </html>
![Page 20: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/20.jpg)
20.07.10
Implizite JSP-Objekte
Request– Instanz der Klasse javax.servlet.http.HttpServletRequest– Ermöglicht Zugriff auf alle Informationen des Requests
Response– Instanz der Klasse javax.servlet.http.HttpServletResponse– Ermöglicht Zugriff auf alle Informationen des Response
Exception– Nur in Fehlerseiten verfügbar– Liefert Informationen zum aufgetretenen Fehler
![Page 21: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/21.jpg)
20.07.10
Beispiel: Request-Informationen
<%@ page language="java" contentType="text/html" %> <html> <head><title>Eingegebene Uhrzeit</title></head>
<body> <h1>Request-Informationen</h1>s Remote-Host: <%= request.getRemoteHost() %> <br>Remote-Addr: <%= request.getRemoteAddr() %> <br>Browserkennung: <%= request.getHeader("User-Agent") %> <br>Protocol: <%= request.getProtocol() %> <br>Parameter1: <%= request.getParameter("param1") %> <br>Parameter2: <%= request.getParameter("param2") %> </body> </html>
![Page 22: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/22.jpg)
20.07.10
Datenaustausch zwischen JSP und Servlets
ScopeBestimmt, wie lange und für welche User gemeinsame Informationen gültig sind
– PageSichtbar nur innerhalb der Seite
– RequestSichtbar innerhalb aller Seiten, die den gleichen eines Request abarbeiten
– SessionSichtbar innerhalb einer Session, u.U. über mehrere Requests hinweg
– ApplicationSichtbar innerhalb der Applikation, also sichtbar für alle User der gleichen Applikation
![Page 23: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/23.jpg)
20.07.10
Beispiel: Datenaustausch ServletJSP (1)
private synchronized void handleGetPersonAction( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Person person = new Person(); person.setName("Perschke"); person.setFirstname("Thomas"); person.setEmail("[email protected]"); person.setPassword("tp");
request.setAttribute("p1", person); RequestDispatcher rd = request.getRequestDispatcher("person.jsp"); rd.forward(request, response); }
![Page 24: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/24.jpg)
20.07.10
Beispiel: Datenaustausch ServletJSP (2)
... <body> ... <jsp:useBean id="p1" scope="request" class=„Person" />
<p>Angaben zur Person: <br>Name: <%= p1.getName() %> <br>Vorname: <%= p1.getFirstname() %> <br>Email: <%= p1.getEmail() %> ... <p>Passwort: <jsp:getProperty name="p1" property=„password“ %>
</jsp:getProperty> ...
![Page 25: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/25.jpg)
20.07.10
Beispiel: Datenaustausch ServletJSP (3)
... <body> ... <jsp:useBean id=„personen" scope="request" class=„java.util.Vector" />
<% for(int i=0; i<personen.size; i++){ %> <% Person einePerson = (Person)personen.elementAt(i); %> <p>Angaben zur Person <%= (i+1) %>: <br>Name: <%= einePerson.getName() %> <br>Vorname: <%= einePerson.getFirstname() %> <br>Email: <%= einePerson.getEmail() %> ... <p>Passwort: <jsp:getProperty name=„einePerson“ property=„password“ %>
</jsp:getProperty> ... <% }//end of for %>
...
![Page 26: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/26.jpg)
20.07.10
JSP-Tags
Problem: – Grundlegende Java-Kenntnisse notwendig- Mangelnde Portierbarkeit durch Bindung an Servlet
- Lösung:- Erzeugen eigener Tags zur Kapselung oft benötigter
Funktionen- Ziel:
- Vollständige Befreiung der JSP von Java-Code- Leichtere Wiederverwendung- Nutzung von Tag-Bibliotheken (JSP Standard Tag Library,...)
![Page 27: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/27.jpg)
20.07.10
JSP-Tags: Beispiel iterator-Tag
Der iterator-Tag soll dazu dienen, bestimmte HTML-Fragmente zu vervielfältigen.
Vorher:
<%@ page language="java" [...] %><html> [...] <body> <% for(int i=0; i<3; i++){ %> <p>Carpe Diem: Genieße den Tag!</p> <% } %> </body></html>
Nachher:
<%@ taglib uri=“[...]“ prefix=“mytags“ %><html> [...] <body> <mytags:iterate times=“3“> <p>Carpe Diem: Genieße den Tag!</p> </mytags:iterate> </body></html>
![Page 28: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/28.jpg)
20.07.10
Ein eigenes Tag
Vorgehensweise:
1. Erstellen der Java-Klasse2. Konfiguration des Tag-Handlers3. Einbinden der Tag-Bibliothek4. Verwenden des Tags in einer JSP
![Page 29: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/29.jpg)
20.07.10
Ein eigenes Tag – Erstellen der Java-Klasse
Erstellen der benötigten Java-Klasse, die die Funktionalität aufnimmt (Tag-Handler)
Java stellt dabei im Paket javax.servlet.jsp.tagext verschiedene Interfaces bereit. Kürzer: Verwendung der Klassen „TagSupport“ und „BodyTagSupport“ und überschreiben der Methoden
[...] public class IterationTag extends BodyTagSupport
implements BodyTag { [...] }
![Page 30: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/30.jpg)
20.07.10
Ein eigenes Tag – Erstellen der Java-Klasse
Lebenszyklus eines Tags
<html>
[...]
[...]
</html>
<tag>
</tag>
[...]z.B. Text oder weitere Tags[...]
Rumpf
Hier wird die MethodedoStartTag() aufgerufen
Hier wird die MethodedoInitBody() aufgerufen
Hier wird die MethodedoAfterBody() aufgerufen
Hier wird die MethodedoEndTag() aufgerufen
Hier beginnt die Bearbeitung des nächsten Tags
Ende des Dokuments
EVAL_BODY_INCLUDE
SKIP_BODY
SKIP_PAGE
SKIP_BODY
EVAL_BODY_AGAIN
![Page 31: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/31.jpg)
20.07.10
Ein eigenes Tag – Erstellen der Java-Klasse
Beispiel: Iterator-Tag
public class IterationTag extends BodyTagSupport [...] { private int iterations = 0; public void setTimes(Integer value){ iterations = value; } public int doAfterBody(){ BodyContent body = getBodyContent(); JspWriter out = body.getEnclosingWriter(); try{ for(int i=0; i<iterations; i++){ out.print(body.getString()); } }catch(IOException e){[...]}; return SKIP_BODY; } }
![Page 32: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/32.jpg)
20.07.10
Ein eigenes Tag – Erstellen der Java-Klasse
Viele Servlet-Container verwalten ihre Tags über einen Pool. Aus diesem Grund sollten Tag-Handler, die einen zustand besitzen, über die Methode release() in den Ausgangszustand zurückgesetzt werden. Die Methode release() wird vom Servlet-Container nach Beendigung des Tag-Lebenszyklus aufgerufen.
public class IterationTag extends BodyTagSupport [...] { [...] public void release(){ iterations = 0; } }
![Page 33: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/33.jpg)
20.07.10
Ein eigenes Tag – Konfiguration des Tag-Handlers
Dem Servlet-Container muss nun mitgeteilt werden, für welcher Tag-Handler für welches Tag zuständig ist. Was bei den Servlets der Deployment-Descriptor ist, wird in Tag-bibliotheken Tag Library Descriptor genannt (TLD).
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE taglib PUBLIC [...] >
<taglib> [...] <tag> <name>iterate</name> <tag-class>IterationTag</tag-class> <attribute> <name>times</name> <required>true</required> <type>java.lang.Integer</type> </attribute> </tag> [...]</taglib>
![Page 34: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/34.jpg)
20.07.10
Ein eigenes Tag – Einbinden der Tag-Bibliothek
Der TLD wird üblicherweise unterhalb des Verzeichnisses „web-inf“ im Dateisystem abgelegt
Im Web-Deployment-Descriptor wird der TLD dann verfügbar gemacht
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC [...]>
<web-app> [...] <taglib> <taglib-uri>/mytags</taglib-uri> <taglib-location>/WEB-INF/tlds/mytags.tld</taglib-location> </taglib> [...]</web-app>
![Page 35: Softwaretechnik - Perschkeperschke.info/dhbwvs9363/sonst/java_jsp.pdf · 2016. 10. 13. · 20.07.10 Einschub: JavaBeans JavaBeans sind alle Javaklassen, die folgenden Bedingungen](https://reader035.vdocuments.us/reader035/viewer/2022071005/5fc22ac8985a93694002b576/html5/thumbnails/35.jpg)
20.07.10
Ein eigenes Tag – Verwendung in der JSP
<%@ taglib uri=“[...]“ prefix=“mytags“ %><html> [...] <body> <mytags:iterate times=“3“> <p>Carpe Diem: Genieße den Tag!</p> </mytags:iterate> </body></html>