Eu acredito que todos estão familiarizados com os códigos de verificação. Se você solicitar uma conta ou fazer login em alguns casos, você deverá inserir o código de verificação. Após as estatísticas, a probabilidade de passar com sucesso o código de verificação em uma verificação é de 90%, o que não é alto. Tantas pessoas definitivamente duvidam da necessidade desse design que reduz a experiência do usuário, mas Hegel disse: tudo o que é razoável é realista; Tudo o que é realista é racional. Em seguida, vamos aprender sobre o código de verificação.
O código de verificação é um programa público totalmente automático que distingue se um usuário é um computador ou uma pessoa. É usado para impedir que rachaduras de senha maliciosa, deslizamento de ingressos e inundações no fórum, e impedir que os hackers entrem constantemente através da rachadura de força bruta. É usado em bancos, comunidades, fóruns, sistemas de votação, etc.
Sem mais delongas, vamos dar uma olhada nas quatro maneiras que sei para implementar o código de verificação em Java.
Método 1:
O primeiro método foi a primeira coisa que pensei e foi a lógica de implementação mais simples, mas foi extremamente eficiente e segura.
A operação específica é: 1. Use o Photoshop para criar uma imagem do código de verificação. A imagem retangular pode conter as letras inglesas, números ou chineses necessários (como acima)
2. Exiba a imagem no controle de swing ou na página JSP
3. Combine a sequência de código de verificação correspondente para cada imagem no código
4. Ao enviar, obtenha a string na caixa de componente ou texto e a sequência de cada imagem para compará -la com o método iguals ().
A desvantagem é que o processo de fazer imagens de código de verificação é muito demorado e o método de implementação é extremamente baixo. É altamente recomendável implementá -lo dessa maneira. O método a seguir se tornará mais eficiente, bonito e relativamente seguro.
Método 2:
Aqui falamos sobre a Web Java e a implementação do código de verificação em Servlet, e a lógica ainda é muito clara.
Para eliminar o código de implementação mais simples, vamos começar com o código-chave front-end:
Quando clicarmos em "Não podemos ver claramente", a imagem do código de verificação será atualizada e uma função JS será chamada para redefinir o caminho da imagem para substituir a imagem. Por favor, veja o código abaixo. No código, <%= request.getContextPath ()%> é resolver o problema de caminhos relativos e pode retornar o caminho raiz do site. /Servlet/ImagesVett é um todo, apontando para o servlet do ImagesVet. Por que precisamos adicionar A /Servlet antes? Como fizemos o mapeamento de configuração no web.xml, ele pode ser entendido como alterando um nome mais longo. Em seguida, observe a seguinte função JS. Algumas pessoas podem ter perguntas, por que obter um horário atual e adicioná -lo ao final do caminho? De fato, isso é para resolver o problema do cache do navegador. É o problema que a imagem do código de verificação foi alterada após o acionamento do Images Servlet, mas o cache não foi alterado. Com a ajuda de diferentes momentos a cada momento, o cache do navegador pode ser invalidado.
<script type = "text/javascript"> function relloadcode () {var time = new Date (). getTime (); document.getElementById ("imageCode"). src = "< %= request.getContextPath () %>/servlet/imagervlet? d ="+time; } </script>Aqui estão as principais informações de configuração em web.xml:
<script type = "text/javascript"> function relloadcode () {var time = new Date (). getTime (); document.getElementById ("imageCode"). src = "< %= request.getContextPath () %>/servlet/imagervlet? d ="+time; } </script>Então vamos ver como o principal serviço de imagens gera imagens:
<servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>com.muke.ImageServlet</servlet-class> </servlet> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.muke.LoginServlet</servlet-class> </servlet> <servlet-mapping> <Verlet-name> Imageservlet </servlet-name> <url-pattern>/servlet/Imageservlet </url-tattern> </servlet-mapping> <vaging-mapping> <Servlet-name> Loginservlet </servlet-name> <url-stattern>/servlet/loginservlet </url-tattern>
Se você deseja descrever mais vividamente como esse código de verificação é implementado, apenas uma palavra "draw" soa semelhante ao primeiro método e ainda é relativamente baixo, mas a eficiência do uso do código para "desenhar" automaticamente o código de verificação definitivamente aumentou inúmeras vezes. Vejamos o código acima. Primeiro, um objeto bufedimage bi é instanciado. O BI é usado para desenhar a imagem do código de verificação. Em seguida, usando BI para obter um pincel G e usar G para desenhar o fundo retangular da entidade. Em seguida, usando a lógica simples para chamar o método destring () comumente usado em Java para desenhar os caracteres do código de verificação no retângulo. Ao mesmo tempo, a sequência é adicionada ao objeto StringBuffer Variable String na sequência e, finalmente, armazenado na sessão de objeto interno JSP para a comparação após o envio do código de verificação. Para exibir o código de verificação, também precisamos escrever a imagem do código de verificação gerada no fluxo Imageio em um determinado formato de imagem.
Como pode ser visto no LogInservlet abaixo, você pode comparar a string na caixa de envio do código de verificação, obtendo a string que acaba de ser armazenada no Serviço. Você pode alterar as cordas para minúsculas ou maiúsculas para ignorar a maçaneta.
classe pública ImagesVlett estende httpServlet {public void Doget (solicitação httpServletRequest, httpServletResponse Response) lança a ioexception {bufferImage bi = new buffaredImage (, bufferedImage.type_int_rgb); Gráficos g = bi.getGraphics (); Cor c = nova cor (,,); g.setColor (c); G.FillRect (,,); char [] ch = "abcdefghijklmnopqrstuvwxyz" .toCharArray (); Aleatório r = novo aleatório (); int len = ch.length, índice; StringBuffer sb = new StringBuffer (); for (int i =; i <; i ++) {index = r.nextint (len); G.SetColor (New Color (R.NextInt (), R.NextInt (), R.NextInt (), R.NextInt ())); G.DrawString (CH [índice]+"", (i*)+,); sb.append (CH [índice]); } request.getSession (). setAttribute ("piccode", sb.toString ()); Imageio.write (bi, "jpg", resposta.getOutputStream ()); }}Aqui está a lenda da implementação:
O exposto acima é o conhecimento relevante sobre a produção de código de verificação de Java, introduzida a você pelo editor. Espero que seja útil para você! Vou apresentar a você a produção do código de verificação Java (parte 2). Amigos interessados, preste atenção no site do Wulin.com!