Este artículo analiza principalmente el módulo de usuario del Libro Mall para todos, el contenido específico es el siguiente
1. Creación de clase relacionada del módulo de usuario
Dominio: usuario
Dao: userdao
Servicio: userdao
Web.Servlet: UserServlet
2. Registro de usuarios
2.1 Proceso de registro
/jsps/user/regist.jsp -> Userservlet#regist () -> msg.jsp
2.2 Página de registro
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> < Transitional // en "> <html> <head> <title> registrar </title> <meta http-equiv =" pragma "content =" no-cache "> <meta http-equiv =" cache-control "content =" no-cache "> <meta http-equiv =" expirada "contenido =" 0 "> <meta http-equiv wwells" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1> registrar </h1> <%-1. Mostrar errores-> Error de campo 2. Mostrar Error de excepción de excepción 3. echo-%> <p style = "color: rojo; font-weight: 900"> $ {msg} </p> <form action = "<c: url value = '/userservlet'/>" Method = "Post"> <<put type input type = "Hidden" name "name" name "name" "Hidden" name " value = "regist"/> username: <input type = "text" name = "username" value = "$ {form.username}"/> <span style = "color: rojo; font-weight: 900"> $ {errores.username} </span> <br/> contraseña: <input type = "contraseña" name = "contraseña" Valor = "$ {Form.password}}/"/"/" Color de contraseña: "Color de entrada". FONT-WEight: 900 "> $ {errores.password} </span> <br/> Correo electrónico: <input type =" text "name =" correo electrónico "value =" $ {form.email} "/> <span style =" color: rojo; Font-Weight: 900 "> $ {errores.email} </span> <br/> <input type =" envíe "value =" registro "/> </form> </body> </html>2.3 UserServlet
Usuario
/*** Objeto de dominio del usuario*/Public Class User {/** Tabla de base de datos correspondiente*/String privada uid; // Key primaria String private String UserName; // UserName Private String Password; // Password String String Correo electrónico;//Correo electrónico Código de cadena privada; // Código de activación Estado booleano privado; // Estado (activado e inactivado)Servicio basado
Public Class BaseServlet extiende httpservlet { / * * decidirá qué método de esta clase se llama en base al método en el servicio de solicitud * / protegido (httpservletRequest req, httpServletResponse res) lanza ServletException, IOException {req.setcharacteriCoding ("utf-8");); res.setContentType ("Text/Html; Charset = UTF-8"); Pruebe {// por ejemplo: http: // localhost: 8080/delo1/xxx? M = agregar string método = req.getParameter ("método"); // es un método nameClass c = this.getClass (); Método M = C.getMethod (método, httpservletrequest.class, httpservletResponse.class); String result = (string) m.invoke (this, req, res); if (resultado! = NULL &&! Result.IsEmpty ()) {req.getRequestDIsPatcher (resultado) .Forward (req, res); }} Catch (Exception e) {Throw New ServLetException (e); }}}UserServlet
/*** Lapa de expresión de usuario*/public class UserServlet extiende BaseServlet {private UserService UserService = new Userservice (); / ** * Función de salida * @param Solicitud * @param Respuesta * @return * @throws servletException * @throws ioexception */ public string quit (httpservletRequest solicitud, respuesta httpServletResponse) lanza ServletException, ioexception {request.getSession (). Invalidate (); return "r: /index.jsp"; } public String String Login (httpservletRequest solicitud, httpservletResponse respuesta) lanza ServLetException, ioException { / * * 1. Datos de formulario de encapsulación en el formulario * 2. Ingrese la verificación (sin escribir) * 3. Llame al servicio para completar la activación *> Guardar información de error, formulario para solicitar, reenviar a login.jsp * 4. Guardar información del usuario en la sesión y luego redirectar a la activación. CommonUtils.tobean (request.getParametermap (), user.class); Pruebe {usuario user = userservice.login (formulario); request.getSession (). setAttribute ("session_user", usuario); /** Agregue un carrito de compras al usuario, es decir, guarde un objeto CART a la sesión*/ request.getSession (). SetAttribute ("Cart", New Cart ()); return "r: /index.jsp"; } Catch (UserException e) {request.SetAttribute ("msg", e.getMessage ()); request.setAttribute ("formulario", formulario); return "f: /jsps/user/login.jsp"; }} /** * Función de activación * @param Solicitud * @param Respuesta * @return * @throws ServletException * @throws ioException * /public String Active (httpservletRequest Solicitud, httpServletResponse Respuesta). Lanza ServletException, IOException { / * * 1. Obtener el parámetro de activación * 2. Llame al Método de Servicio a Complete la Activación * ACTIVACIÓN * A SERVICIO A SERVICIO AL INFORMACIÓN ALIMENTACIÓN A LA ACTUDA A LA ACTUALIENCIA A LA ACTUDA A LA SOVIEN reenviar a msg.jsp * 3. Guarde la información de éxito en el dominio de solicitud y reenvíe a msg.jsp */ string code = request.getParameter ("código"); intente {UserSerVice.Active (código); Solic.SetAttribute ("Msg", "¡Felicitaciones, lo has activado con éxito! ¡Por favor, inicie sesión ahora!"); } Catch (UserException e) {request.SetAttribute ("msg", e.getMessage ()); } return "f: /jsps/msg.jsp"; } /** * Función de registro * @param Solicitud * @param Respuesta * @return * @throws servletException * @throws ioexception * /public string regist (httpservletRequest solicitud, httpServletResponse Respuesta) lanza ServletException, ioexception { / * * 1. Encapsular Data de formulario en el formulario Objeto * 2. Complete: UID, CODE * 3. campo, reenviar a registrar.jsp * 4. Llame al método de servicio para completar el registro *> Guardar información de error, formulario para solicitar el campo, reenviar a registrar.jsp * 5. Envíe el correo electrónico * 6. Guarde la información exitosa hacia adelante a msg.jsp */ // encapsule formulario de datos de datos = comunesutils.tobean (request.getParametermap (), user.class); // Complete form.setuid (comunesUtils.uuid ()); form.setCode (comunesUtils.uuid ()) + CommonUtils.uuid ()); /** Ingrese la verificación* 1. Cree un mapa para encapsular la información de error, donde la clave es el nombre del campo de formulario y el valor es el mensaje de error*/ map <string, string> errores = new Hashmap <String, String> (); /** 2. Obtenga el nombre de usuario, la contraseña y el correo electrónico en el formulario para la verificación*/ string username = form.getusername (); if (username == null || username.trim (). isEmpty ()) {errores.put ("nombre de usuario", "¡el nombre de usuario no puede estar vacío!"); } else if (username.length () <3 || username.length ()> 10) {errores.put ("nombre de usuario", "El nombre de usuario debe estar entre 3 y 10!"); } Cadena contraseña = form.getPassword (); if (contraseña == null || contraseña.trim (). isEmpty ()) {errors.put ("contraseña", "¿No se puede vaciar!"); } else if (contraseña.length () <3 || contraseña.length ()> 10) {errores.put ("contraseña", "La contraseña debe estar entre 3 ~ 10!"); } String Correo electrónico = form.getEmail (); if (correo electrónico == null || email.trim (). isEmpty ()) {errores.put ("correo electrónico", "¡El correo electrónico no puede estar vacío!"); } else if (! email.matches ("// w+@//w+//.//w+")) {errores.put ("correo electrónico", "¡error de formato de correo electrónico!"); }/** 3. Determine si hay un mensaje de error*/ if (errores.size ()> 0) {// 1. Guarde el mensaje de error // 2. Guarde los datos de formulario // 3. Reenviar a Regist.jsp request.setAttribute ("errores", errores); request.setAttribute ("formulario", formulario); return "f: /jsps/user/regist.jsp"; } / * * Llame al método Regist () del servicio * / try {UserService.Regist (Form); } Catch (UserException e) { / * * 1. Guardar información de excepción * 2. Guardar Forma * 3. Reenviar a Regist.jsp * / request.setAttribute ("msg", e.getMessage ()); request.setAttribute ("formulario", formulario); return "f: /jsps/user/regist.jsp"; } /** Envía un correo electrónico* ¡Prepare el archivo de configuración! */ // Obtener las propiedades de contenido del archivo de configuración props = new Properties (); PropS.Load (this.getClass (). GetClassLoader () .getResourceASStream ("ELECT_Template.Properties")); String host = props.getProperty ("host"); // get Server Host String uname = props.getProperty ("uname"); // get username string pwd = props.getproperty ("pwd"); // get string de contraseña de = props.getproperty ("de"); // sender string to = form.getEmail (); // get recibe string string stit props.getProperty ("sujeto"); // Obtenga la cadena de sujetos Content = props.getProperty ("content"); // Obtener el contenido de correo Content = MessageFormat.Format (content, form.getCode ()); // reemplazar {0} session session = mailUtils.createsession (host, host, host, pwd); // get session mail = new mail (new, to, seno, seno, seno, seno); MailUtils.send (sesión, correo); // ¡Envía un correo electrónico! } catch (MessionGingException e) {} / * * 1. Guardar información de éxito * 2. Reenvíe a msg.jsp * / request.setAttribute ("msg", "Felicitaciones, el registro es exitoso! Por favor, active en la dirección de correo electrónico inmediatamente"); return "f: /jsps/msg.jsp"; }}2.4 servicio de usuarios
/*** User Business Layer*/public class UserService {private userDao userDao = new UserDao (); / *** Función de registro* @param formy*/ public void Registration (formulario de usuario) lanza UserException {// Verify UserName user = userDao.findByUsername (form.getUsername ()); if (user! = null) tire nueva userexception ("¡El nombre de usuario ha sido registrado!"); // verificar el usuario de correo electrónico = userdao.findbyEmail (form.getEmail ()); if (user! = null) tire nueva userexception ("¡Se ha registrado el correo electrónico!"); // insertar al usuario en la base de datos userdao.add (formulario); } / ** * Función de activación * @throws UserException * / public void activo (código de cadena) lanza UserException { / * * 1. Use el código para consultar la base de datos y obtener user * / user user = userdao.findbycode (código); /** 2. Si el usuario no existe, significa que el código de activación es incorrecto*/ if (user == null) tire nueva userException ("¡El código de activación no es válido!"); / * * 3. Verifique si el estado del usuario está inactivo. Si se activa, significa que es una activación secundaria y se lanza una excepción*/ if (user.IsState ()) tira nueva userexception ("Has sido activado, ¡no la actives nuevamente a menos que quieras morir!"); /** 4. Modifique el estado del usuario*/ userdao.UpDateState (user.getuid (), true); } /** * Función de inicio de sesión * @param formy * @return * @throws userexception * /public user inicio de sesión (formulario de usuario) lanza UserException { / * * 1. Use el nombre de usuario para consultar para obtener el usuario * 2. Si el usuario es nulo, se lanza una excepción (el nombre de usuario no existe) * 3. Compare las contraseñas de forma y el usuario. Si es diferente, se lanza una excepción (la contraseña es incorrecta) * 4. Verifique el estado del usuario. Si False, se lanza una excepción (aún no se activa) * 5. Return User */ User User = userdao.findbyusername (form.getusername ()); if (user == null) tire nueva userexception ("¡El nombre de usuario no existe!"); if (! user.getPassword (). Equals (Form.getPassword ())) tire nueva userException ("¡Error de contraseña!"); if (! user.isState ()) tire nueva userexception ("¡No activado todavía!"); devolver el usuario; }}2.5 userdao
/*** Capa de persistencia del usuario*/Public Class UserDao {Private QueryRunner qr = new TxQueryRunner (); / ** * consulta por nombre de usuario * @param username * @return */ public user findByUsername (string username) {try {string sql = "Seleccione * de tb_user donde username =?"; return Qr.query (SQL, New BeanHandler <Ser User> (user.class), nombre de usuario); } catch (sqlexception e) {lanzar nueva runtimeException (e); }} / ** * Consulta por correo electrónico * @param Correo electrónico * @return * / public User findByEmail (String Correo electrónico) {try {String sql = "Seleccionar * de tb_user donde correo electrónico =?"; return Qr.Query (SQL, New BeanHandler <Ser User> (user.class), correo electrónico); } catch (sqlexception e) {lanzar nueva runtimeException (e); }} / ** * Insertar usuario * @param user * / public void add (usuario de usuario) {try {string sql = "inserte en valores tb_user (?,?,?,?,?,?)"; Objeto [] params = {user.getuid (), user.getUsername (), user.getPassword (), user.getEmail (), user.getCode (), user.isstate ()}; Qr.Update (SQL, Params); } catch (sqlexception e) {lanzar nueva runtimeException (e); }} / ** * consulta por código de activación * @param código * @return * / public user findByCode (código de cadena) {try {string sql = "select * de tb_user donde código =?"; return Qr.query (SQL, New BeanHandler <Ser User> (user.class), código); } catch (sqlexception e) {lanzar nueva runtimeException (e); }} / ** * Modifique el estado especificado del usuario especificado * @param uid * @param state * / public void updateState (string uid, state boolean) {try {string sql = "update tb_user set state =? Where uid =?"; QR.Update (SQL, estado, uid); } catch (sqlexception e) {lanzar nueva runtimeException (e); }}}3. Activación del usuario
Proceso: correo electrónico del usuario -> Userservlet#activo () -> msg.jsp
4.
Inicio de sesión de usuario
Proceso: /jsps/user/login.jsp -> Userservlet#login () -> index.jsp
5.
Salir de usuario
Proceso: top.jsp -> Userservlet#quit () -> login.jsp
Quit (): ¡Destruye la sesión!
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.