Cómo implementar el código de verificación usando Java
El código de verificación en realidad consiste en seleccionar aleatoriamente algunos caracteres y mostrarlos en la página en forma de imágenes. Si los caracteres de la imagen deben enviarse al mismo tiempo, si los caracteres enviados son diferentes de los caracteres almacenados en la sesión del servidor, la información enviada se considera inválida. Para evitar que el programa analice automáticamente la imagen, generalmente se generan aleatoriamente algunas líneas de interferencia o caracteres distorsionados en la imagen para aumentar la dificultad del reconocimiento automático del código de verificación.
Aquí usamos java para implementar el código de verificación.
& lt% @ tipo de contenido de página = imagen/importación JPEG = Java awt * imagen Java awt * utilidad Java * javax imageio * % & gt; p>
color Obtener rand color(int fc int BC){//Obtener un color aleatorio dentro del rango dado.
Aleatorio Aleatorio = new Aleatorio();
if(fc>)fc=;
if(BC>)BC=;
int r = fc+siguienteInt aleatorio(BC fc);
int g = fc+siguienteInt aleatorio(BC fc
int b = fc+siguienteInt aleatorio(BC fc); );
Devuelve nuevo color (r g b);
}
% & gt
& lt% p>
//Establecer la página para que no se almacene en caché
encabezado del conjunto de respuestas (Pragma No cache);
respuesta setHeader (control de caché sin caché
respuesta); setDateHeader(expired);
//Crear imagen en memoria
int ancho = alto =
imagen almacenada en búfer imagen = nueva imagen almacenada en búfer (ancho alto imagen almacenada en búfer TIPO _ INT _ RGB);
//Obtener contexto de gráficos
gráficos g = imagen obtener gráficos();
//Generar clase aleatoria
Random Random = new Random();
//Establecer color de fondo
g set color(getRandColor());
g fillRect(width y altura);
//Establecer fuente
g setFont(Nueva fuente (Times New Roman Font PLAIN));
//Las líneas de interferencia aleatoria hacen que el código de autenticación en la imagen difícil de detectar por otros programas.
g set color(getRandColor());
for(int I = i<i++)
{
int x = nextInt aleatorio(ancho);
int y = nextInt aleatorio(alto);
int XL = nextInt aleatorio()
int yl = nextInt aleatorio( );
g drawLine(x y x+XL y+yl);
}
//Obtener el código de autenticación generado aleatoriamente (número)
cadena codeList = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;
cadena sRand =;
for(int I = i<i++){
int a = aleatorio nextInt( codeList length());
string rand = codeList substring(a a+);
sRand+= rand;
//in El código de verificación se muestra en la imagen.
g set Color(new Color(+random nextInt()+random nextInt()+random nextInt()); //Los colores generados al llamar a la función son los mismos, tal vez porque las semillas también lo son cerrar, Por lo que solo se puede generar directamente.
g drawstring (rand * I+);
}
// Almacena el código de autenticación en la sesión.
atributo del conjunto de sesión (rand sRand);
//La imagen tiene efecto
g dispose();
//Salida la imagen a la página
ImageIO write(respuesta de imagen JPEG obtiene flujo de salida());
out clear();
out = pageContext push body() ;
Lishi Xinzhi/Article/program/Java/hx/201311/25536