java web中图片验证码功能实现

来源:互联网 发布:java运行原理 编辑:程序博客网 时间:2024/06/05 19:33

用户在注册网站信息的时候基本上都要数据验证码验证。那么图片验证码功能该如何实现呢?

大概步骤是:

1.在内存中创建缓存图片

2.设置背景色

3.画边框

4.写字母

5.绘制干扰信息

6.图片输出

废话不多说,直接上代码

package com.lsgjzhuwei.servlet.response;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.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class VerificationCode */@WebServlet(asyncSupported = true, urlPatterns = { "/VerificationCode" })public class VerificationCode extends HttpServlet {private static final long serialVersionUID = 1L;           /**     * @see HttpServlet#HttpServlet()     */    public VerificationCode() {        super();        // TODO Auto-generated constructor stub    }/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubint width = 120;int height = 30;//创建一张内存中的缓存图片BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);///背景色//通过graphics绘制图像Graphics graphics = bufferedImage.getGraphics();//设置颜色graphics.setColor(Color.yellow);//填充graphics.fillRect(0, 0, width, height);///画边框graphics.setColor(Color.blue);graphics.drawRect(0, 0, width-1, height-1);//写字母String content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcedfghijklmnopqrstuvwxyz1234567890";Random random = new Random();//设置字体颜色graphics.setColor(Color.red);//设置字体及大小graphics.setFont(new Font("宋体", Font.BOLD, 20));int x=20;int y=20;for(int i = 0; i < 4; i++){int index = random.nextInt(content.length());char letter = content.charAt(index);graphics.drawString(letter+" ", x, y);x = x+20;}//绘制干扰线int x1;int x2;int y1;int y2;graphics.setColor(Color.LIGHT_GRAY);for(int i = 0;i <50;i++){x1=random.nextInt(width);x2=random.nextInt(width);y1=random.nextInt(height);y2=random.nextInt(height);graphics.drawLine(x1, y1, x2, y2);}//将图片输出到浏览器//将内存的图片通过浏览器输出流输出成jpg图片ImageIO.write(bufferedImage, "jpg", response.getOutputStream());}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub}}


0 0
原创粉丝点击