Cet article analyse principalement le module utilisateur du Book Mall pour tout le monde, le contenu spécifique est le suivant
1. Création de classe connexe du module utilisateur
domaine: utilisateur
dao: userdao
Service: Userdao
web.servlet: uservlet
2. Enregistrement des utilisateurs
2.1 Processus d'enregistrement
/jsps/user/regist.jsp -> userservlet # regist () -> msg.jsp
2.2 Page d'inscription
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "utf-8"%> <% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> <! doctype html public "- // w3c // dtd html 4.01 public" - // w3c // dtd htm.01 public "- // w3c // dtd htm.01 public" - // w3c // dtd htm.01 Transitional // en "> <html> <éad- head> <itle> registre </ title> <meta http-equiv =" pragma "contenu =" non-cache "> <meta http-equiv =" cache-control "contenu =" non-cache "> <méta http-equiv =" expire "contenu =" 0 "> <méta http-equieb =" expirations "contenu =" 0 "> <méta http-equieb =" Content = "Keyword1, Keyword2, Keyword3"> <meta http-equiv = "Description" content = "Ceci est ma page"> <méta http-equiv = "contenu-type" contenu = "text / html; charset = utf-8"> <! - <link rel = "Stylesheet" type = "text / css" href = "style"> </ head> " <body> <h1> Enregistrer </h1> <% - 1. Afficher les erreurs -> Erreur de champ 2. Afficher l'erreur d'exception 3. Echo -%> <p style = "Color: Red; Font-Weight: 900"> $ {msg} </p> <form action = "<C: Url Value = '/ Userservlet' />" Method = "Post"> <entrée type = " Nom d'utilisateur: <entrée type = "text" name = "username" value = "$ {form.username}" /> <span style = "colore: red; font-weight: 900"> $ {errors.username} </span> <br/> mot de passe: <entrée type = "mot de passe" name = "mot de passe" FONT-WEIGHT: 900 "> $ {errors.password} </span> <br/> Email: <input type =" text "name =" e-mail "value =" $ {form.email} "/> <span style =" Color: Red; FONT-WEIGHT: 900 "> $ {errors.email} </span> <br/> <input type =" soumi "value =" registre "/> </ form> </ body> </html>2.3 Uservlet
Utilisateur
/ ** * Objet de domaine de l'utilisateur * / classe publique User {/ * * Table de la base de données correspondante * / Private String UID; // Clé primaire Private String Name UserName; // Username Private String MotwayService de base
classe publique BasEservlet étend HttpServlet {/ * * Il décidera quelle méthode de cette classe est appelée basée sur la méthode dans la demande * / Protected Void Service (HttpServletRequest req, HttpServletResponse Res) lance Servlexception, ioException {req.seTcharacteRending ("utf-8"); res.setContentType ("text / html; charset = utf-8"); essayez {// par exemple: http: // localhost: 8080 / demo1 / xxx? m = add string metheth = req.getParameter ("méthode"); // il s'agit d'une méthode nameclass c = this.getClass (); Méthode m = c.getMethod (méthode, httpServletRequest.class, httpservletResponse.class); Résultat de la chaîne = (String) M.Invoke (this, req, res); if (result! = null &&! result.iSempty ()) {req.getRequestDispatcher (result) .Forward (req, res); }} catch (exception e) {lancer un nouveau servlexception (e); }}}Utilisateur
/ ** * User Expression Layer * / public class Userservlet étend BasEservlet {private userService userService = new UserService (); / ** * Fonction de sortie * @param demande * @Param Response * @return * @throws servlexception * @throws ioException * / public String Quit (httpServletRequest request, httpsservletResponse réponse) lance Servlexception, ioException {request.getSession (). Invalida (); return "r: /index.jsp"; } Public String Login (HttpServLetRequest Request, HttpServletResponse Response) lève ServletException, ioException {/ * * 1. Les données du formulaire encapsulent dans le formulaire * 2. Entrez la vérification (pas d'écriture) * 3. Service d'appel pour terminer l'activation *> Commonutils.Tobean (request.getParameTermap (), user.class); essayez {user user = userService.login (form); request.getSession (). setAttribute ("Session_User", utilisateur); / * * Ajoutez un panier à l'utilisateur, c'est-à-dire enregistrer un objet de panier à la session * / request.getSession (). SetAttribute ("CART", new Cart ()); return "r: /index.jsp"; } catch (useRexception e) {request.setAttribute ("msg", e.getMessage ()); request.setAttribute ("formulaire", formulaire); return "f: /jsps/user/login.jsp"; }} / ** * Fonction d'activation * @param demande * @param réponse * @return * @throws servlexception * @throws ioException * / public String active (httpservletRequest request, httpservletResponse réponse) lance Servlexception, ioException {/ * * 1. Faire le code d'activation de la demande * 2. transférer à msg.jsp * 3. Enregistrez les informations de réussite dans le domaine de la demande et transmettez à msg.jsp * / chaîne de code = request.getParameter ("code"); essayez {userService.active (code); request.setAttribute ("msg", "Félicitations, vous l'avez activée avec succès! Veuillez vous connecter maintenant!"); } catch (useRexception e) {request.setAttribute ("msg", e.getMessage ()); } return "f: /jsps/msg.jsp"; } / ** * Fonction d'enregistrement * @param demande * @param réponse * @return * @throws servlexception * @throws ioException * / public String Regist (httpservletRequest request, httpservletResponse réponse) jette le servletException, ioException {/ * * 1. Encapsulat Data Form objet * 2. Complete: UID, code * 3. champ, avant de register.jsp * 4. Appelez la méthode de service pour terminer l'enregistrement *> Enregistrer les informations d'erreur, formulaire pour demander le champ, vers le gré pour register.jsp * 5. Envoyer un e-mail * 6. Enregistrer les informations réussies à l'avenir à msg.jsp * / // encapsulat Form Data Form = Commonutils.Tobean (request.getParameTermap (), user.class); // complet form.setuid (Commonutils.uuid ()); form.setcode (Commonutils.uuid ()) + Commonutils.uuid ()); / * * Entrez la vérification * 1. Créez une carte pour encapsuler les informations d'erreur, où la touche est le nom de champ de formulaire et la valeur est le message d'erreur * / map <string, string> errors = new HashMap <String, String> (); / * * 2. Obtenez le nom d'utilisateur, le mot de passe et l'e-mail dans le formulaire pour vérification * / String username = form.getUserName (); if (username == null || username.trim (). iSempty ()) {errors.put ("nom d'utilisateur", "le nom d'utilisateur ne peut pas être vide!"); } else if (username.length () <3 || username.length ()> 10) {errers.put ("nom d'utilisateur", "Le nom d'utilisateur doit être compris entre 3 et 10!"); } String mot de passe = form.getPassword (); if (mot de passe == null || mot de passe.trim (). IsEmpty ()) {errors.put ("mot de passe", "le mot de passe ne peut pas être vide!"); } else if (mot de passe.length () <3 || mot de passe.length ()> 10) {errors.put ("mot de passe", "le mot de passe doit être compris entre 3 ~ 10!"); } Chaîne e-mail = form.getEmail (); if (email == null || email.trim (). iSEmpty ()) {errors.put ("e-mail", "e-mail ne peut pas être vide!"); } else if (! email.matches ("// w+//w+//.//w+")) {errors.put ("email", "Errreur de format de messagerie!"); } / * * 3. Déterminez s'il existe un message d'erreur * / if (errors.size ()> 0) {// 1. Enregistrez le message d'erreur // 2. Enregistrer les données du formulaire // 3. Formere vers Regist.jsp request.setattribute ("erreurs", erreurs); request.setAttribute ("formulaire", formulaire); return "f: /jsps/user/regist.jsp"; } / * * Appelez la méthode Regist () du service * / try {userService.Regist (form); } catch (useRexception e) {/ * * 1. Enregistrer les informations d'exception * 2. Enregistrer le formulaire * 3. Transférer à régist.jsp * / request.setAttribute ("msg", e.getMessage ()); request.setAttribute ("formulaire", formulaire); return "f: /jsps/user/regist.jsp"; } / * * Envoyez un e-mail * Préparez le fichier de configuration! * / // Obtenez les propriétés de contenu du fichier de configuration props = new Properties (); props.load (this.getClass (). getClassOader () .getResourCeasStream ("email_template.properties")); String host = props.getProperty ("host"); // get server host string uname = props.getProperty ("uname"); // get username String pwd = props.getProperty ("pwd"); // obtenir un mot de passe string de = props.getProperty ("from"); // Obtenez une chaîne Sender TO = form.getEmail (); // Get Faito props.getProperty ("Subject"); // Get the Subject String Content = props.getProperty ("Content"); // Get the Mail Content Content = MessageFormat.Format (Content, form.getCode ()); // Remplacer {0} session session = MailUtils.CreateSession (hôte, uname, pwd); // Objectif Mail Mail = Mail Mail = new Mailutils.Send (session, courrier); // Envoyez un e-mail! } Catch (MessagedException e) {} / * * 1. Enregistrer les informations de réussite * 2. Transférer à msg.jsp * / request.setAttribute ("msg", "Félicitations, l'enregistrement est réussi! Veuillez l'activer dans l'adresse e-mail immédiatement"); return "f: /jsps/msg.jsp"; }}2.4 Service d'utilisateur
/ ** * User Business Layer * / public class userservice {private userdao userdao = new UserDao (); / ** * Fonction d'enregistrement * @Param Form * / public void Enregistrement (formulaire utilisateur) lève UseRexception {// Vérifier l'utilisateur d'utilisateur UserName User = userdao.findByUsername (form.geTusername ()); if (utilisateur! = null) Jetez une nouvelle Userexception ("Le nom d'utilisateur a été enregistré!"); // Vérifier un e-mail user = userdao.findByEmail (form.getEmail ()); if (utilisateur! = null) Jetez une nouvelle Userexception ("Email a été enregistré!"); // insérer l'utilisateur dans la base de données userdao.add (formulaire); } / ** * Fonction d'activation * @throws useRexception * / public void active (String code) lève USERException {/ * * 1. Utilisez le code pour interroger la base de données et obtenir l'utilisateur * / utilisateur utilisateur = userdao.findBycode (code); / * * 2. Si l'utilisateur n'existe pas, cela signifie que le code d'activation est mauvais * / if (utilisateur == null) New Userexception ("Le code d'activation est invalide!"); / * * 3. Vérifiez si le statut de l'utilisateur est inactif. S'il est activé, cela signifie qu'il s'agit d'une activation secondaire et une exception est lancée * / if (user.isstate ()) lancez une nouvelle utilisation ("vous avez été activé, ne l'activez plus à moins que vous ne vouliez mourir!"); / * * 4. Modifier l'état de l'utilisateur * / userdao.updateState (user.getUid (), true); } / ** * Fonction de connexion * @Param Form * @return * @throws useRexception * / public utilisateur Login (formulaire utilisateur) lève USERException {/ * * 1. Utilisez le nom d'utilisateur pour interroger pour obtenir l'utilisateur * 2. Si l'utilisateur est nul, une exception est lancée (le nom de l'utilisateur n'existe pas) * 3. Comparez les mots de passe de la forme et de l'utilisateur. Si différent, une exception est lancée (le mot de passe est mauvais) * 4. Vérifiez l'état de l'utilisateur. Si false, une exception est lancée (non activée) * 5. RETOUR USER * / USER USER = USERDAO.FINDBYUSERNAME (Form.GetUserName ()); if (user == null) lancez une nouvelle userexception ("le nom d'utilisateur n'existe pas!"); if (! user.getPassword (). equals (form.getPassword ())) lancez une nouvelle userexception ("Mot de passe error!"); if (! user.isstate ()) lancer une nouvelle userexception ("non activé!"); RETOUR UTILISATEUR; }}2.5 Userdao
/ ** * Layer de la persistance utilisateur * / classe publique UserDao {private queryRunner qr = new txQueryRunner (); / ** * Query by username * @param username * @return * / public utilisateur findByUsername (String username) {try {String sql = "select * from tb_user where username =?"; return qr.query (SQL, new BeanHandler <User> (user.class), nom d'utilisateur); } catch (sqlexception e) {throw new RuntimeException (e); }} / ** * requête par e-mail * @param e-mail * @return * / utilisateur public findByEmail (String Email) {try {String sql = "select * from tb_user où email =?"; return qr.Query (SQL, New BeanHandler <User> (user.class), e-mail); } catch (sqlexception e) {throw new RuntimeException (e); }} / ** * INSERT User * @param User * / public void add (utilisateur utilisateur) {try {String sql = "INSERT INTO TB_USER VALLES (?,?,?,?,?,?)"; Objet [] params = {user.getUid (), user.getUserName (), user.getPassword (), user.getEmail (), user.getcode (), user.isstate ()}; qr.update (SQL, params); } catch (sqlexception e) {throw new RuntimeException (e); }} / ** * Query by Activation Code * @param code * @return * / public utilisateur findbycode (String code) {try {String sql = "select * from tb_user où code =?"; return qr.query (sql, new BeanHandler <ser utilisateur> (user.class), code); } catch (sqlexception e) {throw new RuntimeException (e); }} / ** * Modifiez l'état spécifié de l'utilisateur spécifié * @param uid * @param état * / public void updateState (String uid, boolean state) {try {String sql = "update tb_user set state =? Where uid =?"; QR.Update (SQL, State, UID); } catch (sqlexception e) {throw new RuntimeException (e); }}}3. Activation de l'utilisateur
Processus: e-mail de l'utilisateur -> userservlet # active () -> msg.jsp
4
Connexion de l'utilisateur
Processus: /jsps/user/login.jsp -> userservlet # login () -> index.jsp
5
Sortie de l'utilisateur
Processus: top.jsp -> userservlet # quit () -> login.jsp
quit (): Détruisez la session!
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.