Este artigo compartilhou o código específico do código de verificação de login Javaweb para sua referência. O conteúdo específico é o seguinte
usar:
Controlador: Gere Código de Verificação
@RequestMapping ("/user/check.jpg") public void createCode (solicitação httpSertLeQuest, httpServletResponse resposta) lança ioexception {// notifica o navegador para não cache Response.setheader ("expires", "-1"); Response.setheader ("Cache-Control", "No-Cache"); Response.setheader ("Pragma", "-1"); Captchautil util = captchautil.instance (); // Insira o código de verificação na sessão para verificar o código da String = util.getString (); request.getSession (). SetAttribute ("código", código); // em saída a página da web imageio.write (util.getImage (), "jpg", resposta.getOutputStream ()); } JSP: Mostrar código de verificação
<img id = "img" src = "<%= basepath%> user/check.jpg" onclick = "refresh ()">
function refresh () {var url = $ ("#baseepath"). val () + "user/check.jpg? number =" + math.random (); $ ("#img"). Att ("src", url); } verificar:
Obtenha se o código na sessão é consistente com o código enviado de volta em primeiro plano
/ ** * Verificação do código de verificação * * @param sessão * @param code */ private void checkCode (sessão httpSession, string code) {string codEsession = (string) session.getAttribute ("code"); if (stringutils.isEmpty (codesession)) {log.error ("nenhuma informação do código de verificação foi gerada"); lançar novas ilegalstateException ("err-01000"); } if (stringutils.isEmpty (code)) {log.error ("Nenhuma informação do código de verificação foi preenchida"); lançar nova BusinessException ("Err-06018"); } if (codEsession.equalsignorecase (code)) {// O código de verificação é passado} else {Log.error ("Erro do código de verificação"); lançar nova BusinessException ("Err-06019"); }} Ferramentas:
importar java.awt.color; importar java.awt.font; importar java.awt.graphics; importar java.awt.image.bufferiMage; importar java.util.random; / ** * Ferramenta de geração de código de verificação * @author hxl * */ public class Captchautil {private bufferImage imagem; // imagem private string str; // código de verificação privado char public static final string session_code_name = "code"; private captchautil () {init (); // propriedade de inicialização}/** obtenha a instância RandomNumutil*/ public static Captchautil Instância () {return captchautil (); } /** Obtenha o código de verificação da imagem* / public bufferImage getImage () {return this.image; } /** Obtenha o código de verificação para a imagem* / public string getString () {return this.str; } private void init () {// Crie imagem int width = 85, altura = 20; Imagem bufferedImage = new bufferImage (largura, altura, bufferImage.type_int_rgb); // Obtenha os gráficos gráficos G = Image.getGraphics (); // gerar aleatório aleatório = novo aleatório (); // Defina a cor do fundo G.SetColor (Getrandcolor (200, 250)); G.FillRect (0, 0, largura, altura); // Defina a fonte G.SetFont (New Font ("Times New Roman", Font.Plain, 18)); // gerar aleatoriamente 155 linhas de interferência, tornando menos provável que o código de autenticação na imagem seja detectado por outros programas G.SetColor (Getrandcolor (160, 200)); for (int i = 0; i <155; i ++) {int x = aleatom.nextInt (largura); int y = random.nextint (altura); int xl = random.nextint (12); int yl = random.nextint (12); G.Drawline (x, y, x + xl, y + yl); } // Pegue o código de autenticação gerado aleatoriamente (número de 4 dígitos) string srand = ""; for (int i = 0; i <4; i ++) {string rand = string.valueof (code [aleatory.nextInt (code.length)]); srand += rand; // Mostra o código de autenticação na imagem G.setColor (nova cor (20 + Random.NextInt (110), 20 + Random.nextint (110))); // A cor da função de chamada é a mesma, talvez porque a semente esteja muito próxima, para que você possa gerar diretamente diretamente G.DrawString (Rand, 13 * i + 6, 16); } // Código de verificação de atribuição this.str = srand; // imagem entra em vigor g.dispose (); // byteArrayInputStream input = null; // byteArrayOutputStream Output = new ByteArrayOutputStream (); // tente {// imageOutputStream imageout = imageio.createImageOutputStream (output); // imageio.write (imagem, "jpeg", imageout); // imageout.close (); // input = new ByteArrayInputStream (output.TobyTearRray ()); //} catch (Exceção e) {// System.out.println ("Ocorreu o erro quando a imagem do código de verificação é gerada:" + e.toString ()); //} // this.image = entrada this.image = image;/* atribua imagem*/}/** Obtenha cor aleatória para um determinado intervalo*/ color privado getRandcolor (int fc, int bc) {aleatório = novo aleatório (); if (fc> 255) fc = 255; if (bc> 255) bc = 255; int r = fc + aleatoriamente.nextInt (bc - fc); int g = fc + aleatoriamente.nextInt (bc - fc); int b = fc + aleatoriamente.nextInt (bc - fc); retornar nova cor (R, G, B); }} Por fim, vamos explicar: o interceptador de login deve liberar o caminho para gerar o código de verificação! O Login Interceptor deve liberar o caminho para gerar código de verificação! ! O Login Interceptor deve liberar o caminho para gerar código de verificação! ! ! Diga coisas importantes três vezes ~~
Última exibição:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.