java web中图片验证码功能的简单实现方法

网友投稿 302 2023-07-13


java web中图片验证码功能的简单实现方法

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

大概步骤是:

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.IOExcepthttp://ion;

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 stub

int 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 CYEjCuiB= 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

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java多线程编程中ThreadLocal类的用法及深入
下一篇:Java的字符读写类CharArrayReader和CharArrayWriter使用示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~