<html页面>. .
<tr>
<TDclase="td_left">
<Sellopara="Jaque">CAPTCHA</Sello>
</TD>
<TDclase="td_right chequeado">
<Entradatipo="texto"id="Jaque"nombre="Jaque"clase="Jaque">
<IMGsrc="checkCodeServlet"altura="32px"alt=""onclick="changeCheckCode(éste)">
<Guióntipo="texto/javascript">
//Eventos de clic en imágenes
FunciónchangeCheckCode(IMG) {
IMG.src="¿CheckCodeServlet?"+NuevoFecha().getTime();
}
</Guión>
</TD>
</tr>//验证码拼接部分Clase públicaCheckCodeServletextiendeHttpServlet{
@Override
Vacío públicodoGet(Solicitud HttpServletRequest, respuesta HttpServletResponse)LanzamientosServletException, IOException{
//El servidor informa al navegador que no almacene caché
response.setHeader("pragma","sin caché"); response.setHeader("control de caché","sin caché"); response.setHeader("expira","0");
//Crea uno largo en la memoria80extenso30El fondo negro predeterminado
//Parámetro 1: Longitud
//Parámetro 2: Anchura
//Parámetro 3: Color
intancho =80;
intaltura =30; Imagen Búfer =NuevoBufferedImage(ancho, altura, imagen con búfer.TYPE_INT_RGB);
//Coge el cepillo
Gráficos g = image.getGraphics();
//Pon el color del pincel en gris
g.setColor(Color.GRAY);
//Rellena la imagen
g.fillRect(0,0, ancho, altura);
//Producción4código de verificación aleatorio,12Ey
String checkCode = getCheckCode();
//Introduce el códigoHttpSessionMedio
request.getSession().setAttribute("código",checkCode);
//Pon el color del pincel en amarillo
g.setColor(Color.AMARILLO);
//Establece el tamaño de la tipografía
g.setFont(NuevoFuente("Cuerpo negro",Fuente.NEGRITA,24));
//Escribe un código de verificación para la imagen
g.drawString(checkCode,15,25);
//Envía la imagen de la memoria al navegador
//Parámetro 1: Objeto de imagen
//Parámetro 2: El formato de la imagen, tales como:PNG, JPG, GIF
//Parámetro 3: Dónde se muestra la imagen
ImageIO.escribe(imagen,"PNG",response.getOutputStream());
}
/**
*Producción4Cadena aleatoria de bits
*/
PrivadoCadena getCheckCode() {
Base de cuerda ="0123456789ABCDEFGabcdefg";
inttamaño = base.longitud(); Aleatorio r =NuevoAleatorio(); StringBuffer sb =NuevoStringBuffer();
para(inti=1; i<=4; i++){
//Producción0ParaTalla-1de valores aleatorios
intíndice = r.nextInt(tamaño);
//enBasecadena get subíndice comoíndicePersonajes
charc = base.charAt(índice);
//serácPonloStringBufferVe por el centro
sb.append(c);
}
devoluciónsb.toString();
}
@Override
Vacío públicodoPost(Solicitud HttpServletRequest, respuesta HttpServletResponse) LanzamientosServletException, IOException{
éste.doGet(Solicitud, respuesta);
}
}
¿Cómo conseguirlo?
|