Como o Java implementa a função de verificação de código de verificação? Na vida cotidiana, os códigos de verificação podem ser vistos em todos os lugares e ele pode proteger a segurança da conta até certo ponto. Então, como ele conseguiu isso?
Java implementa a função de verificação de código de verificação de fato muito simples: uma classe gráfica é usada para desenhar letras na prancheta, selecione aleatoriamente um certo número de letras para gerá -las aleatoriamente e, em seguida, gera aleatoriamente várias linhas de interferência na prancha de arte.
Primeiro, escreva um código de verificação para gerar uma classe de ajuda, usada para desenhar letras aleatórias:
importar java.awt.color; importar java.awt.font; importar java.awt.graphics; importar java.awt.image.bufferiMage; importar java.io.ioException; importar java.io.OutputStream; importar java.util.random; importar javax.imageio.imageio; Public Final Class Graphichelper { / ** * Retorne o código de verificação gerado na forma de uma string e produza uma imagem ao mesmo tempo * * @param largura * a largura da imagem * @param altura * a altura da imagem (a imagem * @param imgtype * imagem tipo * @param * a imagem da imagem (a imagem será a saída * @Param) * *eturn Final Int Hight, Final String IMGType, saída de saída) {StringBuffer sb = new StringBuffer (); Aleatório aleatório = novo aleatório (); Imagem bufferedImage = new bufferImage (largura, altura, bufferImage.type_int_rgb); Graphics Graphic = Image.getGraphics (); Graphic.setColor (color.getColor ("f8f8f8")); Graphic.fillRect (0, 0, largura, altura); Cor [] cores = nova cor [] {color.blue, color.gray, color.green, color.red, color.black, color.orange, color.cyan}; // gera linhas de interferência na "prancha de arte" (50 é o número de linhas) para (int i = 0; i <50; i ++) {graphic.setColor (cores [random.nextint (colors.length)]); final int x = random.nextint (largura); final int y = aleatom.nextInt (altura); final int w = random.nextint (20); final int h = aleatória.nextint (20); final int signa = random.nextBoolean ()? 1: -1; final int sinB = aleatória.nextboolean ()? 1: -1; Graphic.Drawline (x, y, x + w * signa, y + h * signo); } // Desenhe as letras no graphic.setFont "Artboard" (new Font ("Comic Sans MS", Font.Bold, 30)); for (int i = 0; i <6; i ++) {final int temp = aleatom.nextInt (26)+97; String s = string.valueof ((char) temp); sb.append (s); Graphic.setColor (cores [aleatom.nextint (colors.length)]); Graphic.DrawString (s, i * (largura / 6), altura - (altura / 3)); } graphic.dispose (); tente {imageio.write (imagem, imgtype, saída); } catch (ioexception e) {e.printStackTrace (); } return sb.toString (); }} Em seguida, crie um servlet para corrigir o tamanho da imagem, processar os cenários de uso dos códigos de verificação e capturar o código de verificação gerado pela página (o código QR capturado é consistente com o código de verificação inserido pelo usuário antes que ele possa ser passado).
importar java.io.ioException; importar java.io.OutputStream; importar javax.servlet.servletexception; importar javax.servlet.annotation.webServlet; importar javax.servlet.http.httpServlet; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importar javax.servlet.http.httpSession; @WebServlet (urlpatterns = "/verify/regist.do") classe pública verificoucodServlet estende httpServlet {private static final long serialversionuid = 3398560501558431737l; @Override Protected void Service (solicitação httpServLeQuest, resposta httpServletResponse) lança servletexception, ioexception {// obtenha o objeto de sessão correspondente à solicitação atual httpSession session = request.getSession (); // Obtenha URI do solicitação (identificador de recurso uniforme) String URI = request.getRequesturi (); System.out.println ("Hello:" + Uri); Final Int Width = 180; // Largura da imagem Final Int Hight = 40; // Altura da imagem Final String imgtype = "jpeg"; // Especifique o formato da imagem (não referindo -se ao tipo MIME) Final OutputStream Output = Response.getOutputStream (); // Obtenha o fluxo de saída que pode retornar a imagem ao cliente // (fluxo de bytes) // Crie uma imagem do código de verificação e retorne a string no code string de imagem = graphichelper.create (largura, altura, imgtype, saída); System.out.println ("Conteúdo do código de verificação:" + código); // Crie uma associação entre URI e o código de verificação correspondente (armazenado nos atributos do objeto de sessão atual) session.setAttribute (URI, código); System.out.println (session.getAttribute (URI)); }} Em seguida, escreva uma página de registro HTML para verificar:
<! Doctype html> <html> <head> <meta charset = "utf-8"> <title> registre </title> <link rel = "stylesheet" href = "estilles/general.css"> <link rel = "styleSheet" href = "Styles/cell.css"> <links ">" estilos "styles/cell.css"> <links "> <script type = "text/javascript" src = "js/ref.js"> </script> <style type = "text/css"> .logo-container {margin-top: 50px; } .logo-container img {width: 100px; } .Message-container {Hight: 80px; } .link-container {altura: 40px; altura da linha: 40px; } .link-container a {decoração de texto: nenhum; } </style> </head> <body> <div> <formulário de forma = "/wendao/regist.do" method = "post"> <div> <!-formulário de registro start-> <div> <dran> <i> </i> </span> <span style = "text-align: left; <div> <mpan> <i> </i> </span> <pan> <i> </i> </span> <span> <i> </i> </span> <pura> <i> </i> </span> </divint <i> </i> </span> <rpa> </span> </span> </<i> </i> </span> <rpa> <span> typ = "senha" name = "confirming" "" type = "senha" name = "confirm" placeholder = "Confirme a senha"> </span> </div> <div> <pan> <input type = "text" name = "verifycode" stakeholder = "digite o código de verificação"> </span> <span style = "text-align: center; </span> </div> <div style = "borda: none;"> <span style = "text-align: left"> <input type = "reset" value = "reset"> </span> <span style = "text-align: direita; </html>O efeito é o seguinte:
Quando clicamos para atualizar a página, o código de verificação também será alterado, mas quando não podemos ver claramente o código de verificação, atualizaremos desde que cliquem no código de verificação. Dessa forma, a atualização local pode ser alcançada usando JavaScript.
Em <img src = "/Demo/verify/regist.do">, adicione um ponto de interrogação e uma série de números de sufixo. Quando é revigorante, deixe os números do sufixo continuarem mudando e o código de verificação formado também continuará a alterar. Um método que podemos usar é substituir os números do sufixo pela data. A data obtém a hora local e o horário muda a qualquer momento, o que garante que o código de verificação de atualização possa mudar a qualquer momento.
O código é o seguinte:
função myRefersh (e) {const fonte = e.src; // Obtenha o conteúdo no src //console.log original ("fonte:" + fonte); var index = fonte.IndexOF ("?"); // Encontre o primeiro local da aparição (retorne -1 se não existir) //console.log ("Index:" + Index); if (index> -1) {// se for encontrado? // interceptar o conteúdo antes do índice do fonte (índice e o conteúdo após o índice são descartados) //console.log ("s:" + s); var date = new Date (); // Crie uma instância da data objeto var time = date.gettime (); // Obtenha o valor milissegundo correspondente a esse tempo a partir da instância recém -criada do objeto Data E.Src = S + "? Time =" + Time; // Substitua o endereço de cauda no src //console.log (e.src); } else {var date = new Date (); e.src = fonte + "? time =" + date.gettime (); }}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.