<html页面>. .
<tr>
<TDclass="td_left">
<Selopara="Confere">CAPTCHA</Selo>
</TD>
<TDclass="td_right confere">
<Entradatipo="texto"id="Confere"nome="Confere"class="Confere">
<IMGsrc="checkCodeServlet"altura="32px"alt=""onclick="changeCheckCode(isso)">
<Roteirotipo="texto/javascript">
//Eventos de clique na imagem
FunçãochangeCheckCode(IMG) {
IMG.src="verificarCodeServlet?"+NovoData().getTimeT();
}
</Roteiro>
</TD>
</tr>//验证码拼接部分Classe públicaCheckCodeServletestendeHttpServlet{
@Override
Empty públicodoGet(Solicitação HttpServletRequest, resposta HttpServletResponse)ArremessosServletException, IOException{
//O servidor informa o navegador para não armazenar em cache
response.setHeader("pragma","sem cache"); response.setHeader("controle de cache","sem cache"); response.setHeader("expira","0");
//Crie um longo na memória80, largo30O fundo preto padrão
//Parâmetro 1: Comprimento
//Parâmetro 2: Largura
//Parâmetro 3: Cor
intlargura =80;
intaltura =30; Imagem Buffered =NovoBufferedImage(largura, altura, imagem em buffer.TYPE_INT_RGB);
//Pegue a escova
Gráficos g = image.getGraphics();
//Defina a cor do pincel para cinza
g.setColor(Cor.GRINZA);
//Preencha a imagem
g.preenchido Retto(0,0, largura, altura);
//Produção4código de verificação aleatório,12Ey
String checkCode = getCheckCode();
//Coloque o códigoHttpSessionMédia
request.getSession().setAttribute("código",checkCode);
//Defina a cor do pincel para amarelo
g.setColor(Cor.AMARELO);
//Defina o tamanho da fonte
g.setFont(NovoFonte("Corpo preto",fonte.OUSADO,24));
//Escreva um código de verificação para a imagem
g.drawString(checkCode,15,25);
//Envie a imagem da memória para o navegador
//Parâmetro 1: Objeto de imagem
//Parâmetro 2: O formato da imagem, como:PNG, JPG, GIF
//Parâmetro 3: Onde a imagem é produzida
ImageIO.Escreva(imagem,"PNG",resposta.getOutputStream());
}
/**
*Produção4String aleatória de bits
*/
PrivadoString getCheckCode() {
Base da corda ="0123456789ABCDEFGabcdefg";
inttamanho = base.comprimento(); Aleatório r =NovoAleatório(); StringBuffer sb =NovoStringBuffer();
para(inti=1; i<=4; i++){
//Produção0ParaTamanho 1de valores aleatórios
intíndice = r.nextInt(tamanho);
//emBasestring get subscript comoíndicePersonagens
Charc = base.charAt(índice);
//vontadecColoqueStringBufferVá pelo meio
sb.append(c);
}
retornosb.toString();
}
@Override
Empty públicodoPost(Solicitação HttpServletRequest, resposta HttpServletResponse) ArremessosServletException, IOException{
isso.doGet(pedido, resposta);
}
}
Como conseguir isso?
|