Red de conocimiento informático - Conocimiento de la instalación - Solicite un código de verificación dinámico gif escrito en lenguaje Java. Este es un usuario registrado de Baidu.

Solicite un código de verificación dinámico gif escrito en lenguaje Java. Este es un usuario registrado de Baidu.

Hola,

Clase de servlet: import?java.io.IOException;

import?javax.servlet.HttpServlet;

importar ?HttpServlet;

importar?javax.servlet.http.HttpServletRequest;

importar?javax.servlet.http.Public?class?ImageServlet?extends?HttpServlet?{

privado?estático?final?1L;

@Override

público?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

lanza ?ServletException,?IOException?setHeader("Sin caché",?

¿Lanza?ServletException,?IOException?{

¿Lanza?ServletException,?IOException?{

Throws?ServletException,?HttpServletResponse?No-cache");//Establezca el encabezado de respuesta para indicarle al navegador que no almacene en caché este contenido

response.setHeader("Cache-Control",? "no - caché");

response.setDateHeader("Expire",?0);

RandomValidateCode?randomValidateCode?=?new?RandomValidateCode();

intente ?{

randomValidateCode.getRandcode(request,?response);//Método de imagen de salida

}?catch?(Exception?e)?{

e .printStackTrace();

}

}

@Override

public?void?doPost(HttpServletRequest?request,? HttpServletResponse ? respuesta)

lanzamientos?{

doGet(solicitud,?respuesta);

}

Generar imagen para clase: ¿importar? java .awt.Color;

importar?java.awt.Font;

importar?java.awt.Graphics;

importar?java.awt.image

importación?java.util.Random;

importación?javax.imageio.ImageIO

importación?javax.servlet.http.HttpServletRequest;

importar?javax.servlet.http.HttpServletResponse

importar?javax.servlet.http.HttpSessi;

on;

public?{

public?RANDOMVALIDATECODEKEY";//clave para poner en sesión

private?0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//cadena generada aleatoriamente

private?int?width?=?80;//Ancho de la imagen

private?int?height?=?26;//Alto de la imagen

private ?int ?lineSize?=?25;//Número de líneas de interferencia

private?int?stringNum?=?4;//Número de caracteres generados aleatoriamente

/*** * ? Generar imágenes aleatorias*/

public?void?getRandcode(HttpServletRequest?request,

HttpServletResponse?response)?{

HttpSession?session?=?request . getSession();

BufferedImage?image?=?new?BufferedImage(width,height,BufferedImage.TYPE_ INT_BGR);

Gráficos?g?=?image.getGraphics() ;

g.fillRect(0,?0,?ancho,?alto);

g.setFont(new?Font("Times?New?Roman ",Font.ROMAN_BASELINE , 18));

g.setColor(getRandColor(180,?233));

Dibujar líneas de interferencia

for(int?i=0; i <=lineSize;i++){

drowLine(g);

}

// Dibujar caracteres aleatorios

String?randomString ? =?""

for(int?i=1;i<=stringNum;i++){

randomString=drowString(g,randomString,i);

}

session.removeAttribute(RANDOMCODEKEY);

session.setAttribute(RANDOMCODEKEY,?randomString);

g.dispose();< / p>

¿intentar?{

ImageIO.write(image, ?randomString);

ImageIO.?"JPEG", respuesta.getOutputStream());

}?{

e.printStackTrace();

}

}

}

/?-------------?métodos?privados?-------------

/* *?Obtener fuente*/< / p>

privado?Font?getFont(){

return?new?Font("Fixedsys",Font.CENTER_BASELINE,18);

}

/* *?Obtener color*/

privado?Color?getRandColor(int?fc,int?bc

){

if(fc?>?255)

fc?=?255;

if(bc?>?255)

bc?=?255;

int?r?=?fc?+?random.nextInt(bc-fc-16);

int?g?=?fc ?+?random.nextInt(bc-fc-14);

int?b?=?fc?+?random.nextInt( bc-fc-18);

regresar ?new?Color(r,g,b);

}

/* *?Dibujar una cadena*/

privado?String?drowString(Gráficos ?g,String?randomString,int?i){

g.setFont(getFont());

g.setColor( new?Color(random.nextInt(101), random.nextInt(111),random.nextInt(121)));

String?rand?=?valueOf(getRandomString(random .nextInt(randString.length()))));

randomString?+=rand;

g.translate(random.nextInt(3),?random.nextInt(3));

g.drawString(rand, ?13*i,?16);

return?randomString;

}

/* *?Dibujar línea de interferencia*/

privado?void?drowLine(Gráficos?g){

int?x?=?random.nextInt(ancho);

int?y?=?random.nextInt(alto );

int?xl?=?random.nextInt(13);

int?yl?=?random.nextInt(15);

g .drawLine(x,?y,?x+xl,?y+yl);

}

/* *?Obtener caracteres aleatorios*/

privado?