Este artigo analisa principalmente o módulo de usuário do shopping do livro para todos, o conteúdo específico é o seguinte
1. Criação de classe relacionada do módulo de usuário
Domínio: Usuário
DAO: Userdao
Serviço: Userdao
Web.Servlet: UserServlet
2. Registro do usuário
2.1 Processo de registro
/jsps/user/regist.jsp -> UserServlet#regist () -> msg.jsp
2.2 Página de registro
<%@ Page Language = "java" import = "java.util. Transitória // pt "> <html> <head> <title> registre </title> <meta http-equiv =" Pragma "content =" no-cache "> <meta http-equiv =" cache-controle "content =" no-cache "> <meta http-equiv =" expires "content =" 0 " Content = "Palavra-chave1, palavra-chave2, palavra-chave3"> <meta http-equiv = "description" content = "esta é minha página"> <meta http-equiv = "content-type" content = "text/html; <Body> <h1> Registro </h1> <%-1. Mostrar erros-> Erro de campo 2. Exibir erro de exceção 3. ECHO-%> <p style = "cor: vermelho; font-weight: 900"> $ {msg} </p> <form ação = "<c: ur Value = '/Uservlet'/>" Método "" Nome de usuário: <input type = "text" name = "nome de usuário" value = "$ {form.username}"/> <span style = "cor: vermelho; font-weight: 900"> $ {errors.username} </span> <br/> senha: <input type = "" name = "" "value =" {form. Fonte-peso: 900 "> $ {errors.password} </span> <br/> email: <input type =" text "name =" email "value =" $ {form.email} "/> <span style =" cor: vermelho; Fonte-peso: 900 "> $ {errors.email} </span> <br/> <input type =" submit "value =" register "/> </form> </body> </html>2.3 Usuários Servlet
Usuário
/**
BaseServlet
classe pública BaseServlet estende HttpServlet { / * * Ele decidirá qual método desta classe é chamado com base no método na solicitação * / serviço de vazio protegido (httpServletRequest req, httpServletResponse) lança "utleTexception, ioxception {req.setcharacterCoding" UtleTexception, IoException {req.setcharacTerCoding " Res.setContentType ("Texto/html; charset = utf-8"); tente {// por exemplo: http: // localhost: 8080/Demo1/xxx? M = Adicione Método String = req.getParameter ("Método"); // é um método nameClass C = this.getclass (); Método m = c.getMethod (método, httpServletRequest.class, httpServletResponse.class); String resultado = (String) M.Invoke (this, req, res); if (resultado! = null &&! result.isempty ()) {req.getRequestDispatcher (resultado) .forward (req, res); }} catch (Exceção e) {lança nova servletexception (e); }}}UserServlet
/*** Camada de expressão do usuário*/public class UserServlet estende o base de base {private UserService UserService = new Userservice (); / ** * Função de saída * @param request * @param Resposta * @return * @throws servletexception * @throws ioexception */ public string Quit (httpServletReQuest Solicy, httpServletResponse resposta) lança servletexception, ioexception {request.getSession (). retornar "r: /index.jsp"; } public string login (httpServletRequest Solicy, httpServletResponse resposta) lança servletexception, ioexception { / * * 1. Commonutils.Tobean (request.getParameterMap (), user.class); tente {user user = userservice.login (form); request.getSession (). SetAttribute ("session_user", usuário); /** Adicione um carrinho de compras ao usuário, ou seja, salve um objeto de carrinho na sessão*/ request.getSession (). SetAttribute ("carrinho", novo carrinho ()); retornar "r: /index.jsp"; } catch (userexception e) {request.setAttribute ("msg", e.getMessage ()); request.setAttribute ("formulário", forma); retornar "f: /jsps/user/login.jsp"; }} /** * Função de ativação * @param request * @param resposta * @return * @throws servletexception * @throws ioexception * /public string ativo (httpServletReQuest solicitação, httpServLeTLeTSponse Response o sigel * sfortleTleTexception, a chamada. domínio e encaminhar para msg.jsp * 3. Salve as informações de sucesso no domínio da solicitação e encaminhe para msg.jsp */ string code = request.getParameter ("código"); tente {userservice.active (code); request.setAttribute ("msg", "Parabéns, você o ativou com sucesso! Por favor, faça o login agora!"); } catch (userexception e) {request.setAttribute ("msg", e.getMessage ()); } retornar "f: /jsps/msg.jsp"; } /** * Função de registro * @param request * @param Resposta * @return * @throws servletexception * @throws ioexception * /public string regist (httpServletReQuest solicitação, httpServLetResponse Response) lança o servLeTException, ioException. formulário para solicitar o campo, encaminhar para registrar.jsp * 4. Ligue para o método de serviço para concluir o registro *> Salvar informações de erro, formulário para solicitar o campo, encaminhe para registro.jsp * 5. Envie email * 6. Salve informações bem -sucedidas para msg.jsp * // encapsular formulário de dados de dados = Commonutils.ToBean (request.GetParameTermAp (), usuário.cliSl); // completo form.setUid (Commonutils.uuid ()); form.setCode (CommonUtils.uuid ()) + CommonUtils.uuid ()); /** Digite a verificação* 1. Crie um mapa para encapsular informações de erro, onde a chave é o nome do campo do formulário e o valor é a mensagem de erro*/ map <string, string> erros = new hashmap <string, string> (); /** 2. Obtenha o nome de usuário, a senha e o email no formulário para verificação*/ string userName = form.getUserName (); if (nome de usuário == null || nome de usuário.trim (). isEmpty ()) {erros.put ("nome de usuário", "o nome de usuário não pode estar vazio!"); } else if (username.length () <3 || userr name.length ()> 10) {errors.put ("nome de usuário", "o nome de usuário deve estar entre 3 e 10!"); } String senha = form.getpassword (); if (senha == null || senha.trim (). isEmpty ()) {erros.put ("senha", "a senha não pode estar vazia!"); } else if (senha.length () <3 || senha.length ()> 10) {erros.put ("senha", "a senha deve estar entre 3 ~ 10!"); } String email = form.getEmail (); if (email == null || email.trim (). isEmpty ()) {erros.put ("email", "email não pode estar vazio!"); } else if (! Email.matches ("// w+@//w+//.//w+")) {errors.put ("email", "Email Format Error!"); }/** 3. Determine se existe uma mensagem de erro*/ if (errors.size ()> 0) {// 1. Salve a mensagem de erro // 2. Salvar dados do formulário // 3. Avançar para regist.jsp request.setAttribute ("erros", erros); request.setAttribute ("formulário", forma); retornar "f: /jsps/user/regist.jsp"; } / * * Ligue para o método regist () do serviço * / try {userService.regist (form); } catch (userexception e) { / * * 1. Salvar informações de exceção * 2. Salvar formulário * 3. Avançar para regist.jsp * / request.setAttribute ("msg", e.getMessage ()); request.setAttribute ("formulário", forma); retornar "f: /jsps/user/regist.jsp"; } /** Envie um email* Prepare o arquivo de configuração! */ // obtenha o arquivo de configuração Propriedades do conteúdo Props = new Properties (); props.load (this.getClass (). getClassLoader () .getResourceasStream ("email_template.properties")); String host = props.getProperty ("host"); // obtenha o servidor host string uname = props.getProperty ("uname"); // obtém nome de usuário string pwd = props.getProperty ("pwd"); // obtenha senha string de = props.getProperty (de "); // string strin para = form.get.get.get.get.get de = props.getProperty ("sujeito"); // Obtenha o assunto String Content = Props.GetProperty ("Content"); // Obtenha o conteúdo de email Content = messageFormat.Format (content, form.getCode (); // substituir {0} sessão de sessão = MailUtils.CreateSession (uname, pwd); // get Mailutils.send (sessão, e -mail); // Envie um email! } Catch (MessagingException e) {} / * * 1. Salvar informações de sucesso * 2. Avançar para msg.jsp * / request.setAttribute ("msg", "Parabéns, o registro é bem -sucedido! Ative -o no endereço de e -mail imediatamente"); retornar "f: /jsps/msg.jsp"; }}2.4 UserService
/*** camada de negócios do usuário*/public class UserService {private userdao userdao = new userdao (); / *** Função de registro* @param formulário*/ public void Registration (formulário do usuário) lança userexception {// Verifique o nome de usuário usuário usuário = userdao.findbyuserName (form.getUserName ()); if (usuário! = nulo) lança nova userexception ("o nome do usuário foi registrado!"); // Verifique o e -mail usuário = userdao.findbymail (form.getEmail ()); se (usuário! = nulo) lança nova userexception ("email foi registrado!"); // Insira o usuário no banco de dados userdao.add (form); } / ** * Função de ativação * @Throws userexception * / public void Active (código da string) lança userexception { / * * 1. Use o código para consultar o banco de dados e obter usuário * / usuário do usuário = userdao.findbyCode (código); /** 2. Se o usuário não existir, significa que o código de ativação está errado*/ se (user == null) lança nova userexception ("o código de ativação é inválido!"); / * * 3. Verifique se o status do usuário está inativo. Se for ativado, significa que é uma ativação secundária e uma exceção é lançada*/ if (user.isstate ()) lançar uma nova userexception ("Você foi ativado, não o ative novamente, a menos que queira morrer!"); /** 4. Modifique o status do usuário*/ userdao.updatestate (user.getuid (), true); } /** * Função de login * @param formulário * @return * @throws userexception * /public user login (formulário do usuário) lança userexception { / * * 1. Use o nome de usuário para consultar para obter o usuário * 2. Se o usuário for nulo, uma exceção é lançada (o nome do usuário não existe) * 3. Se diferente, uma exceção é lançada (a senha está errada) * 4. Verifique o status do usuário. Se false, uma exceção é lançada (ainda não ativada) * 5. Return User */ Usuário do usuário = userdao.findbyuserName (form.getUserName ()); se (usuário == null) lança nova userexception ("o nome do usuário não existe!"); if (! user.getpassword (). igual (form.getpassword ())) lança nova userexception ("erro de senha!"); if (! user.isState ()) lançar uma nova userexception ("ainda não ativado!"); devolver usuário; }}2.5 Userdao
/*** Camada de persistência do usuário*/public class Userdao {private QueryRunner QR = new TxQueryRunner (); / ** * Query por nome de usuário * @param nome de usuário * @return */ public user findbyuserName (string userr name) {try {string sql = "select * de tb_user onde o nome de usuário =?"; Retornar Qr.Query (SQL, New BeanHandler <User> (user.class), nome de usuário); } catch (sqLexception e) {lança a nova run timeException (e); }} / ** * consulta por e -mail * @param email * @return * / public user findbymail (string email) {try {string sql = "selecione * de tb_user onde email =?"; Retornar Qr.Query (SQL, New BeanHandler <USUSE> (User.class), email); } catch (sqLexception e) {lança a nova run timeException (e); }} / ** * Insira o usuário * @param usuário * / public void add (usuário do usuário) {tente {string sql = "inserir nos valores tb_user (?,?,?,?,?,?)"; Object [] params = {user.getuid (), user.getUserName (), user.getpassword (), user.getEmail (), user.getCode (), user.isState ()}; qr.Update (SQL, params); } catch (sqLexception e) {lança a nova run timeException (e); }} / ** * consulta por código de ativação * @param código * @return * / public user findbyCode (string code) {try {string sql = "selecione * do tb_user onde code =?"; Retornar Qr.Query (SQL, New BeanHandler <User> (user.class), código); } catch (sqLexception e) {lança a nova run timeException (e); }} / ** * Modifique o estado especificado do usuário especificado * @param uid * @param state * / public void updateState (string uid, estado booleano) {try {string sql = "Atualize tb_user set state =? Where uid =?"; qr.update (SQL, estado, UID); } catch (sqLexception e) {lança a nova run timeException (e); }}}3. Ativação do usuário
Processo: Email do usuário -> UserServlet#Active () -> msg.jsp
4.
Login de usuário
Process: /jsps/user/login.jsp -> UserServlet#login () -> index.jsp
5.
Saída do usuário
Processo: top.jsp -> UserServlet#Quit () -> login.jsp
Quit (): Destrua a sessão!
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.