码迷,mamicode.com
首页 > 其他好文 > 详细

项目中的算法(1)--验证码

时间:2014-07-29 21:52:42      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:验证码   web   算法   

都说算法程序的灵魂,在一个工程项目中有时会用到很多的算法,算法的好坏很大程度上对程序的运行效率和代码的冗余度有很重要的影响。在本练习中用到了一个很简单的算法,这个程序的目的是模仿web页面中常出现的验证码问题,每次刷新都是不一样的验证码。此代码是站在servlet的角度写到浏览器中的。

代码示例:

package cn.wwh.www.web.response;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
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;


import org.junit.Test;

/**
 *类的作用:产生四个随机数,1,3是数字2,4位是英文字母
 * 
 * 
 *@author 一叶扁舟
 *@version 1.0
 *@创建时间: 2014-7-28 下午07:44:32
 */
public class RandomNum extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//在内存中创建一个图片
BufferedImage bi = new  BufferedImage(65, 40,BufferedImage.TYPE_INT_ARGB);
              //获得内存图片的画笔
Graphics  gp = bi.getGraphics();
// 设置字体的样式和大小
gp.setFont(new Font("黑体",Font.BOLD,20));
               //设置字体的颜色
gp.setColor(Color.red);
               //向内存图片绘制字体
gp.drawString(getRandChar(), 10, 30);
              //将图片写出到浏览器
ImageIO.write(bi, "jpg", response.getOutputStream());
}

public String  getRandChar() {
String str = "1234567890abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int len = str.length();
String randChar = "";
for (int i = 0; i < 4; i++) {
if (i % 2 == 0) {
while (true) {
Random ran = new Random();
int indext = ran.nextInt(len);
String ch = str.substring(indext, indext + 1);
System.out.println(i+":"+ch);
if (ch.matches("[0-9]")) {
randChar += ch;
break;
}
}
} else {
while (true) {
Random ran = new Random();
int indext = ran.nextInt(len);
String ch = str.substring(indext, indext + 1);
System.out.println(i+":"+ch);
if (ch.matches("[a-zA-Z]")) {
randChar += ch;
break;
}
}
}
}
System.out.println("最后的四个字符;"+randChar);
return randChar;
}
}

测试代价效果图:

浏览器中的效果图:

bubuko.com,布布扣

控制台的输出结果图;
bubuko.com,布布扣

项目中的算法(1)--验证码,布布扣,bubuko.com

项目中的算法(1)--验证码

标签:验证码   web   算法   

原文地址:http://blog.csdn.net/u011662320/article/details/38277851

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!