zoukankan      html  css  js  c++  java
  • 纯数字验证码

    登录时常常要用到验证码验证,下面是一个简单的纯数字验证码,详细代码见image.jsp,将每次生成的验证码文本直接存入session中,登录时方便后台从session中取值验证:

    <%@ page contentType="image/jpeg"
        import="java.awt.*,
    java.awt.image.*,java.util.*,javax.imageio.*"
        pageEncoding="utf-8"%>
    <%!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);
        }%>
    <%
        out.clear();//这句针对resin服务器,如果是tomacat可以不要这句
        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(getRandColor(160, 200));
        for (int i = 0; i < 155; 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);
        }
        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("sRand", sRand);
        g.dispose();
        ImageIO.write(image, "JPEG", response.getOutputStream());
    %>



  • 相关阅读:
    C# 文件夹的常用操作
    c语言学习笔记---预编译
    linux学习笔记
    c语言学习笔记---符号
    vim 编辑基础使用-----linux编程
    用pywinauto进行win32应用程序的测试
    Python中下划线的使用方法
    创建可维护的自动化验收测试
    Appium+Robotframework实现Android应用的自动化测试-1:Appium在Windows中的安装
    在中文windows下使用pywinauto进行窗口操作
  • 原文地址:https://www.cnblogs.com/vipzhou/p/4852084.html
Copyright © 2011-2022 走看看