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 p>
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?