网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > J2EE > Servlet/Jsp > 用servlet生成验证码  

用servlet生成验证码

2008-07-16  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

           g.setColor(getRandColor(160, 200));

中国网管联盟bitsCN.com

            //生成随机线条

中国网管联盟bitsCN.com

            for (int i = 0; i < 155; i++) {

中国网管论坛bbs.bitsCN.com

                int x = random.nextInt(width - 1);

网管联盟bitsCN_com

                int y = random.nextInt(height - 1);

网管论坛bbs_bitsCN_com

                int xl = random.nextInt(6) + 1;

网管u家bitscn.net

                int yl = random.nextInt(12) + 1;

网管bitscn_com

                g.drawLine(x, y, x + xl, y + yl);

网管bitscn_com

            }

网管朋友网www_bitscn_net

            for (int i = 0; i < 70; i++) { 网管朋友网www_bitscn_net

                int x = random.nextInt(width - 1);

网管朋友网www_bitscn_net

                int y = random.nextInt(height - 1);

网管下载dl.bitscn.com

                int xl = random.nextInt(12) + 1; 中国网管论坛bbs.bitsCN.com

                int yl = random.nextInt(6) + 1; 网管朋友网www_bitscn_net

                g.drawLine(x, y, x - xl, y - yl); 网管论坛bbs_bitsCN_com

            }

网管有家www.bitscn.net

 

网管bitscn_com

            String sRand = ""; 网管u家bitscn.net

            //生成随机的字符串并加入到图片中 网管u家www.bitscn.net

            int LEN = 2; //控制随机码的长度

中国网管联盟bitsCN.com

            for (int i = 0; i < LEN; i++) {

网管有家bitscn.net

                String tmp = getRandomChar();

网管u家u.bitsCN.com

                sRand += tmp;

网管网www.bitscn.com

                g.setColor(new Color(20 + random.nextInt(110), 20 + random 网管联盟bitsCN@com

                        .nextInt(110), 20 + random.nextInt(110))); 网管网www_bitscn_com

                g.drawString(tmp, 15 * i + 10, 15); 网管u家bitscn.net

            }

网管联盟bitsCN@com

  网管bitscn_com

            HttpSession session = request.getSession(true); 中国网管论坛bbs.bitsCN.com

            log.debug("随机生成的字符串为"+sRand); 网管论坛bbs_bitsCN_com

            //将其自动转换为小写。也就是说用户在输入验证码的时候,不需要区分大小写,方便输入。

网管网www.bitscn.com

            session.setAttribute("randomImageStr", sRand.toLowerCase());

网管下载dl.bitscn.com

            log.debug("从session中取出来"+session.getAttribute("randomImageStr"));

网管bitscn_com

            g.dispose();

网管论坛bbs_bitsCN_com

            ImageIO.write(image, "JPEG", response.getOutputStream()); 网管网www.bitscn.com

        } 网管朋友网www_bitscn_net

  网管有家bitscn.net

        /** 网管网www_bitscn_com

         * 随机生成字符串

中国网管论坛bbs.bitsCN.com

         * @return 网管论坛bbs_bitsCN_com

         */

网管u家bitscn.net

        private String getRandomChar() { 网管朋友网www_bitscn_net

            int rand = (int) Math.round(Math.random() * 2);

网管论坛bbs_bitsCN_com

            long itmp = 0; 网管联盟bitsCN@com

            char ctmp = '\u0000'; 中国网管论坛bbs.bitsCN.com

            switch (rand) { 中国网管联盟bitsCN.com

            case 1:

网管有家www.bitscn.net

                itmp = Math.round(Math.random() * 25 + 65); 中国网管联盟bitsCN.com

                ctmp = (char) itmp; 网管论坛bbs_bitsCN_com

                return String.valueOf(ctmp);

网管u家bitscn.net

            case 2:

网管u家www.bitscn.net

                itmp = Math.round(Math.random() * 25 + 97); 网管联盟bitsCN_com

                ctmp = (char) itmp; 网管u家bitscn.net

                return String.valueOf(ctmp); 网管论坛bbs_bitsCN_com

            default:

网管网www.bitscn.com

                itmp = Math.round(Math.random() * 9); 网管u家bitscn.net

                return String.valueOf(itmp);

网管u家www.bitscn.net

            }

网管网www_bitscn_com

        }

网管论坛bbs_bitsCN_com

    } 网管朋友网www_bitscn_net

    package com.work.core.image;

网管u家bitscn.net

 

网管联盟bitsCN_com

    import java.awt.Color; 中国网管论坛bbs.bitsCN.com

    import java.awt.Font;

网管联盟bitsCN@com

    import java.awt.Graphics;

网管联盟bitsCN_com

    import java.awt.image.BufferedImage;

网管下载dl.bitscn.com

    import java.io.IOException;

网管联盟bitsCN_com

    import java.util.Random; 网管u家www.bitscn.net

 

中国网管联盟bitsCN.com

    import javax.imageio.ImageIO; 中国网管论坛bbs.bitsCN.com

    import javax.servlet.ServletException; 中国网管联盟bitsCN.com

    import javax.servlet.http.HttpServlet;

网管u家www.bitscn.net

    import javax.servlet.http.HttpServletRequest;

网管联盟bitsCN_com

    import javax.servlet.http.HttpServletResponse;

网管联盟bitsCN_com

    import javax.servlet.http.HttpSession; 网管论坛bbs_bitsCN_com

  网管u家bitscn.net

    import org.apache.commons.logging.Log; 网管u家www.bitscn.net

    import org.apache.commons.logging.LogFactory; 网管联盟bitsCN@com

  网管u家u.bitsCN.com

    /** 网管朋友网www_bitscn_net

     * @author wangmj

中国网管联盟bitsCN.com

     * 生成随机的验证码!防止暴利破解。

网管bitscn_com

     */

网管u家bitscn.net

    public class AuthImage extends HttpServlet { 网管u家www.bitscn.net

     private static Log log = LogFactory.getLog(AuthImage.class);

网管联盟bitsCN@com

     /** 网管论坛bbs_bitsCN_com

      *

网管下载dl.bitscn.com

      */

网管u家u.bitscn@com

     private static final long serialVersionUID = 8165458985542870320L; 网管有家www.bitscn.net

    //设置图形验证码中的字符串的字体的大小 网管u家u.bitsCN.com

     private Font mFont = new Font("Arial Black", Font.PLAIN, 16);

网管u家u.bitsCN.com

  网管网www_bitscn_com

     public void init() throws ServletException {

网管u家u.bitsCN.com

      super.init(); 网管网www.bitscn.com

     }

网管网www_bitscn_com

  网管网www_bitscn_com

     /** 网管论坛bbs_bitsCN_com

  网管网www_bitscn_com

中国网管论坛bbs.bitsCN.com

TAGs   验证   生成       int   import   random.nextInt   <   fc   //      
 上一篇:JSP/Servlet伪静态网页实现   下一篇:用JOTM向Servlet中添加事务
用servlet生成验证码 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: