A função do código de verificação: geralmente, ao fazer login ou registrar um sistema, os usuários deverão inserir o código de verificação para distinguir o comportamento do usuário do comportamento do programa de computador. O objetivo é impedir o registro malicioso, rachaduras de senha da força bruta, etc.
Idéias para implementar códigos de verificação: use o servidor para cumprir a função de gerar números e letras aleatoriamente para formar imagens, use a página JSP para realizar a função de exibir códigos de verificação e códigos de verificação de entrada do usuário e, em seguida, use a classe do servidor para obter a entrada de dados pela figura e pelo usuário para determinar se os dois dados são consistentes.
Implementação de código
1. Escreva uma classe de servidor gerada aleatoriamente em números e inglês, código -fonte:
pacote com; importar java.awt.color; importar java.awt.font; importar java.awt.graphics; importar java.awt.image.bufferedimage; importar java.io.byteArrayoutstream; importação java.io.ioException; import.io.io.PrintSiterMitterIrThiter; javax.servlet.Servletexception; importar javax.servlet.servletoutputStream; importar javax.servlet.http.httpServlet; importar javax.servlet.http.httperrequest; import javox.sertlet.http.ttpsTPSLEV; javax.servlet.http.httpSession; public class Logcheck estende httpServlet {public LogCheck () {super (); } public void Destroy () {super.Destroy (); } public void Doget (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {DoPost (solicitação, resposta); }/*Código de implementação do núcleo*/public void DoPost (solicitação httpServletRequest, httpServletResponse) lança servletexception, ioexception {Response.setContentType ("Image/jpeg"); Session httpSession = request.getSession (); int width = 60; int altura = 20; // defina o navegador para não cache esta resposta de imagem.setheader ("Pragma", "sem cache"); Response.setheader ("Cache-Control", "No-Cache"); Response.SetDateHeader ("Expira", 0); // Crie imagem de memória e obtenha o contexto gráfico de bufferImage imagem = new bufferiMage (largura, altura, bufferImage.type_int_rgb); Gráficos g = image.getGraphics (); /** Gere código de verificação aleatória* Tabela de caracteres que define o código de verificação*/ string chars = "0123456789abcdefghijklmnopqrstuvwxyz"; char [] rands = novo char [4]; for (int i = 0; i <4; i ++) {int rand = (int) (math.random () *36); rands [i] = chars.charat (rand); } /** Gere imagem* Desenhe fundo* / g.setColor (nova cor (0xdcdcdc)); G.FillRect (0, 0, largura, altura); /** Gerar aleatoriamente 120 pontos de interferência*/ para (int i = 0; i <120; i ++) {int x = (int) (math.random ()* largura); int y = (int) (math.random ()*altura); int vermelho = (int) (math.random ()*255); int verde = (int) (math.random ()*255); int azul = (int) (math.random ()*255); g.setColor (nova cor (vermelha, verde, azul)); G.Drawoval (x, y, 1, 0); } g.setColor (color.black); G.SetFont (New Font (null, font.italic | font.Bold, 18)); // Saída de caracteres diferentes do código de verificação em diferentes alturas G.DrawString (""+rands [0], 1, 17); G.DrawString (""+rands [1], 16, 15); G.DrawString (""+Rands [2], 31, 18); G.DrawString (""+rands [3], 46, 16); G.Dispose (); // Cole a imagem no cliente servletutputStream SOS = Response.getOutputStream (); ByteArrayOutputStream baos = new ByteArrayOutputStream (); Imageio.write (imagem, "jpeg", baos); byte [] buffer = baos.tobytearray (); Response.setContentLength (Buffer.length); sos.write (buffer); baos.close (); sos.close (); session.setAttribute ("CheckCode", New String (Rands)); } public void init () lança servletexception {// Coloque seu código aqui}} 2. Página usada para exibir o código de verificação :
<%@ página de página = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%string path = request.getContextPath (); string basepath = request.getscheme ()+": //"+request.getSername ()+":"+request.g); "-// w3c // dtd html 4.01 transitória // pt"> <html> <head> <base href = "<%= bashepath%>"> <title> Índice </title> <meta http-equiv = "Pragma" content = "no-cache"> <teta-httptp ciM = " http-equiv = "expira" content = "0"> <meta http-equiv = "palavras-chave" content = "palavra-chave1, palavra-chave2, palavra-chave3"> <meta http-equiv = "description" content = "esta é minha página"> <! <form action = "yanzheng" method = "post"> <input type = "text" name = "name" size = "5" maxlength = "4"> <a href = "index.jsp"> <img src = "logcheck"> </a> <br> <brod> <input = "subt")
3. Usado para verificar se o código de verificação inserido está correto:
pacote com; importar java.io.ioException; importar java.io.printwriter; importar javax.jms.session; importar javax.servlet.servletexception; import javax.servlet.http.httpslet; import javax.ervlet.http.httletLest; javax.servlet.http.httpServletResponse; importar javax.servlet.http.httpsession; importar javax.servlet.http.httpsession; classe pública yanzheng estende httpServlet {public yanzheng () {(); } public void Destroy () {super.Destroy (); } public void Doget (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {DoPost (solicitação, resposta); } /*Código do núcleo* / public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {string info = null; /*Obtenha o valor de entrada*/ string value1 = request.getParameter ("nome"); /*Obtenha o valor da imagem*/ httpSession session = request.getSession (); String Value2 = (String) session.getAttribute ("CheckCode"); /*Compare os dois valores (as letras são insensíveis ao caso)*/ if (value2.equalsignorecase (value1)) {info = "entrada do código de verificação correto"; } else {info = "Erro de entrada do código de verificação"; } System.out.println (info); request.setAttribute ("info", info); request.getRequestDispatcher ("/login.jsp"). Forward (solicitação, resposta); } public void init () lança servletexception {// Coloque seu código aqui}}4. Exiba a interface da estrutura de entrada (se o código de verificação de entrada está correto):
<%@ página de página = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%string path = request.getContextPath (); string basepath = request.getscheme ()+": //"+request.getSername ()+":"+request.g); "-// w3c // dtd html 4.01 transitória // pt"> <html> <ading> <base href = "<%= bashepath%>"> <title> meu jsp 'login.jsp' página </title> <meta http-odi-odanp = pagma.jsp 'não "não-cache" " content = "sem cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, palavra-chave2, palavra-chave3"> <meta http-equiv = "descrição" content = "this é minha página"> <! href = "styles.css"> -> </head> <body> < %= request.
5. Estrutura do projeto e capturas de tela de efeito:
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.