Este artigo compartilha o código de exemplo gerado pelo código de verificação Java para sua referência. O conteúdo específico é o seguinte
pacote com.gonvan.component.captcha; importar java.awt.*; importar java.awt.image.bufferedImage; importar java.io.ioexception; importar java.util.hashmap; importar java.util.map; importar java.util.random; importar javax.Imageio.Imageio; importar javax.servlet.ServletOutputStream; importar javax.servlet.http.httpServLeQuest; importar javax.servlet.http.httpsletlestesponse; import javax.sertlet.http.htp.htppspion; /*** Criado por Yuerzm em 2016/3/14. */public class Captchafactory {private estático final char [] code_sequence = "abcdefghijklmnopqrstuvwxyz0123456789" .toCharArray (); private estático final int default_width = 60; private estático final int default_height = 20; private estático final int default_code_len = 4; private estático final int default_code_x = 13; private estático final int default_code_y = 16; private estático final int default_font_size = 18; String final estática privada default_font_family = "Times New Roman"; Instância estática privada Captchafactory = new Captchafactory (); private int width = default_width; // Defina a largura private int altura = default_height; // define a altura private int length = default_code_len; // Defina o número de códigos de verificação exibidos na imagem private int xx = default_code_x; // Defina o código de verificação x coordenar privado int yy = default_code_y; // Defina as coordenadas do código de verificação y exibidas na imagem private int fontsize = default_font_size; // Defina o tamanho da fonte do código de verificação exibido na imagem private string fontfamily = default_font_family; // Defina o número de código de verificação exibido na imagem private captchafactory () {} public static captchafactory getInstance () {retorna instância; } / ** * Configurar largura e altura * * @param w * @param h * @return * / public captchafactory configwidtHandHeight (int w, int h) {instance.width = w; instance.Height = h; instância de retorno; } / ** * Configurar coordenadas * * @param x * @param y * @return * / public captchafactory configxy (int x, int y) {instance.xx = x; instância.yy = y; instância de retorno; } / ** * Configurar tamanho da fonte * * @param fontsize * @return * / public captchafactory configfontsize (int fontSize) {instance.fontsize = fontsize; instância de retorno; } / ** * Configurar font * * @param fontfamily * @return * / public captchafactory configfontsize (string fontfamily) {instance.fontfamily = fontfamily; instância de retorno; } public void write (httpServletRequest Solicy, httpServletResponse resposta) lança IoException {// Salvar o código de verificação de quatro dígitos na sessão. Mapa captcha = generate (); String aleathercode = (string) captcha.get ("captchacode"); BufferImage buffimg = (bufferImage) captcha.get ("captChaimg"); Session httpSession = request.getSession (); session.setAttribute ("Code", RandomCode); // cache de imagem é proibido. Response.setheader ("Pragma", "sem cache"); Response.setheader ("Cache-Control", "No-Cache"); Response.SetDateHeader ("Expira", 0); Response.setContentType ("Image/jpeg"); // Emitida a imagem para o fluxo de saída do servlet. ServletOutputStream outputStream = Response.getOutputStream (); Imageio.write (buffimg, "jpeg", outputStream); outputStream.Close (); } mapa público <string, objeto> generate () lança ioexception {// Defina a imagem buffer bufferImage buffimg = new bufferiMage (largura, altura, bufferImage.type_int_rgb); Gráficos gd = buffimg.getgraphics (); // Defina a cor do fundo GD.setColor (Getrandcolor (200, 250)); gd.fillrect (0, 0, largura, altura); // Defina a fonte, o tamanho da fonte deve ser determinado de acordo com a altura da imagem. gd.setFont (nova fonte (FontFamily, font.plain, fontsize)); // Crie uma classe de gerador de números aleatórios aleatórios aleatórios = novo aleatório (); // Random gera 40 linhas de interferência, tornando menos provável que o código de autenticação na imagem seja detectado por outros programas. gd.setColor (getrandcolor (160, 200)); for (int i = 0; i <155; i ++) {int x = aleatom.nextInt (largura); int y = random.nextint (altura); int xl = random.nextint (12); int yl = random.nextint (12); gd.drawline (x, y, x + xl, y + yl); } // RandomCode é usado para salvar os códigos de verificação gerados aleatoriamente, para que os usuários possam verificar após o login. StringBuffer RandomCode = new StringBuffer (); int vermelho = 0, verde = 0, azul = 0; // gerar códigos de verificação de comprimento aleatoriamente. for (int i = 0; i <comprimento; i ++) {// Obtenha o número do código de verificação gerado aleatoriamente. String code = string.valueof (code_sequence [Random.NextInt (36)]); // Gere componentes de cores aleatórias para construir o valor da cor, para que o valor da cor de cada saída de dígito seja diferente. vermelho = random.nextint (110); verde = random.nextint (110); azul = random.nextint (110); // Desenhe o código de verificação para a imagem com a cor gerada aleatoriamente. gd.setColor (nova cor (vermelha + 20, verde + 20, azul + 20)); gd.drawString (código, i * xx + 6, yy); // combina os números aleatórios gerados. RandomCode.Append (Code); } Mapa <string, object> retval = new hashmap <> (); retval.put ("Captchacode", RandomCode.toString ()); retval.put ("CAPTChaimg", buffimg); retornar retorno; } / ** * Obtenha uma cor aleatória dada uma faixa * * @param fc * min * @param bc * máximo * @return color * / color privado getrandcolor (int fc, int bc) {aleatório = novo Random (); if (fc> 255) fc = 255; if (bc> 255) bc = 255; int r = fc + aleatoriamente.nextInt (bc - fc); int g = fc + aleatoriamente.nextInt (bc - fc); int b = fc + aleatoriamente.nextInt (bc - fc); retornar nova cor (R, G, B); }}O exposto acima é tudo sobre este artigo, espero que seja útil para o aprendizado de todos.