java验证码怎么实现_简单的谈一下怎么Java的验证码的实现

package cn.utils;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

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;

/**

* 以下是完整的Java的验证码数字与字母

*/

public class ImgServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

Random r= new Random();

//     创建一个

private String codes  = "23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ";

//     随机生成字符

private char randomChar () {

int index = r.nextInt(codes.length());

System.err.println(index+"--"+codes.charAt(index));

return codes.charAt(index);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 1:声明图片的大小

int width = 60;

int height = 30;

// 2:

BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics g = img.getGraphics();

g.setColor(Color.WHITE);

g.fillRect(0, 0, width, height);

g.setFont(new Font("ST", Font.BOLD, 18));

r = new Random();

//声明一个字符串,用于保存4个字符

String sCode ="";

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

// 添加字符

String a = ""+randomChar();

System.err.println("000"+a);

sCode+=a;//串联字符串

g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));

g.drawString(a, i * 15, 10 + r.nextInt(20));

}

//放到session中去

request.getSession().setAttribute("sCode",sCode);

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

g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));

g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));

}

g.dispose();

//输出图片到浏览器

response.setContentType("image/jpeg");

ImageIO.write(img,"JPEG",response.getOutputStream());//字节码

}

private String drowString(Graphics g, String randomString, int i) {

// TODO Auto-generated method stub

return null;

}

}

搞定主要就是我的红色标记的地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值