验证码:
- 创建缓存图片:指定宽width=90,height=30
- 获取画笔对象
- 设置画笔颜色
- 填充矩形区域
- 从字符数组中随机得到字符 char[] arr = { ‘A’, ‘B’, ‘C’, ‘D’, ‘N’, ‘E’, ‘W’, ‘b’, ‘o’, ‘y’, ‘1’, ‘2’, ‘3’, ‘4’,‘5’,‘6’ };
- 循环4次,画4个字符
- 设置字的颜色为随机
- 设置字体,大小为18,
- 将每个字符画到图片,x增加,y不变。10+(i*20), 20
- 线的位置是随机的,x范围在width之中,y的范围在height之中。
- 画8条干扰线,每条线的颜色不同
- 将缓存的图片输出到响应输出流中
验证码Servlet代码
@WebServlet(name = "PicCodeServlet", urlPatterns = "/code")
public class PicCodeServlet extends HttpServlet {
//创建一个随机类
private Random ran = new Random();
//写一个方法随机生成一种颜色
private Color getRandomColor() {
//随机生成0~255之间的数
int red = ran.nextInt(256);
int green = ran.nextInt(256);
int blue = ran.nextInt(256);
//红,绿,蓝
return new Color(red, green, blue);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 创建缓存图片
int width = 90, height = 30;
//参数:宽,高,图片模式
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//2. 获取画笔对象
Graphics graphics = img.getGraphics();
//3. 设置画笔颜色
graphics.setColor(Color.WHITE);
//4. 填充矩形区域
graphics.fillRect(0, 0, width, height);
//5. 从字符数组中随机得到字符
char[] arr = {
'A', 'B', 'C', 'D', 'N', 'E', 'W', 'b', 'o', 'y',