• jsp 验证码以及验证码局部刷新


    1.验证码的代码是在网上搜罗的,是底纹乱线类的数字验证:

    authcode.jsp: 每次调用都会在 session 中添加一个属性,验证用户输入是否正确是只需再取出和输入内容比较即可

    <%@ page contentType="image/JPEG"  
    import
    ="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"
    pageEncoding
    ="GBK"%>
    <%!Color getRandColor(int fc, int bc) {//给定范围获得随机颜色
    Random random
    = new Random();
    if (fc > 255)
    fc
    = 255;
    if (bc > 255)
    bc
    = 255;
    int r = fc + random.nextInt(bc - fc);
    int g = fc + random.nextInt(bc - fc);
    int b = fc + random.nextInt(bc - fc);
    return
    new Color(r, g, b);
    }
    %>
    <%
    //设置页面不缓存
    response.setHeader(
    "Pragma", "No-cache");
    response.setHeader(
    "Cache-Control", "no-cache");
    response.setDateHeader(
    "Expires", 0);

    // 在内存中创建图象
    int width = 60, height = 20;
    BufferedImage image
    = new BufferedImage(width, height,
    BufferedImage.TYPE_INT_RGB);

    // 获取图形上下文
    Graphics g
    = image.getGraphics();

    //生成随机类
    Random random
    = new Random();

    // 设定背景色
    g.setColor(getRandColor(
    200, 250));
    g.fillRect(
    0, 0, width, height);

    //设定字体
    g.setFont(
    new Font("Times New Roman", Font.PLAIN, 18));

    //画边框
    //g.setColor(new Color());
    //g.drawRect(0,0,width-1,height-1);

    // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
    g.setColor(getRandColor(
    160, 200));
    for (int i = 0; i < 100; i++) {
    int x = random.nextInt(width);
    int y = random.nextInt(height);
    int xl = random.nextInt(12);
    int yl = random.nextInt(12);
    g.drawLine(x, y, x
    + xl, y + yl);
    }

    // 取随机产生的认证码(4位数字)
    String sRand = "";
    for (int i = 0; i < 4; i++) {
    String rand = String.valueOf(random.nextInt(10));
    sRand
    += rand;
    // 将认证码显示到图象中
    g.setColor(
    new Color(20 + random.nextInt(110), 20 + random
    .nextInt(
    110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
    g.drawString(rand,
    13 * i + 6, 16);
    }

    // 将认证码存入SESSION
    session.setAttribute(
    "code", sRand);

    // 图象生效
    g.dispose();

    // 输出图象到页面
    ImageIO.write(image,
    "JPEG", response.getOutputStream());
    %>

    2. 调用以及刷新:

      <form action="welcome.jsp" method="post" name="loginform">

    输入验证码:<input type="text" name="authcode" maxlength="4" size="10">
    <img id="codeimg" name="codeimg" border=0 src="authcode.jsp">
    <a href="javascript:reloadImage('authcode.jsp')">看不清</a><br/>

    </form>
    </center>
    <script language="javascript" type="text/javascript">
    function reloadImage(imgurl){
    var getimagecode=document.getElementById("codeimg");
    getimagecode.src
    = imgurl + "?id=" + Math.random();
    }
    </script>


     

  • 相关阅读:
    廖大python实战项目第六天
    廖大python实战教程第七天
    廖大python实战项目第五天
    Map的遍历方法及字符计数
    事务详解
    java设计模式详解
    程序员常见一些英文缩写
    Hibernate小笔记
    Myeclipse有关的问题
    hibernate对象的三种状态及转换
  • 原文地址:https://www.cnblogs.com/lihuiyy/p/2220272.html
Copyright © 2020-2023  润新知