Ich programmiere seit langem mit JSP und ASP. Unter diesen beiden serverseitigen Programmierlösungen habe ich zunehmend das Gefühl, dass JSP viel leistungsfähiger ist als ASP. Warum sollte ich JSP als mein bevorzugtes serverseitiges Webanwendungsentwicklungstool wählen? Natürlich verfügt JSP über viele faszinierende Features und Funktionen, aber die Tag-Bibliothek von JSP war für mich einer der wichtigsten Gründe, diese Entscheidung zu treffen.
Warum sagst du das? Dafür gibt es zwei Gründe: Wartung und Geschwindigkeit der Entwicklung. Serverseitige Skriptsprachen sind tatsächlich der Schmelztiegel der Internetentwicklung. Auf einer Serverseite können Sie problemlos verschiedene Skriptmethoden und -objekte kombinieren. Diese Art von Seite ist einfach der Grundstein für den Aufbau des Webs. Es ist diese Mischung aus „Dingen“, die serverseitigen Skripten leistungsstarke Möglichkeiten zur Informationsverarbeitung verleiht. Es ermöglicht serverseitigen Programmierern die Entwicklung dynamischer und flexibler Webseiten. Andererseits hat das freie Mischen von Skripten aber auch Nachteile: Es ist sehr mühsam in der Wartung, insbesondere wenn die Größe des Projekts immer größer wird. Erschwerend kommt hinzu, dass sich mit zunehmender Codekomplexität die Entwicklungsgeschwindigkeit verlangsamt, was der Entwicklung mittelgroßer und großer Webanwendungen nicht förderlich ist werden sehr spät eingeführt und die Kosten sind hoch. Darüber hinaus muss die Website nach der Entwicklung noch qualifizierte Programmierer finden, die diese recht komplexen Codes pflegen. Dadurch werden diese Programmierer zu allgemeinen Webdesignern, und die serverseitige Anwendung spielt sowohl beim endgültigen Grafikdesign als auch bei der Implementierung eine Schlüsselrolle . Es ist geschwächt.
Um dieses Problem zu überwinden, führte ASP die COM-Objekttechnologie ein, während JSP als Gegenmaßnahme J2EE bereitstellte. Diese Lösungen basieren auf Mechanismen zentralisierter, wiederverwendbarer Codebasen. Allerdings sind sie zu schwierig zu bedienen und das Erlernen nimmt viel Zeit in Anspruch. Darüber hinaus verringern diese Lösungen nicht die Versuchung, unordentlichen Code zu erstellen, und daher müssen wir große, gut strukturierte Entwicklungsteams organisieren, um diese Technologien nutzen zu können. Bei mittelgroßen Projekten werden solche Methoden in der Regel seltener eingesetzt, tatsächlich sind jedoch mittelgroße Webanwendungsprojekte am verbreitetsten. Daher sind viele Projekte gezwungen, eine Entwicklungs- und Wartungsumgebung zu verwenden, die nicht ihren Anforderungen entspricht.
Glücklicherweise bietet JSP eine bessere Möglichkeit, dieses Problem zu lösen. Tag-Bibliotheken bieten eine einfache Möglichkeit, wiederverwendbare Codeblöcke zu erstellen. Sobald eine Tag-Bibliothek entworfen ist, kann sie in vielen Projekten wieder verwendet werden. Noch praktischer ist, dass Sie im Gegensatz zu COM und J2EE keine weiteren Fähigkeiten erlernen müssen, um eine Tag-Bibliothek zu erstellen, solange Sie wissen, wie man JSP schreibt! Schließlich verbessern Tag-Bibliotheken auch die Wartbarkeit von Webanwendungen. Diese Verbesserung der Wartbarkeit spiegelt sich in der einfachen Implementierung XML-basierter anpassbarer Schnittstellen auf JSP-Seiten wider. Dadurch können Webdesigner JSP-Webanwendungen erstellen, ohne zu wissen, was JSP ist. Auf diese Weise wird die Webentwicklung zu einer sehr effizienten Teamentwicklungsaufgabe. JSP-Programmierer können benutzerdefinierte Tags und Back-End-Codemodule erstellen, während Webdesigner benutzerdefinierte Tags verwenden und sich ganz auf das Webdesign selbst konzentrieren können. Die Tag-Bibliothek löst das Problem der Code-Verwirrung und erledigt dies sauber und schön (tatsächlich ist XML die Essenz zur Lösung dieser Probleme, aber die Tag-Bibliothek spielt immer noch eine Schlüsselrolle).
Was ist eine Tag-Bibliothek?
Die JSP-Tag-Bibliothek (auch benutzerdefinierte Tag-Bibliothek genannt) kann als eine Methode zum Generieren von XML-basierten Skripten über JavaBeans angesehen werden. Konzeptionell sind Tags einfache und wiederverwendbare Codestrukturen. In unserer neuesten Version von JSPKit (innerhalb von JSP Insider) kann beispielsweise problemlos auf XML-Dokumente mithilfe von XML-Tags zugegriffen werden. Bitte sehen Sie sich Liste A unten an.
Listing A: Beispiel-Tags, die XML/XSL-Transformationen durchführen, und die darin enthaltenen HTML-Seiten
<%@ taglib uri=" http://www.jspinsider.com/jspkit/JAXP " prefix="JAXP"%>
Das obige Beispiel verwendet einfache Tags, um auf den leistungsfähigeren Code hinter den Kulissen zuzugreifen. Der Tag-Teil der Anweisung lädt zunächst eine XML-Datei und wendet dann eine XSL-Datei an, um den Inhalt der XML-Datei in einen bestimmten Code umzuwandeln Im Darstellungsformat erstellt und an den Client gesendet, erfolgt dies alles mithilfe eines sehr einfachen Tags. Benutzerdefinierte Tags erleichtern die Erstellung wiederverwendbarer Open-Source-Module in JSP-Projekten. Sie benötigen lediglich eine Tag-Bibliothek und die dazugehörige Dokumentation.
Wichtige Funktionen der Tag-Bibliothek
1. Einfache Installation in mehreren Projekten. Tags können problemlos von einem JSP-Projekt in andere Projekte migriert werden. Sobald Sie eine Tag-Bibliothek erstellt haben, packen Sie einfach alles in eine JAR-Datei, die Sie in jedem JSP-Projekt wiederverwenden können. Tag-Bibliotheken erfreuen sich immer größerer Beliebtheit, da Tags wiederverwendet und problemlos in eigenen Projekten verwendet werden können. Die derzeit beste Tag-Ressource finden Sie unter JSPTags.com.
2. Die erweiterte JSP-Tag-Bibliothek kann alle Features und Funktionen der JSP-Spezifikation (JSP 1.2) enthalten. Sie können die Funktionen von JSP unbegrenzt erweitern und erweitern, ohne auf das Erscheinen der nächsten JSP-Version warten zu müssen. Beispielsweise sind Sie mit dem JSP-Include-Aufruf nicht zufrieden. Sie können Ihre eigenen Include-Tags erstellen, die Ihre eigenen Spezifikationen durchsetzen.
3. Einfache Wartung
Die Tag-Bibliothek macht JSP-Webanwendungen aus folgenden Gründen sehr einfach zu warten:
(1) Die Etikettenanwendung ist für jedermann einfach und leicht zu verwenden und zu verstehen.
(2) Alle Programmlogikcodes sind im Tag-Prozessor und in JavaBeans konzentriert. Das bedeutet, dass Sie beim Aktualisieren des Codes nicht jede Seite ändern müssen, die den Code verwendet. Sie müssen nur die zentralisierten Codedateien ändern.
(3) Wenn Sie neue Funktionen hinzufügen müssen, müssen Sie keine vorhandenen Seiten ändern. Sie können den Tags zusätzliche Attribute hinzufügen, um neue Verhaltensweisen einzuführen, während andere alte Attribute unverändert bleiben, sodass alle alten Seiten weiterhin verwendet werden können . Funktioniert normal. Sie haben beispielsweise ein Etikett, das den gesamten Text blau macht:
Aber später im Projekt soll das Blau dunkler sein. Sie können die ursprüngliche Beschriftung beibehalten und ihr einfach ein neues Attribut hinzufügen: Schatten, wie unten gezeigt:
Alle alten Tags können immer noch blauen Text erzeugen, aber jetzt können Sie denselben Tag verwenden, um abgedunkelten blauen Text zu erzeugen.
(4) Labels verbessern die Wiederverwendbarkeit von Code. Code, der viele Male getestet und verwendet wurde, weist definitiv weniger Fehler auf. Daher weisen JSP-Seiten, die benutzerdefinierte Tags verwenden, auch weniger Fehler auf und sind natürlich viel bequemer zu warten.
4. Die Tag-Bibliothek mit schneller Entwicklungszeit bietet eine einfache Möglichkeit, Code wiederzuverwenden. Eine der Standardmethoden zur Wiederverwendung von Code in serverseitigen Sprachen ist die Verwendung von Vorlagen. Im Vergleich zur Verwendung von Vorlagenbibliotheken sind Tag-Bibliotheken eine bessere Lösung. Bei einer Vorlagenbibliothek müssen Sie die Vorlagen ändern oder eine strenge Schnittstelle für jedes Projekt erstellen, während die Tag-Bibliothek diese Einschränkungen nicht aufweist und alle Vorteile der Objektorientierung bietet, flexibler und erweiterbarer sein kann und durch Wiederverwendung Code können Sie weniger Zeit mit der Entwicklung und mehr Zeit mit dem Entwerfen Ihrer Webanwendung verbringen. Die Schnittstelle der Tag-Bibliothek ist ebenfalls sehr einfach, sodass sie sehr einfach einzufügen, zu verwenden und zu debuggen ist.
Tag-Struktur
Obwohl die Tag-Bibliothek sehr einfach zu verwenden ist, ist der interne Implementierungsmechanismus zum Einrichten einer Tag-Bibliothek immer noch recht kompliziert, zumindest komplizierter als das Einrichten einer einfachen JavaBean. Die Komplexität ergibt sich aus der Tatsache, dass die Tag-Bibliothek aus mehreren Teilen besteht. Sie müssen jedoch nur die Kenntnisse von Java und JSP beherrschen.
Ein einfaches Tag besteht aus folgenden Elementen:
1. JavaBean: Um die Vorteile von Java und seine inhärente objektorientierte Natur zu nutzen, sollte wiederverwendbarer Code in einem separaten Codecontainer, einem JavaBean, platziert werden. Diese JavaBeans sind kein wesentlicher Bestandteil der Tag-Bibliothek, sondern die grundlegenden Codemodule, die von der Tag-Bibliothek zur Ausführung der zugewiesenen Aufgaben verwendet werden.
2. Tag-Prozessor: Der Tag-Prozessor ist das eigentliche Herzstück der Tag-Bibliothek. Ein Tag-Handler verweist auf alle benötigten externen Ressourcen (JavaBeans) und ist für den Zugriff auf JSP-Seiteninformationen (PageContext-Objekte) verantwortlich. Die JSP-Seite übergibt die auf der Seite festgelegten Tag-Attribute und den Inhalt im Tag-Prozessor an den Tag-Prozessor. Wenn der Tag-Prozessor seine Verarbeitung abschließt, sendet er die verarbeiteten Ausgabeergebnisse zur weiteren Verarbeitung zurück.
3. Tag-Bibliotheksdeskriptor (TLD-Datei): Dies ist eine einfache XML-Datei, die die Attribute, Informationen und den Standort des Tag-Prozessors aufzeichnet. Der JSP-Container verwendet diese Datei, um zu wissen, wo und wie eine Tag-Bibliothek aufgerufen werden soll.
4. Die web.xml-Datei der Website: Dies ist die Initialisierungsdatei der Website. In dieser Datei müssen die auf der Website verwendeten benutzerdefinierten Tags sowie die tld-Datei zur Beschreibung jedes benutzerdefinierten Tags definiert werden.
5. Release-Dateien (WAR- oder JAR-Dateien): Wenn Sie benutzerdefinierte Tags wiederverwenden möchten, benötigen Sie eine Möglichkeit, diese von einem Projekt in ein anderes zu verschieben. Das Packen der Tag-Bibliothek in eine JAR-Datei ist eine einfache und effektive Möglichkeit.
6. Tag-Bibliotheksdeklaration auf der JSP-Seite: Wenn Sie ein benutzerdefiniertes Tag auf der JSP-Seite verwenden möchten, müssen Sie die Tag-Bibliothekskennung verwenden, um es auf der Seite zu deklarieren.
Es scheint, dass es noch viel zu tun gibt, und natürlich wird es beim ersten Start etwas schwierig sein, aber es ist nicht sehr schwierig. Dabei geht es nicht um die Codierung, sondern darum, die Teile richtig zu organisieren. Diese hierarchische Struktur ist wichtig, da sie die Verwendung von Tags flexibler und einfacher übertragbar macht. Noch wichtiger ist, dass diese Ebenen die Automatisierung des gesamten Prozesses der Erstellung einer Tag-Bibliothek über die JSP-IDE (integrierte JSP-Entwicklungsumgebung) ermöglichen. Die JSP-IDE kann den Großteil der Arbeit zum Erstellen benutzerdefinierter Tags automatisch erledigen, und Sie müssen lediglich für die Einrichtung der Code- und Tag-Prozessoren selbst verantwortlich sein.
(Hinweis: Ein Tag-Prozessor definiert nur ein benutzerdefiniertes Tag. Eine Tag-Bibliothek ist eine Sammlung mehrerer Tag-Prozessoren, die dieselbe Aufgabe erledigen.)
Erstellen Sie Ihr erstes Tag.
Im Folgenden erfahren Sie anhand eines konkreten Beispiels Schritt für Schritt, wie Sie ein benutzerdefiniertes Tag erstellen erweitert JSP um eine eigene HTML-Kodierungsfunktion. Diese Funktion ersetzt alle <- und >-Zeichen durch HTML-Code. Es kann leicht erweitert werden, um andere Codierungsverarbeitungen durchzuführen. Zur Vereinfachung werden in diesem Beispiel nur die grundlegenden Elemente zum Erstellen eines benutzerdefinierten Tags erläutert.
Jeder wiederverwendbare Teil des Codes
, der eine JavaBean erstellt,
sollte in einer JavaBean platziert werden.Das ist sehr wichtig. Auf diese Weise können Sie den Code in anderen Projekten wiederverwenden. Da in einem Tag-Handler platzierter Code außerhalb des Tags nicht wiederverwendbar ist, ist es wichtig, die wiederverwendbaren Codeteile zu isolieren. In diesem Beispiel ist die für HTML codierte Logik üblich und wird daher in einem JavaBean platziert, siehe Listing B
Listing B: HTML-codierte JavaBeans
/* HTML_Format.java */
öffentliche Klasse HTML_Format erweitert Objekt implementiert java.io.Serializable {
/** Erstellen Sie ein neues HTML_Format */
public HTML_Format() {}
/** Ersetzen Sie alle <- und >-Zeichen in einer Zeichenfolge durch die Antwort-HTML-Codierung */
öffentlicher String HTML_Encode(String as_data)
{
int li_len = as_data.length();
/*Die Länge des String-Puffers ist länger als der Original-String*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10));
/* Schleife zum Ersetzen aller <- und >-Zeichen*/
for(int li_count = 0; li_count < li_len; li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
}
return( lsb_encode.toString() );
}
}
Der Code zum Erstellen eines Tag-Prozessors ist in Listing C dargestellt:
Listing C: HTML-Codierungs-Tag-Prozessor
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
öffentliche Klasse HTML_FormatTag erweitert BodyTagSupport
{
/* 1) Diese Funktion wird am Ende des Tags aufgerufen*/
public int doEndTag() löst eine JspTagException aus
{
versuchen
{ /* 2) Holen Sie sich den Text im Etikett */
BodyContent l_tagbody = getBodyContent();
String ls_output = "";
/* 3) Wenn der Tag-Körper Text enthält, verarbeiten Sie ihn */
if(l_tagbody != null)
{ HTML_Format l_format = neues HTML_Format();
/* 3a) Konvertieren Sie den Inhalt des Tag-Bodys in einen String */
String ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4) Ergebnisse zurück in den Datenstrom schreiben */
pageContext.getOut().write(ls_output.trim());
}
Catch (IOException e)
{ throw new JspTagException("Tag Error:" + e.toString());
}
/* Lassen Sie JSP den Inhalt der folgenden Seiten weiter verarbeiten*/
return EVAL_PAGE;
}
}
Diese Verarbeitung ist sehr einfach und umfasst Folgendes:
1. Lesen Sie den Text zwischen den öffnenden und schließenden Tags
2. Rufen Sie die HTML-Kodierungsfunktion auf
3. Geben Sie die Ergebnisse an die JSP-Seite zurück.
Erstellen Sie einen Tag-Deskriptor.
Wir müssen das benutzerdefinierte Tag beschreiben, damit das System weiß, was es damit tun soll. Das Suffix dieser Beschreibungsdatei ist .tld. Die TLD-Datei ist normalerweise nach dem Tag-Prozessor benannt und wird im Verzeichnis „/WEB-INF/“ gespeichert. Siehe Listing D.
Listing D: HTML-Kodierungs-Tag-Deskriptor <?xml version="1.0"kodierung="UTF-8" ?>
<!DOCTYPE taglib
ÖFFENTLICH „-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//DE“
" http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd ">
<SHORTNAME>HTML_FormatTag</SHORTNAME>
<TAG>
<NAME>HTMLEncode</NAME>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<INFO>HTML kodieren</INFO>
</TAG>
</TAGLIB>
Aktualisieren Sie die Web-XML-Datei
, um dem JSP-Container nun mitzuteilen, wie die Tag-Bibliothek verwendet werden soll. Dazu müssen Sie die Datei web.xml ändern. Insbesondere müssen Sie ein Taglib-Projekt hinzufügen, um die Tag-Bibliothek zu registrieren und dem Tag einen URI zuzuweisen. Der URI ist der einzige Index auf der Website, der für dieses bestimmte Tag gilt. Da das Tag in Zukunft möglicherweise auf verschiedenen Websites verwendet wird, ist es am besten, die vollständige URL und/oder den Paketnamen zu verwenden, um die Eindeutigkeit sicherzustellen. Dieses Beispiel ist vereinfacht; Beispielcode finden Sie in Listing E.
Listing E: Ändern Sie die web.xml-Datei
ÖFFENTLICH „-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN“
" http://java.sun.com/j2ee/dtds/web-app_2.2.dtd ">
<WEB-APP>
<TAGLIB>
</TAGLIB-URI>
</TAGLIB-LOCATION>
</TAGLIB>
</WEB-APP>
Neue Tags verwenden
Nachdem die benutzerdefinierten Tags festgelegt wurden, können Sie sie auf Ihren JSP-Seiten verwenden. Verwenden Sie dazu einfach den Direktivenbefehl taglib, um die Tags zu deklarieren, die Sie auf der Seite verwenden möchten. Tags werden anhand ihres eindeutigen URI indiziert, dem dann ein Namespace-Präfix zugewiesen wird. Dieses Präfix hat keine besondere Bedeutung, solange es nicht mit anderen Namespaces in Konflikt steht, kann es beliebig sein. Bitte beachten Sie die Auflistungen F und G unten.
Listing F: Verwendung des HTML-Codierungs-Tags<%@ taglib uri="HTMLEncode" prefix="Examples" %>
auf einer JSP-Seite
<?XML:NAMESPACE PREFIX = Beispiele /><Examples:HTMLEncode>
<Hallo, einfaches Beispiel>
</Beispiele:HTMLEncode>
</PRE>
Listing G: Ausgabe des Beispielcodes<Hallo, einfaches Beispiel>
was wie folgt angezeigt wird:
<Hallo, einfaches Beispiel>
Mit diesem Tag habe ich den gesamten Code der Seite codiert. Alle benutzerdefinierten Tags werden auf dem Server verarbeitet. Das bedeutet, dass auf der Ausgabeseite keine benutzerdefinierten Tags angezeigt werden.
Wie Sie sehen, ist das Erstellen von Tags nicht schwierig. Der schwierigste Teil besteht darin, die gesamten Vor- und Nachteile von Tag-Prozessoren zu erlernen. Dies ist eine leistungsstarke Funktion, und wir haben nur an der Oberfläche gekratzt. Aufgrund der vielen Schritte, die dieser Prozess mit sich bringt, kann die Erstellung von Tags für neue JSP-Programmierer verwirrend sein.
Fazit:
Die Tag-Bibliothek ist eine der wichtigsten Funktionen von JSP und wird ständig weiterentwickelt. Es ist in der Tat eine neue Sache und wurde daher noch nicht weit verbreitet, aber die benutzerdefinierte Tag-Bibliothek hat ihr Geheimnis gelüftet und immer mehr Entwickler beginnen, ihr Aufmerksamkeit zu schenken und sie zu verwenden. Es ist zu erwarten, dass Tag-Bibliotheken Ende 2001 in vielen JSP-Projekten ein weit verbreitetes Feature sein werden.
Die Vorteile von Tag-Bibliotheken werden in diesem Artikel nur kurz erläutert. Tag-Bibliotheken verfügen tatsächlich über viele weitere leistungsstarke Funktionen. Tag-Bibliotheken treiben die JSP-Entwicklung in eine beispiellose neue Welt. Dies ist in der Tat eine aufregende neue Technologie für JSP-Entwickler, da sie ein Tool erhalten, das JSPs in verschiedene Anwendungen konvertieren und jede Art von Webanwendung erstellen kann. Die Tag-Bibliothek macht JSP zur umfassendsten, dynamischsten Entwicklungsfunktion und leistungsstarken Webprogrammierumgebung. Seine Möglichkeiten werden nur durch unsere Vorstellungskraft und Kreativität begrenzt.