A origem de um código de verificação
No desenvolvimento do projeto da web, a fim de impedir que algumas pessoas usem ferramentas automáticas (como máquinas de registro automáticas) para processar dados em lote, os códigos de verificação são adicionados para verificar em diferentes nós funcionais para alcançar o efeito do bloqueio do software automático
Os aplicativos mais clássicos são: Código de verificação gráfica de registro do site; Em seguida, através da tecnologia Java, combinada com o Servlet, um programa de código de verificação gráfico necessário para o registro do site é implementado, para sua referência.
2. Implementar o efeito do código de verificação gráfico da página de registro
1. Crie um projeto da web: java_servlet_verifyImg
2. Crie um controlador que gera automaticamente os códigos de verificação de gráficos - Verifique severtlet
pacote com.phome.util; importar java.awt.color; importar java.awt.font; importar java.awt.graphics2d; importar java.awt.image.BufferImage; importação java.ServLeve.IlEException; import java.util.random; javax.servlet.servletOutputStream; importar javax.servlet.http.httpServlet; importar javax.servlet.http.httpServletReQuest; importodCox.Servlet.http.httpsletReposição; com.sun.image.codec.jpeg.jpegImageEncoder; classe pública VerifyImgServlet estende httpServlet { / ** * * / private estático final serialversionUid = 1L; // Defina um dicionário de caracteres aleatório. 0,o,1,I, etc. public static final char[] CHARS = { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; public estático aleatório aleatório = novo aleatório (); // Objeto de número aleatório Public Static String getRandomString () {StringBuffer buffer = new StringBuffer (); // cache de string para (int i = 0; i <6; i ++) // Seis loops para obter caracteres {buffer.append (chars [random.nextint (chars.length)]; // Pegue um caractere aleatoriamente de cada vez} retornar buffer.toString (); } public static color getrandomcolor () {return New Color (Random.NextInt (255), Random.NextInt (255), Random.NextInt (255)); } cor estática pública getReverSecolor (color c) {return nova cor (255 - c.getred (), 255 - c.getGreen (), 255 - c.getBlue ()); } cor estática pública getReverSecolor (color c) {return nova cor (255 - c.getred (), 255 - c.getGreen (), 255 - c.getBlue ()); } public void Doget (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {Response.setContentType ("Image/jpeg"); // Defina o tipo de saída para não omitir string aleatomstring = getRandomstring (); // Ligue para o método para gerar string aleatória para obter e aceitar o Random String request.GetSession (true) .SetAttribute ("RandomString", RandomString); // armazenar a string na sessão int width = 100; // largura da imagem int altura = 30; // imagem de altura cor de cor = getRandomcolor (); // Obtenha cores aleatórias para o fundo da cor reversa = getReverSecolor (cor); // Inverta a cor para a cor de primeiro plano BufferImage BI = new BufferImage (largura, altura, bufferImage.type_int_rgb); // Crie uma imagem colorida Graphics2d g = bi.creategraphics (); // Obtenha o objeto de desenho G.SetFont (New Font (Font.sans_serif, Font.Bold, 16)); // Definir Fonte G.SetColor (Color); // Definir cor G.FillRect (0, 0, largura, altura); // desenhe o fundo G.SetColor (reverso); // Defina a cor G.DrawString (Randomstring, 18, 20); // desenha caracteres aleatórios para (int i = 0, n = aleatom.nextInt (100); i <n; i ++) // Desenhe até 100 pontos de ruído {g.drawrect (random.nextInt (largura), random.nextint (altura), 1, 1); // Pontos de ruído aleatório} servletOutputStream out = Response.getOutputStream (); // parece estar obtendo o fluxo de saída jpegImageEncoder coder = jpegcodec.createjpegencoder (out); // codificador codificador.encode (bi); // codificando a imagem out.flush (); // saída para o cliente} public void DoPost (solicitação httpServletRequest, httpServletResponse) lança servletexception, ioexception {this.Doget (solicitação, resposta); }}3. Crie um controlador de registro - RegistServlet
package com.phome.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.httpServletResponse; importar javax.servlet.http.httpsession;/** * controlador de registro * @author zuoyi * */public class RegistsSertLETrends extends httpSertlet {/** * */STATTION STATIC LONG STATIONIRIDERIDEL; @Override Protected Void Doget (httpServletRequest req, httpServletResponse resp) lança servletexception, ioexception {this.doPost (req, resp); } @Override Protect DoPost Protected (httpServletRequest Req, httpServletResponse resp) lança servletexception, ioexception {// Obtenha o código de verificação aleatória do registro da sessão httpssession Session = req.getSession (); String aleatomstring = (string) session.getAttribute ("RandomString"); // Obtenha o código de verificação de entrada do usuário inputRandomString = req.getParameter ("Randomstr"); // Verifique se o código de verificação é passado e registre -o simula if (RandomString.Equals (InputRandomString)) {req.setattribute ("Resinfo", "Parabéns! O registro foi bem -sucedido!"); } else {req.setattribute ("resinfo", "o código de verificação é inserido incorretamente, verifique e registre -se novamente!"); } // Se o registro for bem -sucedido ou falhar, pule para a página Result.jsp para visualizar os resultados do registro. . . req.getRequestDispatcher ("resultado.jsp"). Forward (req, resp); }}4. Configure o servlet
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xmls/javaee/web-web-web-web-web--/java.sun.com/xmls/javaeeeee/web-web-web-web-web-web-web-web-web-web-web-web-web-web-web-/java.sun.com/ <lame-name> Simg </libe-name> <!-Configure o registro do usuário servlet-> <Vertlet> <Verlet-name> registsVlett </servlet-name> <Servlet-class> com.phome.servlet.registsVlettlet </servlet-class> </servlet-mapping> <letname> Registlet </class> </servlet> <er Servlet> <Lame> <url-pattern> /regist.action </url-tattern> </servlet-mapping> <!-Configurar código de verificação do gráfico Servlet-> <Vertlet> <Vertlet-name> verifyimg </servlet-name> <for Servlet-class-class> com.phome.servlet.verifyim-servlet </servlet-class> <//class> <Veut-name> verifyImg </vetlet-name> <url-tattern> /verifyImg.action </url-tattern> </vetlet-mapping> <lorde--- <ldenmy-File> default.html </chauty-File> <lmed-File> default.htm </cleard-file> <lmed-File> default.jsp </cle Wolk-File>
5. Crie uma página de teste de exibição de registro - Regist.jsp
<%@ página de página = "java" import = "java.util.*" PageEncoding = "gb18030"%> <%string path = request.getContextPath (); string basepath = request.getscheme ()+": //"+request.getSername ()+":" +.getp (); "-// w3c // dtd html 4.01 transitório // pt"> <html> <head> <base href = "<%= bashepath%>" rel = "externo nofollow" rel = "nofollow"> <title> meu jsp 'index.jsp' houting "</title <meta-http"> <title> meu jsp 'index.jsp' ' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, keyword2, palavra-chave"> <magle http-equiv = "descrição" "content1, keyword2, palavra-chave"> <magle http-ouquiv = "descrição" " type = "text/css" href = "styles.css" rel = "Nofollow externo" rel = "Nofollow externo"> -> </ad head> <body> <formulário action = "$ {PageContext.request.ContextPath}/" usetion = "username): <input.Context" "" usename): " name = "senha"/> <r/> Por favor, digite o código de verificação para se registrar: <img src = "$ {pageContext.request.contextpath} /verifyimg.action"/> <input type = "text" name = "Randomstr"/> <BR/> <input = "submit" value = ""/"regist"/> <> 5.1 Crie uma página de resultado de registro - Result.jsp
<%@ página de página = "java" import = "java.util.*" PageEncoding = "gb18030"%> <%string path = request.getContextPath (); string basepath = request.getscheme ()+": //"+request.getSername ()+":" +.getp (); "-// w3c // dtd html 4.01 transitório // pt"> <html> <head> <base href = "<%= bashepath%>" rel = "externo nofollow" rel = "nofollow"> <title> meu jsp 'index.jsp' houting "</title <meta-http"> <title> meu jsp 'index.jsp' ' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, keyword2, palavra-chave"> <magle http-equiv = "descrição" "content1, keyword2, palavra-chave"> <magle http-ouquiv = "descrição" " type = "text/css" href = "styles.css" rel = "Nofollow externo" rel = "Nofollow externo"> -> </ad Head> <body> $ {requestscope.resinfo} </body> </html>6. Teste
(1) a. Abra o navegador e digite o endereço de teste: http: // localhost: 8080/java_servlet_verifyImg; A página mostrada na figura abaixo aparece
b. Digite a conta de registro, a senha e o código de verificação e clique em Regist para enviar
c. Resultados dos testes, pule para a página de registro de transferência, solicitando que o registro seja bem -sucedido
(2) Abra a página de registro
Digite o Código de Registro de Erros
Página de resultados de teste
sobre!
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.