java生成验证码实例_我爱Java系列---【Java生成验证码案例】

登录页面

.biao{

width: 500px;

height: 300px;

border: 2px solid black;

margin: 100px auto;

align-items: center;

}

.login{

margin: 0 auto;

}

checkcode

function changeImg(obj) {

// alert("切换验证码");

//修改修改src

obj.src = "/web11/checkcode?time=" + Date.now();

}

2.Servlet代码

@WebServlet(urlPatterns = "/checkcode")

public class CheckServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String t = request.getParameter("t");

System.out.println("time : " + t);

// 生成随机字符 ,打印到控制台

String code = getCodeString();

System.out.println(code);

// 生成图片

BufferedImage checkImg = ImgUtils.getCheckImg(code);

// 将画布显示在浏览器中

ImageIO.write(checkImg, "jpg", response.getOutputStream());

}

public String getCodeString() {

// 准备数据

String data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

// 准备随机对象

Random r = new Random();

// 声明一个变量 保存验证码

StringBuilder code = new StringBuilder();

// 书写4个随机字符

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

// 将新的字符 保存到验证码中

code.append(data.charAt(r.nextInt(data.length())));

}

return code.toString();

}

}

3.工具类代码

package util;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.util.Random;

public class ImgUtils {

public static BufferedImage getCheckImg(String code) {

Random r = new Random();

// 创建画布

int width = 120;

int height = 40;

BufferedImage bufferedImage = new BufferedImage(width, height,

BufferedImage.TYPE_INT_RGB);// 获得画笔

Graphics g = bufferedImage.getGraphics();

// 填充背景颜色

g.setColor(Color.orange);

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

// 绘制边框

g.setColor(Color.BLACK);

g.drawRect(0, 0, width - 1, height - 1);

// 设置字体

g.setFont(new Font("宋体", Font.BOLD, 28));

// 绘制干扰线

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

// 设置随机颜色

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

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

r.nextInt(height));

}

// 书写4个字符

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

String ch = code.charAt(i) + "";

// 设置随机颜色

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

g.drawString(ch, 10 + i * 28, 30);

}

return bufferedImage;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值