Willkommensseite willkommen.jsp
Wenn der Benutzer das richtige Passwort eingibt, steuert switch.jsp die JSP-Seite, um die Welcome.jsp-Willkommensseite zu leiten. In diesem Abschnitt entwickeln wir die Welcome.jsp-Seite. Da Welcome.jsp eine Tag-Bibliothek eines Drittanbieters verwenden muss, müssen Sie in JBuilder einige Konfigurationen vornehmen, um diese Tag-Bibliothek einzuführen, bevor Sie Welcome.jsp entwickeln.
Konfigurieren Sie Tag-Bibliotheken von Drittanbietern in JBuilder
Die Apache-Open-Source-Organisation stellt viele nützliche Tag-Bibliotheken zur Verfügung. Die Willkommensseite Welcome.jsp muss eine Datetime-Tag-Bibliothek von Apache verwenden. Sie können diese Tag-Bibliothek verwenden, um verschiedene Zeitanzeigen in JSP bereitzustellen /2009-07/02/jakarta-taglibs-datetime-1.0.1.zip.
Die Tag-Bibliothek umfasst im Allgemeinen zwei Dateien, eine ist die JAR-Datei des Klassenpakets und die andere ist die Tag-Beschreibungsdatei mit der Erweiterung .tld. Nach dem Dekomprimieren der heruntergeladenen komprimierten Datei platzieren wir die Dateien taglibs-datetime.jar und taglibs-datetime.tld im Verzeichnis <Projektverzeichnis>/datetimeTag.
Um eine Tag-Bibliothek eines Drittanbieters in einem Projekt zu verwenden, müssen Sie die Tag-Bibliothek im Voraus in JBuilder konfigurieren und im Projekt darauf verweisen. Das Konfigurieren von Tag-Bibliotheken ähnelt dem Konfigurieren von Klassenbibliotheken und erfolgt ebenfalls über das Dialogfeld „Bibliotheken konfigurieren“. Die JBuilder-Klassenbibliothek und die Tag-Bibliothek werden in der Baumstruktur links im Dialogfeld „Bibliotheken konfigurieren“ aufgeführt. Die Klassenbibliothek wird als angezeigt Symbol, während die Tag-Bibliothek als angezeigt wird Symbol. Als nächstes konfigurieren wir die Datetime-Tag-Bibliothek in JBuilder.
1. Dialogfeld „Extras->Konfigurieren->Bibliotheken->Bibliotheken konfigurieren“.
Klicken Sie auf die Schaltfläche „Hinzufügen...“ in der unteren linken Ecke des Dialogfelds „Bibliotheken konfigurieren“, um das Dialogfeld „Assistent für neue Bibliotheken“ zu öffnen, wie unten dargestellt:
Abbildung 17: Dialogfeld „Assistent für neue Bibliotheken“. |
Geben Sie dieser Bibliothek einen Namen in Name: datetimeTag und klicken Sie auf OK, um zum Dialogfeld „Bibliotheken konfigurieren“ zurückzukehren.
2. Geben Sie die Tag-Bibliotheksdatei an.
Nach der Rückkehr zum Dialogfeld „Bibliotheken konfigurieren“ wird der datetimeTag-Knoten in der Struktur auf der linken Seite angezeigt. Da für ihn keine Klassenbibliotheksdatei angegeben wurde, wird er im Gegensatz zu anderen Knoten auffällig rot angezeigt. Klicken Sie auf „datetimeTag“ und wechseln Sie zur Einstellungsseite „Bibliothek“. zum Framework Auf der Registerkartenseite, wie unten gezeigt:
Abbildung 18: Zum Framework wechseln |
Wählen Sie im Dropdown-Feld „Framework“ die Option „Benutzerdefinierte JSP-Tag-Bibliothek“ aus, klicken Sie unten rechts auf der Registerkartenseite auf die Schaltfläche „Hinzufügen…“ und das Dialogfeld „Neue Tag-Bibliothek definieren“ wird angezeigt, wie in der Abbildung dargestellt unten:
Abbildung 19 Beschreibungsdatei, die die Tag-Bibliothek angibt |
Klicken Sie im Dialogfeld „Neue Tag-Bibliothek definieren“ auf die Schaltfläche „...“ nach „TLD-Datei“ und navigieren Sie zur Datei „<Projektverzeichnis>/datetimeTag/taglibs-datetime.tld“. Nach der Bestätigung trägt JBuilder dort im Allgemeinen automatisch die restlichen Einstellungen ein Es ist nicht erforderlich, diese JBuilder-Einstellungen für die automatische Auffüllung zu ändern. Unter anderem gibt Prefix ein Referenzpräfix für diese Tag-Bibliothek an. Klicken Sie auf die Schaltfläche „OK“, um zum Dialogfeld „Bibliotheken konfigurieren“ zurückzukehren. Der datetimeTag-Knoten wird in normaler Farbe angezeigt, wie unten dargestellt:
Abbildung 20 Der Effekt nach korrekter Konfiguration der Tag-Bibliothek |
Klicken Sie im Dialogfeld „Bibliotheken konfigurieren“ auf die Schaltfläche „OK“, um die Konfiguration der Datetime-Tag-Bibliothek abzuschließen.
3. Referenzieren Sie diese neu konfigurierte Tag-Bibliothek im aktuellen Projekt.
Projekt->Projekteigenschaften...->Pfade->Wechseln Sie zur Registerkarte Erforderliche Bibliotheken->Klicken Sie auf die Schaltfläche Hinzufügen..., um das datetimeTag aus der JBuilder-Klassenbibliothek auszuwählen. Nach erfolgreicher Konfiguration sieht das Dialogfeld „Projekteigenschaften“ wie folgt aus:
Abbildung 21 Projektreferenzbibliothek |
Erstellen Sie eine Willkommens-JSP-Seite
1. Datei->Neu…->Web->Doppelklicken Sie auf das JSP-Symbol, um den Assistenten zum Erstellen von JSP zu starten, geben Sie den Namen der JSP-Datei als Willkommen ein und klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
2. Verweisen Sie auf die datetimeTag-Tag-Bibliothek auf der Seite „welcome.jsp“.
In Schritt 2 des Assistenten können Sie verschiedene Tag-Bibliotheken in JBuilder auswählen. Die datetimeTag-Tag-Bibliothek, die wir im vorherigen Abschnitt konfiguriert haben, erscheint auch in der Liste der Tag-Bibliotheken, wie in der folgenden Abbildung dargestellt:
Abbildung 22 Referenz-Tag-Bibliothek |
Erweitern Sie das datetime-Tag, aktivieren Sie taglibs-datetime und klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
3. Verweisen Sie auf das UserBean-Objekt, das in der Sitzungsdomäne in switch.jsp platziert ist.
Abbildung 23 Verweist auf die in der Sitzung in switch.jsp platzierte UserBean |
Klicken Sie auf „Bean hinzufügen...“, um die Klasse „bookstore.User“ auszuwählen, geben Sie in der Spalte „ID“ den Bean-Namen „ses_userBean“ an und wählen Sie in der Spalte „Bereich“ den Sitzungsbereich aus. ses_userBean ist der für userBean in switch.jsp angegebene Name. Der Webcontainer sucht in der Sitzung anhand dieses Namens. Wenn er es nicht finden kann, erstellt er das bookstore.User-Objekt, da Welcome.jsp nach switch aufgerufen wird .jsp. Sofern die Sitzung nicht abgelaufen ist, kann das UserBean-Objekt gefunden werden.
Klicken Sie direkt auf „Fertig stellen“, um die Datei „welcome.jsp“ zu erstellen. Der Code lautet wie folgt:
Codeauflistung 15 Welcome.jsp Willkommensseite
1. <%@ page contentType="text/html; charset=GBK" %> 2. <%@ taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt" %> 3. <html> 4. <Kopf> 5. <Titel> 6.Willkommen 7. </Titel> 8. </Kopf> 9. <jsp:useBean id="ses_userBean" Scope="session" class="bookstore.User" /> 10. <jsp:setProperty name="ses_userBean" property="*" /> 11. <body bgcolor="#ffffff"> 12. <h1> 13. Von JBuilder generierte JSP 14. </h1> 15. </Körper> 16. </html> |
Die in Schritt 2 des Assistenten referenzierte Tag-Bibliothek wird entsprechend dem Deklarationscode der referenzierten Tag-Bibliothek in Zeile 2 festgelegt. Das in Schritt 3 festgelegte Bean entspricht der 9. bis 10. Codezeile. Da der Bean-Wert nicht in Welcome.jsp eingegeben werden muss, sollte der Code in Zeile 10 manuell entfernt werden.
Als Nächstes verweisen wir auf die datetime-Tag-Bibliothek in der Datei „welcome.jsp“ und verwenden sie, um eine aktuelle Zeitformatzeichenfolge zu generieren. Öffnen Sie die Datei „welcome.jsp“ und wechseln Sie zur Seite „Quellenansicht“. Löschen Sie zunächst den von JBuilder generierten Code in <body></body> und geben Sie „<dt:“ in <body></body> ein. JBuilder verwendet die TagInsight-Funktion, um alle verfügbaren Tag-Elemente in dieser Tag-Bibliothek wie folgt anzuzeigen Wie in der Abbildung gezeigt:
Abbildung 24 Verwenden von TagInsight zum Aufrufen der Tag-Bibliothek
Mit TagInsight können die verfügbaren Tags einfach in die Tag-Bibliothek eingegeben werden, was die Codeeingabe der Tag-Bibliothek erheblich beschleunigt und die Korrektheit gewährleistet. In Welcome.jsp verwenden wir die Tag-Bibliothek, um eine aktuelle formatierte Zeitzeichenfolge abzurufen. Darüber hinaus erhalten wir den Namen des Benutzers über ses_userBean. Der endgültige Code von Welcome.jsp sieht folgendermaßen aus:
Codeauflistung 16 „welcome.jsp“ verweist auf die Tag-Bibliothek und das Sitzungsobjekt
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp" %> 2. <%@taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt"%> 3. <html> 4. <Kopf> 5. <Titel>Willkommen</Titel> 6. </Kopf> 7. <jsp:useBean id="ses_userBean" Scope="session" class="bookstore.User"/> 8. <body bgcolor="#ffffff">Du bist 9. <%=ses_userBean.getUserName()%>, willkommen zum Anmelden. <br> 10. Die aktuelle Zeit ist<dt:format pattern="MM/dd/yyyy hh:mm"><dt:currentTime/></dt:format> 11. <br>Klicken Sie<a href="quit.jsp">hier</a>um das System zu verlassen 12. </Körper> 13. </html> |
Darüber hinaus kopierte JBuilder die Beschreibungsdatei der Datetime-Tag-Bibliothek taglibs-datetime.tld nach WEB-INF und manipulierte die Datei web.xml, um die Adresse von taglibs-datetime.tld zu deklarieren:
Codeauflistung 17 Deklarieren der Tag-Beschreibungsdatei in web.xml
1. <?xml version="1.0"kodierung="UTF-8"?> 2.… 3. <Web-App> 4. <taglib> 5. <taglib-uri>http://jakarta.apache.org/taglibs/datetime-1.0</taglib-uri> 6. <taglib-location>/WEB-INF/taglibs-datetime.tld</taglib-location> 7. </taglib> 8. </web-app> |
Wie oben gezeigt, fügt JBuilder in den Zeilen 4 bis 7 von web.xml automatisch die Beschreibungsdatei der Datetime-Tag-Bibliothek hinzu, damit der Webcontainer die erforderlichen Informationen korrekt finden kann.
Beim Kompilieren des Projekts zum Generieren eines Webverzeichnisses kopiert JBuilder die JAR-Datei taglibs-datetime.jar der Datetime-Tag-Bibliothek in das Verzeichnis WEB-INF/lib.
Wenn sich der Benutzer erfolgreich anmeldet, wird er zur Seite „welcome.jsp“ weitergeleitet. Der Seiteneffekt ist wie folgt:
Abbildung 25: Willkommensseite mit dem Effekt „Welcome.jsp“. |
Wenn der Benutzer auf den Link „hier“ klickt, wird er mit quit.jsp verlinkt. Die Seite quit.jsp ist für das Löschen der Sitzung verantwortlich. Nach dem Löschen der Sitzung werden die in der Sitzung referenzierten Objekte gelöst und die Ressourcen freigegeben.
quit.jsp beendet die Verarbeitungsseite
Da das HTTP-Protokoll nach dem Anforderungs-/Antwortprinzip funktioniert, muss der Client beim Verlassen des Systems aktiv eine Anfrage an den Webserver senden, um den Webserver zu benachrichtigen, die Sitzung rechtzeitig zu zerstören. Andernfalls wartet der Webserver nur bis die Sitzung abläuft, bevor sie zerstört wird.
Wir verwenden eine quit.jsp, um den Ausstieg des Benutzers aus dem System abzuwickeln. quit.jsp ist dafür verantwortlich, die Sitzung abzumelden und Ressourcen rechtzeitig freizugeben.
·Melden Sie die Sitzung ab.
·Schließen Sie das Browserfenster.
Der Code lautet wie folgt:
1. <%@ page contentType="text/html; charset=GBK" %> 2,<% 3. session.invalidate(); 4. %> 5. <script language="javaScript" > 6. window.opener = null; 7. window.close(); 8. </script> |
Zeile 3 ist für die Abmeldung von der Sitzung verantwortlich. Die ursprünglich in der Sitzung platzierten Objekte werden entbunden und warten auf die Freigabe von Ressourcen durch die Garbage Collection. In diesem Beispiel gibt es in der Sitzung ein UserBean-Objekt mit dem Namen ses_userBean (es wird in switch.jsp in die Sitzung eingefügt). Nach dem Aufruf von session.invalidate() wird die Bindung des UserBean an die Sitzung aufgehoben, und die Methode valueUnbound() wird dies tun ausgelöst werden und dann auf die Garbage Collection warten.
Die Zeilen 5 bis 8 sind ein JavaScript-Skriptprogramm, das für das Schließen des Fensters verantwortlich ist. Wenn die Webseite nicht über ein Skriptprogramm (window.open()) geöffnet wird, muss das window.opener-Objekt vor dem Aufruf von window.close() festgelegt werden. Skript zum Schließen des Fensters ist null, wie in Zeile 6 gezeigt, andernfalls öffnet der Browser ein Dialogfeld, in dem das Schließen bestätigt wird. Der Autor hat festgestellt, dass dieses Problem viele Webprogrammierer beunruhigt hat, daher habe ich ausdrücklich darauf hingewiesen.
Praxiserfahrung:
Wenn der Benutzer das System verlässt, muss die Sitzung abgemeldet werden. Andernfalls wird das Sitzungsobjekt erst gelöscht, wenn die Sitzung auf dem Server abläuft. Gehen Sie davon aus, dass die maximale Inaktivitätszeit einer Sitzung 30 Minuten beträgt (Standardzeit). Wenn die Sitzungsobjekte nicht manuell gelöscht werden, werden die von diesen Objekten belegten Systemressourcen erst 30 Minuten nach Verlassen des Systems freigegeben. |