package com;
import javax.imageio.ImageIO;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
@WebServlet(name = "VerifyCodeServlet", urlPatterns = "/code")
public class VerifyCodeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int width = 100;
int height = 30;
String data = "abcdefghijklmncpqrst01234567890";
Random random = new Random();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics graphics = image.getGraphics();
graphics.setColor(Color.gray);
graphics.fillRect(0, 0, width, height);
graphics.setColor(Color.black);
for (int i = 0; i < 4; i++) {
int position = random.nextInt(data.length());
String randomStr = data.substring(position, position + 1);
graphics.drawString(randomStr, width / 5 * (i + 1), 15);
}
ImageIO.write(image, "jpg", response.getOutputStream());
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>切换验证码</h2>
<script>
function changeImageCode() {
document.getElementById('btn').isDisabled=true;
document.getElementById('identity').src='code?ts='+new Date().getTime();
}
</script>
<image src="code" id="identity" onload="btn.disable=false;" style="cursor:pointer; vertical-align:middle">
</image>
<input type="button" value="看不清,更换验证码" onclick="changeImageCode()" id="btn" style="vertical-align:middle">
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: pan
Date: 2021/7/14
Time: 12:14
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
HelloWorld
</body>
<div class="col-sm-3">
<img src="${pageContext.request.contextPath}/code">
</div>
</body>
</html>