1. Prefacio
Se puede decir que los códigos de verificación son muy comunes en nuestras vidas. Cualquier sitio web o cualquier aplicación tendrá esta función, pero ¿por qué necesita esto? ¿Cómo hacerlo? A continuación, el editor llevará a todos a usar Java para completar la función de un código de verificación.
2. La función del código de verificación
En general, puede evitar que las personas usen robots para registrarse automáticamente en lotes e iniciar sesión continuamente a usuarios registrados específicos que usan programas específicos para medir los métodos de agrietamiento de fuerza bruta. Debido a que el código de verificación es una imagen que mezcla números y símbolos, parece difícil para el ojo humano reconocer, y es aún más difícil para la máquina reconocer.
3. Implementación de Java
3.1 Establecer una clase de servlet para el código de verificación:
paquete com.bjpowernode.drp.util.servlet; import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.image.bufferedImage; import java.io.ioxception; import java.util.random; import javax.image.imageio; javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import javax.servlet.http.httpsession;/** *** VERATION* Ares * */public class AuthImage extiende httpservlet {private static final string content_type = "text/html; charset = gb2312"; // establecer el tamaño de las letras, tamaño privado font mfont = new Font ("Times New Roman", Font.Plain, 17); public void init () lanza ServletException {super.init (); } 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); int b = fc+random.nextint (bc-fc); devolver nuevo color (R, G, B); } Servicio público void (solicitud httpservletRequest, httpservletResponse respuesta) arroja servletException, ioexception {respuesta.setheader ("pragma", "no-cache"); Respuesta.setheader ("Cache-Control", "No-Cache"); respuesta.setDateHeader ("expiras", 0); // indica que la respuesta generada es la respuesta de la imagen.setContentType ("Image/jpeg"); int ancho = 100, altura = 18; Bufferedimage imagen = nueva bufferedimage (ancho, altura, bufferedimage.type_int_rgb); Gráficos g = image.getgraphics (); Aleatorio aleatorio = new Random (); G.SetColor (GetRandcolor (200,250)); G.FillRect (1, 1, ancho-1, altura-1); G.SetColor (nuevo color (102,102,102)); g.drawrect (0, 0, ancho-1, altura-1); G.SetFont (mfont); G.SetColor (GetRandcolor (160,200)); // dibujar una línea aleatoria para (int i = 0; i <155; i ++) {int x = random.nextint (ancho - 1); int y = random.nextint (altura - 1); int xl = random.nextint (6) + 1; int yl = random.nextint (12) + 1; G.Drawline (x, y, x + xl, y + yl); } // dibuje una línea aleatoria desde la otra dirección para (int i = 0; i <70; i ++) {int x = random.nextint (ancho - 1); int y = random.nextint (altura - 1); int xl = random.nextint (12) + 1; int yl = random.nextint (6) + 1; G.Drawline (x, y, x - xl, y - yl); } // Generar números aleatorios y convertir números aleatorios en letras cadena srand = ""; for (int i = 0; i <6; i ++) {int itmp = random.nextint (26)+65; char ctmp = (char) itmp; srand += string.valueOf (ctmp); G.SetColor (nuevo color (20+Random.NextInt (110), 20+Random.NextInt (110), 20+Random.NextInt (110))); G.DrawString (String.ValueOf (CTMP), 15*i+10,16); } Httpsession session = request.getSession (true); session.SetAttribute ("rand", srand); G.Dispose (); ImageIO.Write (Image, "JPEG", Response.getOutputStream ()); } public void destruye () {}}3.2 Configuración de servlet en web.xml en el archivo web-INF
// Nombre y ubicación de servlet <Servlet> <Servlet-name> Authimage </servlet-name> <ervlet-class> com.bjpowernode.drp.util.servlet.authimage </servlet-class> </servlet> // servlet funciona en esas asignaciones <ervlet-mapping> <ervlet-name> autimage </servlet-name> <URL-Pattern>/Servlet/Login/AuthImage </url-Pattern> </Servlet-Mapping>
3.3 La recepción llama a servlet
Código JSP:
<img id = "img" style = "cursor: pointer;" src = "$ {PageContext.Request.ContextPath}/Servlet/Login/AuthImage" onClick = "ChangeImg ()">JS:
// Haga clic en el código de verificación para cambiar la función de imagen ChangeImg () {var img = document.getElementById ("img"); img.src = "$ {PageContext.Request.ContextPath}/Servlet/Login/AuthImage? D ="+Math.random (); devolver falso;}4. Resumen
A través de este aprendizaje del código de verificación, también he adquirido una cierta comprensión de la interacción entre todo el servlet y el código frontal, y la transmisión de datos también se ha mejorado enormemente. Por lo tanto, todavía necesito aprender más sobre estas habilidades y resumirlas en el futuro. Solo de esta manera el conocimiento puede ser sólido.
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.