zoukankan      html  css  js  c++  java
  • 简易验证码demo

    java 实现代码:

    package com..utils.yzm;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    import javax.imageio.ImageIO;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class SzYzmController {
    
        @RequestMapping("/yzmImage.do")
        public void yzmImage(HttpServletRequest request,HttpServletResponse response) throws IOException {
            response.setHeader("pragma", "no-cache");
            response.setHeader("cache-control", "no-cache");
            response.setHeader("expires", "0");
    
          //在内存中创建一个长80,宽30的图片,默认黑色背景
            int width = 80;
            int height = 30;
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
     
            //获取画笔,颜色为灰色
            Graphics g = image.getGraphics();
            g.setColor(Color.GRAY);
            //填充图片
            g.fillRect(0, 0, width, height);
     
            //产生4个随机验证码,12Ey
            String checkCode = getCheckCode();
    
            //将验证码放入HttpSession中
            request.getSession().setAttribute("checkCode", checkCode);
     
            //设置画笔颜色为黄色,字体的小大,并向图片上写入验证码
            g.setColor(Color.RED);
            g.setFont(new Font("微软雅黑", Font.BOLD, 24));
            g.drawString(checkCode, 15, 25);
     
            //将内存中的图片输出到浏览器
            //参数一:图片对象
            //参数二:图片的格式,如PNG,JPG,GIF
            //参数三:图片输出到哪里去
            ImageIO.write(image, "PNG", response.getOutputStream());
        }
    
     
        /**
         * 产生4位随机字符串
         */
        private String getCheckCode() {
            String base = "0123456789";
            int size = base.length();
            Random r = new Random();
            StringBuilder sb = new StringBuilder();
            for (int i = 1; i <= 4; i++) {
                //产生0到size-1的随机值
                int index = r.nextInt(size);
                //在base字符串中获取下标为index的字符
                char c = base.charAt(index);
                //将c放入到StringBuffer中去
                sb.append(c);
            }
            return sb.toString();
        }   
    }

    HTML 页面:

        <div class="form-group col-sm-6">
            <label class="col-sm-4 control-label">验证码:</label>
                <div class="col-sm-8">
                    <img id="checkImg" class="login-icon-yzm" src="<%=webRoot %>/yzmImage.do?codeType=checkCode" onClick="picReload(this)">
                    <input type="text" class="form-control"  id="imgCheck" placeholder="请输入验证码"  onkeyup="upperCase()">
                    <span id = "img" class="help-block2" style = "display : none;">&nbsp&nbsp请正确输入验证码</span>
                </div>
        </div>

    JS 控制:

        //刷新验证码
        function picReload(img) {    
            img.setAttribute('src', webRoot
                + '/yzmImage.do?codeType=checkCode & a='
                + Math.random());
        }
    
    
    
    
    或 在JS里 自动刷新: $("#checkImg").click();
  • 相关阅读:
    常见的行元素与块元素
    [转]SVN服务器部署并实现双机同步及禁止普通用户删除文件
    [转]Axure共享工程Shared Project(二):编辑修改和提交
    如何添加网络打印机
    [转]JSON 转换异常 死循环 There is a cycle in the hierarchy
    比较常用的Properties配置文件的使用方法示例
    解决Tomcat项目重复加载导致pemgen space内存溢出
    怎样批量删除.svn文件
    [转]前端工程师必须掌握的知识点
    Freemarker 使用
  • 原文地址:https://www.cnblogs.com/lifan12589/p/13530917.html
Copyright © 2011-2022 走看看