我的日常

登录/注册
您现在的位置:论坛 新手区 新手报道 > 新人<T参谋长>报到
总共48086条微博

动态微博

查看: 538|回复: 1

[男生] 新人<T参谋长>报到

[复制链接]

14

主题

1

听众

284

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2016-04-25 18:19:52 |只看该作者 |倒序浏览
//关于验证码的生成,请指教,有哪些不足
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class valist extends HttpServlet {
        //字体
        private final Font font  = new Font("微软雅黑",Font.PLAIN,15);
        private final int lineWidth = 2;
        private final int width = 90;
        private final int height = 25;
        //图片需要的障碍点
        private final int count = 200;
       
        //字体所循环输出不同的颜色
        private Color getRandColor(int fc,int bc){
                final Random random = new Random();
                if(fc > 255){
                        fc = 255;
                }
                if(bc > 255){
                        bc = 255;
                }
                final int r = fc + random.nextInt(bc-fc);
                final int g = fc + random.nextInt(bc-fc);
                final int b = fc + random.nextInt(bc-fc);
                return new Color(r,g,b);
        }
       
       
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {

                doPost(request, response);
        }

        public void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
                //禁止缓存
                response.setHeader("Pragma", "No-cache");
                response.setHeader("Cache-control", "no-cache");
                response.setDateHeader("Expires", 0);
                response.setContentType("image/gif");
               
               
                //画出图片
                final BufferedImage buff = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
                final Graphics2D g = (Graphics2D)buff.getGraphics();
               
                //随机数
                final Random random = new Random();
               
                //字体颜色
                g.setColor(getRandColor(200,255));
               
                //填充
                g.fillRect(0, 0, width, height);
                g.setFont(font);
                g.drawRect(0, 0, width - 1, height -1);
               
               
                //循环输出图片的障碍小点
                for(int i = 0; i<count; i++){
                        g.setColor(getRandColor(150,200));
                        final int x = random.nextInt(width - lineWidth) + 1;
                        final int y = random.nextInt(height - lineWidth) + 1;
                        final int xl = random.nextInt(lineWidth);
                        final int yl = random.nextInt(lineWidth);
                        g.drawLine(x, y, x + xl, y+yl);
                }
                //图片随机数字
                String sRand = "";
                for(int i = 0; i < 4;i++){
                        final String rand = String.valueOf(random.nextInt(10));
                        sRand += rand;
                        g.setColor(new Color(20 + random.nextInt(130),
                                                20 +random.nextInt(130),20 + random.nextInt(130)));
                        g.drawString(rand, (13 * i) + 6,16);
                }
               
                //存在session会话中,用来判断用户输入的是否正确
                request.getSession().setAttribute("vali", sRand);
                System.out.println(sRand+"-------------");
               
               
                g.dispose();
               
                //转成输出流,写入到页面
                final OutputStream os = response.getOutputStream();
               
                ImageIO.write(buff, "PNG" , os);
                os.flush();
                os.close();
        }

       
}

性别* :男
年龄* :23
爱好* :足球,跑步
怎么来到论坛的* :百度看到的
喜欢论坛哪个板块* :源码怎么得不到
对论坛的建议* :能不能要求低点,源码真难得



我的日常 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与我的日常享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和我的日常的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、我的日常管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表