Contrôle de commutation JSP réel de JBuilder2005 (3)
Auteur:Eve Cole
Date de mise à jour:2009-07-02 17:10:13
Étant donné que switch.jsp est spécifié comme fichier JSP de réponse via l'attribut d'action dans le formulaire login.jsp, lorsque l'utilisateur sélectionne l'utilisateur de connexion dans login.jsp et saisit le mot de passe pour soumettre le formulaire, le client enverra une requête HTTP à le serveur et le serveur Autrement dit, appelez switch.jsp pour répondre à cette demande.
Les données des composants nom d'utilisateur et mot de passe du formulaire seront transmises au switch.jsp du serveur via une requête HTTP. Le serveur encapsulera ces informations dans l'objet de requête et les transmettra à switch.jsp, afin que switch.jsp puisse être récupéré. via request.getParameter(String paraName) Obtenez ces deux valeurs.
String userId = request.getParameter("userId"); Chaîne mot de passe = request.getParameter("mot de passe"); |
Imaginez que si le formulaire login.jsp comporte plus de 10 composants de données, sa valeur doit être obtenue via le nombre correspondant de méthodes request.getParameter() dans switch.jsp. De plus, si les données ne sont pas un type de chaîne de champ, mais un nombre entier ou à virgule flottante, puisque les valeurs renvoyées par la méthode request.getParameter() sont toutes des chaînes, une conversion de type doit être effectuée. fastidieux, mais aussi sujet aux erreurs.
JSP vous permet de recevoir des données de formulaire Web via Bean de manière cartographique. Bean mappe les données de formulaire selon cette règle : Nom d'attribut Bean = nom du composant de données de formulaire, c'est-à-dire que tous les champs de données de formulaire avec le même nom d'attribut Bean sont automatiquement remplis. le Bean. et terminez la conversion du type de données. Par exemple, il y a deux composants de données dans le formulaire login.jsp, l'un est nommé userId et l'autre est password. Définissez un Bean User.java avec le même nom d'attributs userId et password. Ce Bean recevra automatiquement les deux composants de données. dans le formulaire. Valeur du composant de données.
Écrire utilisateur.java
Écrivons d'abord le Bean User.java et créons User.java dans le projet. Le code est le suivant :
Liste de codes 7 User.java
1. librairie à forfait ; 2. 3. Utilisateur de classe publique 4. { 5. chaîne privée userId;//userId 6. mot de passe de chaîne privée ;//mot de passe 7. chaîne privée userName;//username 8. chaîne publique getPassword() { 9. renvoyer le mot de passe ; 10. } 11. chaîne publique getUserId() { 12. renvoyer l'ID utilisateur ; 13. } 14. chaîne publique getUserName() { 15. renvoie le nom d'utilisateur ; 16. } 17. public void setPassword (String mot de passe) { 18. this.password = mot de passe ; 19. } 20. public void setUserId(String userId) { 21. this.userId = userId; vingt-deux } 23. public void setUserName (String userName) { 24. this.userName = userName; 25. } 26. } |
En plus des deux noms d'attribut userId et password, il existe également un attribut de nom d'utilisateur userName. La valeur de cet attribut n'est pas reçue du formulaire login.jsp. Lorsque le nom d'utilisateur et le mot de passe sont correctement vérifiés, le nom d'utilisateur est obtenu à partir des données. table T_USER et stockés dans ces propriétés afin qu'ils puissent être référencés ailleurs, enregistrez et compilez cette classe.
indice:
Vous pouvez créer rapidement du code User.java via l'outil Bean Express de JBuilder. Dans des circonstances normales, vous devez créer des propriétés Bean via Bean Express. Cela génère non seulement automatiquement des méthodes d'accès aux propriétés get/set, mais garantit également les conventions de dénomination du Bean. |
Programme d'écriture de page
Après avoir créé le Bean de User.java, nous procédons à la création de switch.jsp et référençons ce Bean dans switch.jsp.
Démarrez l'assistant de création de JSP via Fichier->Nouveau..->Web->double-cliquez sur l'icône JSP.
1. Spécifiez le nom switch.jsp
Figure 10 Spécifiez le nom de switch.jsp |
Continuez à appuyer sur Suivant pour accéder à l'étape 3 de l'assistant.
2. Référence utilisateur.haricot Java
Figure 11 Spécifier le bean référencé dans JSP |
Cliquez sur le bouton Ajouter un bean... pour faire apparaître la boîte de dialogue Sélectionner une classe. Sélectionnez la classe bookstore.User dans la boîte de dialogue, comme illustré dans la figure suivante :
Figure 12 Sélectionnez la classe comme Bean |
Après avoir appuyé sur OK, revenez à la boîte de dialogue à l'étape 3 de l'assistant. À ce stade, il y a une ligne supplémentaire d'enregistrements dans la liste Bean de la boîte de dialogue. Vous pouvez spécifier un nom pour le Bean dans la colonne ID et le spécifier. la portée du Bean dans le Scope, comme indiqué dans la figure ci-dessous :
Figure 13 Référence à un bean |
Nous avons nommé User's Bean userBean et défini sa portée sur le domaine de la page. Le domaine de la page est la portée de la page et est disponible dans la portée de la page actuelle. Lorsque la JSP renvoie une réponse ou que la demande est transférée vers d'autres pages JSP, elle n'est plus disponible. Les trois autres portées sont décrites comme suit :
· Portée de la requête : lorsqu'une requête est générée, elle est valide dans la portée jusqu'à ce que la réponse soit renvoyée. Par exemple, un Bean déclaré comme portée de la requête dans a.jsp, lorsque a.jsp transfère la requête vers la page b.jsp. <jsp:forward> Il est toujours disponible en milieu d'année.
· Portée de la session : elle est disponible dans le cycle de la session utilisateur. Le cycle de session va du moment où l'utilisateur se connecte au système jusqu'à ce qu'il se déconnecte du système.
· Portée de l'application : cette portée est la plus longue, indiquant que le conteneur Web est valide jusqu'à son démarrage jusqu'à sa fermeture.
Appuyez sur Suivant pour passer à l'étape suivante.
3. Définir les éléments de configuration en cours d'exécution
Dans la dernière étape de l'assistant, vous pouvez générer un élément de configuration d'exécution pour le JSP créé. Bien que l'assistant définisse la création d'un élément de configuration d'exécution comme option par défaut, je pense que ce n'est pas une valeur par défaut raisonnable. créez un élément de configuration d'exécution, ne créez pas d'élément de configuration d'exécution JSP, comme illustré dans la figure suivante :
Appuyez sur le bouton Terminer pour créer le fichier switch.jsp avec le code suivant :
Liste de codes 8 switch.jsp créé par l'assistant
1. <%@ page contentType="text/html; charset=GBK" %> 2. <html> 3. <tête> 4. <titre> 5.changer 6. </titre> 7. </tête> 8. <jsp:useBean id="userBean" scope="page" class="bookstore.User" /> 9. <jsp:setProperty name="userBean" property="*" /> 10. <body bgcolor="#ffffff"> 11. <h1> 12. JSP généré par JBuilder 13. </h1> 14. </corps> 15. </html> |
La ligne 8 est la balise JSP qui fait référence au Bean. La ligne 9 remplit les valeurs d'attribut du Bean avec les données du formulaire, c'est-à-dire qu'elle remplit les paramètres de requête dans les attributs du Bean par correspondance de nom et termine la conversion de type en même temps (uniquement). types de données de base ou La conversion ne peut être effectuée que si le constructeur la prend en charge). Après avoir exécuté la ligne 9, les attributs userId et password dans userBean seront définis sur les valeurs du nom d'utilisateur et du mot de passe envoyés dans la page login.jsp.
Étant donné que switch.jsp n'est utilisé qu'à des fins de contrôle et n'a pas besoin d'afficher du contenu au client, nous supprimons le code HTML dans switch.jsp et ajustons switch.jsp pour :
Liste de codes 9 switch.jsp après avoir supprimé le code HTML statique
1. <%@ page contentType="text/html; charset=GBK" %> 2. <jsp:useBean id="userBean" scope="page" class="bookstore.User" /> 3. <jsp:setProperty name="userBean" property="*" /> |
Fournissez un scriptlet dans switch.jsp pour envoyer l'ID utilisateur et le mot de passe à la base de données et comparez-les avec les utilisateurs de la table T_USER pour voir s'il s'agit d'utilisateurs légitimes, et redirigez vers différentes pages en fonction des résultats de la vérification. Le code final de switch.jsp ressemble à ceci :
Liste de codes 10 Final switch.jsp
1. <%@page contentType="text/html; charset=GBK"%> 2. <%@page import="librairie.*"%> 3. <%@page import="java.sql.*"%> 4. <jsp:useBean id="userBean" scope="session" class="bookstore.User"/> 5. <jsp:setProperty name="userBean" property="*"/> 6,<% 7. Connexion conn = null ; 8. essayez { 9. conn = DBConnection.getConnection(); 10. PreparedStatement pStat = conn.prepareStatement( 11. "sélectionnez USER_NAME dans T_USER où USER_ID=? et mot de passe = ?" ); 12. pStat.setString(1, userBean.getUserId()); 13. pStat.setString(2, userBean.getPassword()); 14. ResultSet rs = pStat.executeQuery(); 15. if (rs.next()) { //Le mot de passe est correct 16. userBean.setUserName(rs.getString(1));//Définir le nom d'utilisateur 17. session.setAttribute("ses_userBean", userBean);//Mettez userBean dans l'objet Session 18. %><jsp:forward page=" bienvenue.jsp "></jsp:forward> 19. <%} else { //Mauvais mot de passe%> 20. <jsp:forward page="fail.jsp"></jsp:forward> 21,<% 22. }} enfin { 23. if(conn != null) conn.close(); vingt-quatre. } 25. %> |
·Introduire les classes nécessaires dans le code Scriptlet aux lignes 2 à 3.
· Les lignes 7 à 14 du code envoient des instructions SQL de requête à la base de données et renvoient les résultats.
·La ligne 15 détermine indirectement si le mot de passe de l'utilisateur est correct en vérifiant le nombre d'enregistrements dans l'ensemble de résultats.
· Les lignes 16 à 18 sont les codes de réponse pour les mots de passe utilisateur corrects. Tout d'abord, remplissez la valeur de l'attribut userName du userBean avec l'attribut USER_NAME du jeu de résultats, puis placez l'objet userBean dans la session et enfin accédez à la page Welcome.jsp.
·Lorsque l'utilisateur entre un mot de passe incorrect, il n'y aura aucun enregistrement dans le jeu de résultats. À ce moment, rs.next() renvoie false et le programme passe à la ligne 20. Le code de la ligne 20 redirige la page vers le mot de passe incorrect. page de traitement de la saisie du mot de passe fail.jsp.
·Le code des lignes 22 à 24 permet de fermer la connexion à la base de données.
Peut-être avez-vous découvert que même si les lignes 9 à 21 génèrent une exception SQLException, nous n'avons pas de bloc de capture d'exception correspondant. Dans un programme Java standard, cela provoquera une erreur de compilation, mais dans JSP, il peut être compilé séquentiellement. c'est parce que la page JSP elle-même intercepte toutes les exceptions levées dans la page.
Supposons qu'il y ait une erreur dans l'instruction de requête SQL à la ligne 11, telle que le nom de la table utilisateur est écrit par erreur comme User (correctement T_USER). Lorsque switch.jsp est appelé, une exception SQL est levée à la ligne 14 et switch. jsp affichera La page d'informations de suivi de la trace de la pile d'exceptions est la suivante :
Figure 14 La terrible page de gestion des erreurs |
La page de gestion des erreurs présentée dans l'image ci-dessus peut être décrite comme verte, féroce et très hostile. Ce type de page de rapport d'erreurs peut convenir aux développeurs car elle fournit de nombreuses informations de suivi des erreurs, mais il est impossible d'y mettre fin. les utilisateurs d'accepter ce genre de page d'erreur. Une page d'erreur grossière. JSP vous permet de spécifier une page JSP spécifiquement pour la gestion des erreurs via <%@ page errorPage%>, afin que les erreurs puissent être affichées sous une forme conviviale et intuitive. Dans la section suivante, nous créerons une page JSP pour la gestion des erreurs. Après la création, nous spécifierons la page JSP de gestion des erreurs pour switch.jsp.