Zuvor haben wir erwähnt, dass JSP-Programme Module sind und über leistungsstarke Präsentationsanforderungsfunktionen verfügen. Das Einrichten eines perfekten Datenbankzugriffs ist ein anspruchsvoller Prozess, und die JDBC-Schnittstelle kann diesen Prozess gut abschließen. In JSP-Code eingebetteter JDBC-Code kann jedoch ebenso wie in JDBC eingebettete SQL-Befehle die Funktionen von JSP voll ausnutzen, um eine saubere und einfache API für Clients zu erstellen. Um diesen Zweck zu erreichen, können wir erwägen, JSP-Operationen zum Einrichten von Datenbankschnittstellenkomponenten zu verwenden.
Das perfekte JSP-Entwurfsmuster ist Model-View-Controller (MVC). Das traditionelle dreistufige System ist: „Model“ dient der Programmlogik und Daten; „View“ dient der Anzeige; „Controller“ dient der Anforderungsverarbeitung. Nach diesem Modell enthält ein JSP-Programm Seiten für jede „Zeile“ eines Client-Server-„Dialogfelds“. In einem typischen Programm sehen Sie möglicherweise eine Abfrageseite, eine Validierungsseite, eine Datenbankeinfügeseite, eine Datenbankaktualisierungsseite usw.
Im vorherigen Artikel haben wir besprochen, wie man JDBC in jede Seite einbettet, um sicherzustellen, dass die Struktur des Programms vernünftiger ist. Allerdings kann die Erstellung ausführbarer SQL-Befehle sowie der über JDBC-Befehle übergebenen Variablen auch die Komplexität des Programms erhöhen.
Von JDBC entwickelte JSP-Operationen
Ein weiterer Ansatz für JSP-Datenbankoperationen besteht darin, eine Sammlung von Operationen für die Datenbank zu erstellen, ohne JDBC zu verwenden. Mit diesem Ansatz können Sie zwei Vorteile erzielen: Erstens können Sie die Verwendung von JDBC überflüssig machen, was eine Menge Arbeit vereinfacht. Zweitens sind Ihr Design und Ihre Codeorganisation sinnvoller (z. B. Lesbarkeit, Flexibilität, Leistung und Wartbarkeit).
Sie benötigen noch einige Treiber, vereinfachen aber zunächst das oben Gesagte. Die Operationen in einem JSP-Programm sind logische Blöcke, die normalerweise von anderen JSP-Programmentwicklern geschrieben und verwendet werden, Sie können sie jedoch als Unterroutinen verwenden. Die Bedeutung der Verwendung von JSP-Operationen besteht darin, bestimmte Funktionen zu standardisieren und die Menge des in JSP eingebetteten Java-Codes zu minimieren.
JSP stellt eine Reihe von Standarderweiterungsklassen bereit. Über diese Klassen können Sie eine Operation über einen Tag-Handler definieren. Es gibt zwei von JSP definierte Java-Schnittstellen: Tag-Schnittstelle und BodyTag-Schnittstelle, die von der TagSupport-Klasse bzw. der BodyTagSupport-Klasse ausgeführt werden.
Sie können eine Tag-Bibliothek für allgemeine JSP-Zwecke erstellen und außerdem Tag-Handler implementieren, um die Klassenunterstützung zu erweitern. Hier sind die Schritte zur Implementierung dieser Prozesse.
Führen Sie zunächst eine Tag-Manager-Klasse aus:
packagecom.myactions;
(Importanweisungen finden Sie hier)
Die öffentliche Klasse MyActionTag erweitert TagSupport {
...
}
Als nächstes kompilieren Sie diesen Code und platzieren die Klassendatei in der Klassenbibliothek des Programms. Anschließend benötigen Sie eine TLD-Datei (Tag Library Descriptor), eine XML-Datei, die Ihrem Aktionsnamen und der Klasse des entsprechenden Tag-Managers entspricht.
<Tag>
<name>MeineAktion</name>
<tagclass>com.myactions.MyActionTag</tagclass>
<bodycontent> (was auch immer) </bodycontent>
<attribute>myData</attribute>
</tag>
</tag>
Verwandte Trialware
Angenommen, Sie haben eine Aktion namens MyAction erstellt, bei der es sich um eine TLD handelt, die mit der Klasse com.myactions.MyActionTag übereinstimmt. Die TLD-Datei muss sich im TLDs-Pfad des Programms befinden.
Wenn Sie eine Operation von einer JSP-Seite aus aufrufen, teilt der TLD der JSP mit, welche Klasse die Operation verwenden soll. Dies bietet großen Komfort und erfordert nur wenig Code.
Aber wo soll SQL eingeführt werden? Zunächst müssen Sie einen Datenbankzugriff mit Verbindungsfunktionen einrichten. Sie können dies über die Javax-Schnittstelle tun, die in der optionalen JDBC 2.0-Toolbox verfügbar ist. Die Klasse javax.sql.DataSource von JDBC 2.0 stellt die Verbindung bereit, die Sie benötigen.
Wo befindet sich SQL derzeit? Es ist in der Bohne. Sie können JDBCcreateStatement und PreparedStatement verwenden, um eine Methode in einer Bean zu erstellen. Machen Sie diese Methode zu einem öffentlichen Vektor und übergeben Sie Ihre SQL-Anweisungen korrekt an diese Methode.
Zusammenfassung Ihre Datenbank-Bean führt eine in den Aktionstext eingebettete SQL-Anweisung aus. Sie können eine Anweisung an die SQL-Anweisung übergeben oder sie zum Ausführen einer Voroperation verwenden. Sie können Ihre Aktionen über den Tag-Manager durchführen. Da JDBC in den Bibliothekscode eingebettet ist, können Sie es nicht explizit in einem JSP-Programm verwenden.
Auf den ersten Blick mag dieser Ansatz komplexer erscheinen als eingebettetes SQL in JDBC und eingebettetes JDBC in JSP, aber da Sie SQL-Operationen erstellen und in einem TLD speichern, müssen Sie sie nur einmal in allen JSP-Programmen ausführen, auf die Sie zugreifen können diese Operationen. Das ist der Vorteil dieses Ansatzes.
Das nächste Mal werden wir über die Datenübertragung zwischen JSP-Seiten und -Sitzungen sprechen.