Este artículo comparte el código de ejemplo generado por el código de verificación Java para su referencia. El contenido específico es el siguiente
paquete com.gonvan.component.captcha; import java.awt.*; import java.awt.image.bufferedImage; import java.io.ioexception; import java.util.hashmap; import java.util.map; import java.util.random; import javax.imageio.imageio; import javax.servlet.servletutputstream; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import javax.servlet.http.httpsession; /*** Creado por Yuerzm el 2016/3/14. */public class CaptChaFactory {private static final char [] code_sequence = "abcdefghijklmnopqrstuvwxyz0123456789" .ToCarArray (); Private static final int default_width = 60; privado estático final int default_height = 20; Private static final int default_code_len = 4; Private static final int default_code_x = 13; Private static final int default_code_y = 16; Private static final int default_font_size = 18; cadena final estática privada default_font_family = "Times New Roman"; Instancia privada estática CaptChaFactory = new CaptChaFactory (); Private int width = default_width; // Definir el ancho privado int hight = default_height; // Definir la altura Private int long = default_code_len; // Definir el número de códigos de verificación que se muestran en la imagen privada int xx = default_code_x; // Definir el código de verificación X coordenada private int yy = default_code_y; // Definir las coordenadas del código Y de verificación que se muestran en la imagen private int fontSize = default_font_size; // Defina el tamaño de fuente del código de verificación que se muestra en la imagen de la imagen privada FontFamily = default_font_family; // Defina el número de código de verificación que se muestra en la imagen CaptChaFactory () {} public static CaptChaFactory getInStance () {return instancia; } / ** * Configurar ancho y altura * * @param w * @param h * @return * / public captChaFactory configwidthandHeight (int w, int h) {instance.width = w; instance.Height = h; instancia de retorno; } / ** * Configurar coordenadas * * @param x * @param y * @return * / public captchaFactory configxy (int x, int y) {instance.xx = x; instance.yy = y; instancia de retorno; } / ** * Configurar el tamaño de la fuente * * @param fontSize * @return * / public CaptChaFactory ConfigFontSize (int FontSize) {instance.FontSize = FontSize; instancia de retorno; } / ** * Configurar Font * * @param fontfamily * @return * / public captchaFactory confontSize (string fontfamily) {instance.fontfamily = fontfamily; instancia de retorno; } public void Write (HTTPServletRequest Solicitud, respuesta httpservletResponse) lanza IOException {// Guarde el código de verificación de cuatro dígitos a la sesión. Map CaptCha = Generate (); String RandomCode = (String) Captcha.get ("CaptChacode"); BufferedImage buffimg = (BufferedImage) Captcha.get ("Captchaimg"); Httpsession session = request.getSession (); session.SetAttribute ("Código", RandomCode); // El almacenamiento en caché de imágenes está prohibido. respuesta.setheader ("Pragma", "No-Cache"); Respuesta.setheader ("Cache-Control", "No-Cache"); respuesta.setDateHeader ("expiras", 0); respuesta.setContentType ("Image/jpeg"); // Salida la imagen a la transmisión de salida del servlet. ServLetOutputStream OutputStream = Response.getOutputStream (); ImageIO.Write (Buffimg, "JPEG", OutputStream); outputStream.close (); } public map <string, object> generate () lanza ioexception {// Definir buffer de imagen bufferedimage buffimg = new BufferedImage (ancho, altura, bufferedimage.type_int_rgb); Gráficos gd = buffimg.getgraphics (); // establecer el color de fondo GD.SetColor (GetRandcolor (200, 250)); gd.fillrect (0, 0, ancho, altura); // Establecer la fuente, el tamaño de la fuente debe determinarse de acuerdo con la altura de la imagen. GD.SetFont (nueva fuente (Fontfamily, Font.Plain, FontSize)); // Crear una clase de generador de números aleatorios Random Random = new Random (); // aleatoria genera 40 líneas de interferencia, lo que hace que el código de autenticación en la imagen sea menos probable que sean detectados por otros programas. GD.SetColor (GetRandcolor (160, 200)); para (int i = 0; i <155; i ++) {int x = random.nextint (ancho); int y = random.nextint (altura); int xl = random.nextint (12); int yl = random.nextint (12); gd.drawline (x, y, x + xl, y + yl); } // RandomCode se usa para guardar códigos de verificación generados aleatoriamente para que los usuarios puedan verificar después de iniciar sesión. StringBuffer RandomCode = new StringBuffer (); int rojo = 0, verde = 0, azul = 0; // Generar los códigos de verificación de longitud al azar. para (int i = 0; i <longitud; i ++) {// Obtenga el número de código de verificación generado aleatoriamente. String Code = String.ValueOf (code_sequence [Random.NextInt (36)]); // Generar componentes de color aleatorios para construir el valor de color, de modo que el valor de color de cada salida de dígitos sea diferente. rojo = random.nextint (110); verde = Random.NextInt (110); Blue = Random.NextInt (110); // Dibuje el código de verificación en la imagen con el color generado aleatoriamente. GD.SetColor (nuevo color (rojo + 20, verde + 20, azul + 20)); gd.drawstring (código, i * xx + 6, yy); // Combina los números aleatorios generados juntos. RandomCode.append (código); } Map <string, object> retval = new HashMap <> (); retval.put ("CaptChacode", RandomCode.ToString ()); retval.put ("captchaimg", buffimg); regreso de regreso; } / ** * Obtenga un color aleatorio dado un rango * * @param fc * min * @param bc * máximo * @return color * / private color getRandColor (int fc, int bc) {random random = new random (); if (fc> 255) fc = 255; if (BC> 255) BC = 255; int r = fc + random.nextint (bc - fc); int g = fc + random.nextint (BC - fc); int b = fc + random.nextint (bc - fc); devolver nuevo color (R, G, B); }}Lo anterior se trata de este artículo, espero que sea útil para el aprendizaje de todos.