Este artículo ha compartido el código específico del código de verificación de inicio de sesión de Javaweb para su referencia. El contenido específico es el siguiente
usar:
Controlador: generar código de verificación
@RequestMapping ("/user/check.jpg") public void createCode (httpservletRequest solicitud, respuesta httpservletreSponse) lanza ioexception {// notifica al navegador que no almacena en caché. Respuesta.setheader ("Cache-Control", "No-Cache"); respuesta.setheader ("pragma", "-1"); Captchautil util = captchautil.instance (); // Ingrese el código de verificación en la sesión para verificar el código de cadena = Util.getString (); request.getSession (). setAttribute ("código", código); // emite la página web imageio.write (util.getImage (), "jpg", respuesta.getOutputStream ()); } JSP: Mostrar código de verificación
<img id = "img" src = "<%= basepath%> user/check.jpg" onClick = "refresh ()">
function refresh () {var url = $ ("#basepath"). val () + "user/check.jpg? Number =" + math.random (); $ ("#img"). attr ("src", url); } verificar:
Obtenga si el código en la sesión es consistente con el código enviado en primer plano
/ ** * Verificación del código de verificación * * @param session * @param código */ private void checkcode (session httpsession, código de cadena) {String codeesession = (string) session.getAttribute ("código"); if (StringUtils.isEmpty (Codesession)) {log.error ("No se generó información del código de verificación"); tirar nueva ilegalstateException ("err-01000"); } if (stringUtils.isEmpty (código)) {log.error ("No se completó la información del código de verificación"); arrojar una nueva BusinessException ("ERR-06018"); } if (codesessession.equalSignorEcase (código)) {// El código de verificación se pasa} else {log.error ("error de código de verificación"); tirar nueva BusinessException ("ERR-06019"); }} Herramientas:
import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.image.bufferedImage; import java.util.random; / ** * Herramienta de generación de códigos de verificación * @author hxl * */ public class CaptchaUtil {private BufferedImage Image; // Image private String Str; // Código de verificación de Código estático privado [] = "abcdefghijklmnopqrstuvwxyzabcdefghiJklmnopqrstuvwxyz123456789". public static final String session_code_name = "código"; privado captchaUtil () {init (); // propiedad de inicialización}/** get randomnumutil instancia*/ public static captchaUtil instancia () {return new CaptchaUtil (); } /** Obtener imagen del código de verificación* / public BufferedImage getImage () {return this.image; } /** Obtenga el código de verificación para la imagen* / public String getString () {return this.str; } private void init () {// Crear imagen int width = 85, altura = 20; Bufferedimage imagen = nueva bufferedimage (ancho, altura, bufferedimage.type_int_rgb); // Obtener los gráficos de contexto gráfico g = image.getgraphics (); // Generar aleatorios aleatorios = new Random (); // establecer el color de fondo G.SetColor (GetRandcolor (200, 250)); G.Fillrect (0, 0, ancho, altura); // establecer la fuente G.SetFont (nueva fuente ("Times New Roman", Font.Plain, 18)); // Generar aleatoriamente 155 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 G.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); G.Drawline (x, y, x + xl, y + yl); } // Tome el código de autenticación generado aleatoriamente (número de 4 dígitos) String srand = ""; for (int i = 0; i <4; i ++) {string rand = String.ValueOf (Code [Random.NextInt (Code.Length)]); srand += rand; // Mostrar el código de autenticación en la imagen G.SetColor (nuevo color (20 + Random.NextInt (110), 20 + Random.NextInt (110))); // El color de la función de llamada es el mismo, tal vez porque la semilla está demasiado cerca, por lo que solo puede generar directamente G.Drawstring (rand, 13 * i + 6, 16); } // Código de verificación de asignación this.str = srand; // La imagen entra en efecto G.Dispose (); // bytearrayInputStream input = null; // byteArRayOutputStream output = new byteArRaRyOutputStream (); // prueba {// ImageOutputStream ImageOut = ImageIO.CreateEmageOutputStream (salida); // imageio.write (imagen, "JPEG", ImageOut); // ImageOut.Close (); // input = new byteArrayInputStream (output.tobytearray ()); //} Catch (Exception E) {// System.out.println ("Error ocurrió cuando se genera la imagen del código de verificación:" + E.ToString ()); //} // this.image = input this.image = image;/* asignar imagen*/}/** obtener color aleatorio para un rango dado*/ color privado 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); }} Finalmente, expliquemos: ¡el Interceptor de inicio de sesión debe liberar la ruta para generar el código de verificación! ¡Interceptor de inicio de sesión debe liberar la ruta para generar código de verificación! ! ¡Interceptor de inicio de sesión debe liberar la ruta para generar código de verificación! ! ! Decir cosas importantes tres veces ~~
Última pantalla:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.