java手动生成验证码

package test.response;


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


//手动生成验证码 将验证码输出到浏览器
public class Demo_03 extends HttpServlet{


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//GUI 图形用户界面
//java.awt.BufferdImage
//1.创建图片
int width=120;
int height=25;
//TYPE_INT_RGB创建一个不带透明的bufferedimage对象
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//2.向图片上画出验证码和干扰线 
//获取画笔
Graphics pen = img.getGraphics();
//设置图片背景色 
pen.setColor(Color.YELLOW);
//填充颜色
pen.fillRect(1, 1, width-2, height-2);
//设置边框颜色
pen.setColor(Color.GREEN);
//画边
pen.drawRect(0, 0, width-1, height-1);
//设置字体颜色
pen.setColor(Color.BLUE);
pen.setFont(new Font("微软雅黑",Font.BOLD|Font.ITALIC,15));
//生成验证码随机数 将随机数画到图片上 
String val = "";     
        
   Random r = new Random();     
   for(int i = 0; i < 5; i++)     
   {     
       String charOrNum = r.nextInt(2) % 2 == 0 ? "char" : "num"; // 输出字母还是数字     
                
       if("char".equalsIgnoreCase(charOrNum)) // 字符串     
       {     
           int choice = r.nextInt(2) % 2 == 0 ? 65 : 97; //取得大写字母还是小写字母     
           val += (char) (choice + r.nextInt(26));     
       }     
       else if("num".equalsIgnoreCase(charOrNum)) // 数字     
       {     
           val += String.valueOf(r.nextInt(10));     
       }     
   }
   pen.drawString(val, 20, 18);
// Random  r = new Random();
// int x=20;
// for(int i=0;i<4;i++){
// pen.drawString(r.nextInt(10)+"", x,20 );
// x+=20;
// }
//画干扰线
for(int i=0;i<5;i++){
//设置干扰线颜色
pen.setColor(Color.gray);
pen.drawLine(r.nextInt(width), r.nextInt(height),r.nextInt(width), r.nextInt(height));
}

ImageIO.write(img, "jpg", resp.getOutputStream());
}


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}

}

猜你喜欢

转载自blog.csdn.net/hokinhu/article/details/77937435