Page d'accueil bienvenue.jsp
Lorsque l'utilisateur saisit le mot de passe correct, switch.jsp contrôle la page JSP pour diriger la page d'accueil Welcome.jsp. Dans cette section, nous développons la page Welcome.jsp. Etant donné que Welcome.jsp doit utiliser une bibliothèque de balises tierce, vous devez effectuer certaines configurations dans JBuilder pour introduire cette bibliothèque de balises avant de développer Welcome.jsp.
Configurer des bibliothèques de balises tierces dans JBuilder
L'organisation open source Apache fournit de nombreuses bibliothèques de balises utiles. La page d'accueil Welcome.jsp doit utiliser une bibliothèque de balises datetime d'Apache. Vous pouvez utiliser cette bibliothèque de balises pour fournir différents affichages d'heure dans JSP. /2009-07/02/jakarta-taglibs-datetime-1.0.1.zip.
La bibliothèque de balises comprend généralement deux fichiers, l'un est le fichier JAR du package de classe et l'autre est le fichier de description de balise avec l'extension .tld. Après avoir décompressé le fichier compressé téléchargé, nous plaçons les fichiers taglibs-datetime.jar et taglibs-datetime.tld dans le répertoire <project directory>/datetimeTag.
Pour utiliser une bibliothèque de balises tierce dans un projet, vous devez configurer la bibliothèque de balises dans JBuilder à l'avance et la référencer dans le projet. La configuration des bibliothèques de balises est similaire à la configuration des bibliothèques de classes et s'effectue également via la boîte de dialogue Configurer les bibliothèques. La bibliothèque de classes et la bibliothèque de balises JBuilder sont répertoriées dans l'arborescence de gauche dans la boîte de dialogue Configurer les bibliothèques. La bibliothèque de classes est affichée comme suit. icône, tandis que la bibliothèque de balises apparaît comme icône. Ensuite, nous configurons la bibliothèque de balises datetime dans JBuilder.
1. Boîte de dialogue Outils->Configurer->Bibliothèques->Configurer les bibliothèques.
Cliquez sur le bouton Ajouter... dans le coin inférieur gauche de la boîte de dialogue Configurer les bibliothèques pour faire apparaître la boîte de dialogue Assistant Nouvelle bibliothèque, comme indiqué ci-dessous :
Figure 17 Boîte de dialogue Assistant Nouvelle bibliothèque |
Donnez un nom à cette bibliothèque dans Nom : datetimeTag et appuyez sur OK pour revenir à la boîte de dialogue Configurer les bibliothèques.
2. Spécifiez le fichier de bibliothèque de balises.
Après être revenu à la boîte de dialogue Configurer les bibliothèques, le nœud datetimeTag apparaît dans l'arborescence de gauche. Étant donné qu'aucun fichier de bibliothèque de classes n'a été spécifié pour lui, il s'affiche en rouge bien visible contrairement aux autres nœuds. Cliquez sur datetimeTag et changez la page de configuration des paramètres de bibliothèque. vers Framework Dans la page à onglet, comme indiqué ci-dessous :
Figure 18 Passer au Framework |
Sélectionnez l'option Bibliothèque de balises JSP définie par l'utilisateur dans la liste déroulante Cadre, cliquez sur le bouton Ajouter... en bas à droite de la page à onglet et la boîte de dialogue Définir une nouvelle bibliothèque de balises apparaîtra, comme indiqué dans la figure. ci-dessous:
Figure 19 Fichier de description spécifiant la bibliothèque de balises |
Dans la boîte de dialogue Définir une nouvelle bibliothèque de balises, cliquez sur le bouton... après le fichier TLD et accédez au fichier <répertoire du projet>/datetimeTag/taglibs-datetime.tld Après confirmation, JBuilder remplit automatiquement les paramètres restants. Il n'est pas nécessaire de modifier ces paramètres de réapprovisionnement automatique de JBuilder. Parmi eux, Prefix spécifie un préfixe de référence pour cette bibliothèque de balises. Cliquez sur le bouton OK pour revenir à la boîte de dialogue Configurer les bibliothèques. Le nœud datetimeTag s'affiche en couleur normale, comme indiqué ci-dessous :
Figure 20 L'effet après avoir configuré correctement la bibliothèque de balises |
Cliquez sur le bouton OK dans la boîte de dialogue Configurer les bibliothèques pour terminer la configuration de la bibliothèque de balises datetime.
3. Référencez cette bibliothèque de balises nouvellement configurée dans le projet actuel.
Projet-> Propriétés du projet...-> Chemins-> Basculez vers l'onglet Bibliothèques requises-> Cliquez sur le bouton Ajouter... pour sélectionner le datetimeTag dans la bibliothèque de classes JBuilder. Une fois la configuration réussie, la boîte de dialogue Propriétés du projet se présente comme suit :
Figure 21 Bibliothèque de référence du projet |
Créer une page JSP de bienvenue
1. Fichier->Nouveau…->Web->Double-cliquez sur l'icône JSP pour démarrer l'assistant de création JSP, spécifiez le nom du fichier JSP en guise de bienvenue, puis cliquez sur Suivant pour passer à l'étape suivante.
2. Référencez la bibliothèque de balises datetimeTag dans la page Welcome.jsp.
À l'étape 2 de l'assistant, vous êtes autorisé à sélectionner diverses bibliothèques de balises dans JBuilder. La bibliothèque de balises datetimeTag que nous avons configurée dans la section précédente apparaît également dans la liste des bibliothèques de balises, comme le montre la figure suivante :
Figure 22 Bibliothèque de balises de référence |
Développez la balise datetime et vérifiez taglibs-datetime, puis cliquez sur Suivant pour passer à l'étape suivante.
3. Référencez l'objet userBean placé dans le domaine de session dans switch.jsp.
Figure 23 Références au userBean placé en session dans switch.jsp |
Cliquez sur Ajouter un bean... pour sélectionner la classe bookstore.User, spécifiez le nom du bean comme ses_userBean dans la colonne ID et sélectionnez la portée de la session dans la colonne Portée. ses_userBean est le nom spécifié pour userBean dans switch.jsp. Le conteneur Web recherchera l'objet dans la session en fonction de ce nom, s'il ne le trouve pas, il créera l'objet bookstore.User car Welcome.jsp est appelé après le changement. .jsp Ainsi, à moins que la session n'ait expiré, l'objet userBean peut être trouvé.
Cliquez directement sur Terminer pour créer le fichier Welcome.jsp. Le code est le suivant :
Liste de codes 15 Page d'accueil de Welcome.jsp
1. <%@ page contentType="text/html; charset=GBK" %> 2. <%@ taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt" %> 3. <html> 4. <tête> 5. <titre> 6.bienvenue 7. </titre> 8. </tête> 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. JSP généré par JBuilder 14. </h1> 15. </corps> 16. </html> |
La bibliothèque de balises référencée à l'étape 2 de l'assistant est définie en fonction du code de déclaration de la bibliothèque de balises référencée à la ligne 2. Le Bean défini à l'étape 3 correspond aux 9ème et 10ème lignes de code. Puisqu'il n'est pas nécessaire de renseigner la valeur du Bean dans Welcome.jsp, le code de la ligne 10 doit être supprimé manuellement.
Ensuite, nous référençons la bibliothèque de balises datetime dans le fichier Welcome.jsp et l'utilisons pour générer une chaîne de format d'heure actuelle. Ouvrez le fichier Welcome.jsp et passez à la page d'affichage Source. Effacez d'abord le code généré par JBuilder dans <body></body>, entrez "<dt:" dans <body></body>, JBuilder utilisera la fonction TagInsight pour afficher tous les éléments de balise disponibles dans cette bibliothèque de balises, comme suit Comme le montre la figure :
Figure 24 Utilisation de TagInsight pour accéder à la bibliothèque de balises
TagInsight peut être utilisé pour saisir facilement les balises disponibles dans la bibliothèque de balises, ce qui accélère considérablement la saisie du code de la bibliothèque de balises et garantit l'exactitude. Dans Welcome.jsp, nous utilisons la bibliothèque de balises pour obtenir une chaîne d'heure formatée actuelle. De plus, nous obtenons également le nom de l'utilisateur via ses_userBean. Le code final de Welcome.jsp ressemble à ceci :
Le listing de codes 16 Welcome.jsp fait référence à la bibliothèque de balises et à l'objet Session.
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. <tête> 5. <titre>bienvenue</titre> 6. </tête> 7. <jsp:useBean id="ses_userBean" scope="session" class="bookstore.User"/> 8. <body bgcolor="#ffffff">Vous êtes 9. <%=ses_userBean.getUserName()%>, bienvenue pour vous connecter. <br> 10. L'heure actuelle est <dt:format pattern="MM/dd/yyyy hh:mm"><dt:currentTime/></dt:format> 11. <br>Cliquez<a href="quit.jsp">ici</a>pour quitter le système 12. </corps> 13. </html> |
De plus, JBuilder a copié le fichier de description de la bibliothèque de balises datetime taglibs-datetime.tld dans WEB-INF et a falsifié le fichier web.xml pour déclarer l'adresse de taglibs-datetime.tld :
Listing de code 17 Déclaration du fichier de description de balise dans web.xml
1. <?xml version="1.0" encodage="UTF-8"?> 2.… 3. <application Web> 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. </application web> |
Comme indiqué ci-dessus, aux lignes 4 à 7 du web.xml, JBuilder ajoute automatiquement le fichier de description de la bibliothèque de balises datetime afin que le conteneur Web puisse trouver correctement les informations requises.
Lors de la compilation du projet pour générer un répertoire Web, JBuilder copiera le fichier JAR taglibs-datetime.jar de la bibliothèque de balises datetime dans le répertoire WEB-INF/lib.
Lorsque l'utilisateur se connecte avec succès, il sera redirigé vers la page Welcome.jsp. L'effet de page est le suivant :
Figure 25 Page d'effet Welcome.jsp |
Lorsque l'utilisateur clique sur le lien "ici", il sera lié à quit.jsp. La page quit.jsp est chargée d'effacer la session, elle dissociera les objets référencés dans la session et libérera les ressources.
quit.jsp quitte la page de traitement
Étant donné que le protocole HTTP fonctionne de manière requête/réponse, lorsque le client quitte le système, il doit envoyer activement une requête au serveur Web pour avertir le serveur Web de détruire la session à temps. Sinon, le serveur Web attendra seulement. jusqu'à l'expiration de la session avant de la détruire.
Nous utilisons un quit.jsp pour gérer la sortie de l'utilisateur du système. Quit.jsp est responsable de la déconnexion de la session et de la libération des ressources en temps opportun.
·Déconnectez-vous de la session.
·Fermez la fenêtre du navigateur.
Le code est le suivant :
1. <%@ page contentType="text/html; charset=GBK" %> 2,<% 3. session.invalidate(); 4. %> 5. <langage de script="javaScript" > 6. fenêtre.opener = null ; 7. window.close(); 8. </script> |
La ligne 3 est responsable de la déconnexion de la session. Les objets initialement placés dans la session seront dissociés et attendront que le garbage collection libère les ressources. Pour cet exemple, il y a un objet userBean nommé ses_userBean dans la session (il est placé dans la session dans switch.jsp). Après avoir appelé session.invalidate(), le userBean n'est plus lié à la session et sa méthode valueUnbound() le fera. être déclenché, puis attendre le garbage collection.
Les lignes 5 à 8 sont un programme de script JavaScript chargé de fermer la fenêtre. Si la page Web n'est pas ouverte via un programme de script (window.open()), l'objet window.opener doit être défini avant d'appeler window.close(). script pour fermer la fenêtre. Est nul, comme indiqué à la ligne 6, sinon le navigateur affichera une boîte de dialogue confirmant la fermeture. L'auteur a constaté que ce problème a troublé de nombreux programmeurs Web, je l'ai donc signalé en particulier.
Expérience pratique:
Lorsque l'utilisateur quitte le système, la session doit être déconnectée, sinon l'objet de session ne sera pas effacé jusqu'à l'expiration de la session sur le serveur. Supposons que la durée d'inactivité maximale d'une session est de 30 minutes (durée par défaut). Si les objets de session ne sont pas effacés manuellement, les ressources système occupées par ces objets ne seront libérées que 30 minutes après qu'un utilisateur quitte le système. |