zoukankan      html  css  js  c++  java
  • web 验证码,草稿,可用

    登录界面:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>login</title>
    </head>
    <body>
        <!-- web3:项目名,在LoginServlet前必须加项目名,如果不加则默认视为工作空间地址 -->
        <form action="/web3/LoginServlet" method="post">
            username:<input type="text" name="username" /> <br><br>
            password:<input type="password" name="password" /><br><br>
            验证码:<img alt="验证码" src="/web3/RandomImageServlet"><br><br>
            <input type="submit" value="login"> <br>
        </form>
    </body>
    </html>
    View Code

    Servlet:

    public class RandomImageServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            resp.setContentType("image/jpeg");
            // 禁止浏览器缓存图片
            // 3种禁止缓存的头字段
            resp.setHeader("expires", "-1");
            resp.setHeader("cache-control", "no-cache");
            resp.setHeader("pragma", "no-cache");
    
            BufferedImage im = new BufferedImage(80, 40, BufferedImage.TYPE_INT_RGB);
            Graphics g = im.getGraphics();
            g.setColor(Color.WHITE);// 设置颜色
            g.fillRect(0, 0, 80, 40);// 填充颜色
            g.setColor(Color.BLACK);
            g.setFont(new Font("TimesRoman", Font.PLAIN, 20));
            String str = generateString();
            g.drawString(str, 15, 15);
    
            // g.drawLine(10, 1, 80, 40);
            paint(g);
            ImageIO.write(im, "jpg", resp.getOutputStream());
    
        }
    
        // 设置线宽
        public void paint(Graphics g) {
            Graphics2D g2d = (Graphics2D) g;
            Stroke st = g2d.getStroke();
            Stroke bs;
            // LINE_TYPE_DASHED
            bs = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL,
                    0, new float[] { 16, 4 }, 0);
            g2d.setStroke(bs);
            g2d.drawLine(10, 1, 80, 40);
    
            g2d.setStroke(st);
        }
    
        private String generateString() {
            String s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWZXY0123456789";
            int length = s.length();
            Random ran = new Random();
            StringBuilder sb = new StringBuilder();
            sb.append(s.charAt(ran.nextInt(length)));
            sb.append(s.charAt(ran.nextInt(length)));
            sb.append(s.charAt(ran.nextInt(length)));
            sb.append(s.charAt(ran.nextInt(length)));
            sb.append(s.charAt(ran.nextInt(length)));
            return sb.toString();
        }
    }
  • 相关阅读:
    鱼刺类_多线程应用v5.4.3 例程+模块
    易语云模块1.3版本下载
    逃跑吧少年辅助快乐羊儿吧
    刺激战场瞬灭助手 2019稳定版
    模拟人生4修身拉德兰连衣裙MOD下载
    atuodesk下载教程(含安装步骤)
    易语云模块-易语言邮件发送模块下载(含命令详解)
    Smail邮件客户端脚本源码-按键精灵源码
    易语言新浪发帖源码 post教程
    Sparticles汉化/英文/32位/64位下载
  • 原文地址:https://www.cnblogs.com/mada0/p/4778856.html
Copyright © 2011-2022 走看看