后端代码:
package priv.lwx.servlet.sl.web;
/**
* description
*
* @author liaowenxiong
* @date 2022/3/25 09:56
*/
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;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
@WebServlet("/PlainCheckCodeServlet")
public class PlainCheckCodeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/png");
// 在内存中构造一个图像对象
BufferedImage image = new BufferedImage(45, 20, BufferedImage.TYPE_INT_RGB);
// 创建随机数对象
Random r = new Random();
// 获得画笔,并且转换成2D画笔Graphics2D,因为Graphics2D可以去锯齿,Graphics2D是Graphics的子类
Graphics2D g = (Graphics2D)image.getGraphics();
// 随机设置画笔的颜色
// g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
g.setColor(Color.BLUE);
// 填充矩形,其实就是填充背景色
g.fillRect(0, 0, 60, 20);
// 设置画笔的颜色
g.setColor(new Color(0, 0, 0));
// 设置字体、样式、大小
Font font = new Font("宋体", 0, 10);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 抗锯齿
g.setFont(font);
// 随机获取0~99998之间的数值
String number = String.valueOf(r.nextInt(99999));
// 把获取到的数值绘入图片对象中
g.drawString(number, 5, 15);
// 获得字节输出流,因为要输出的是图像压缩之后的字节数组,所以,不能用 PrintWriter。
OutputStream os = response.getOutputStream();
// 获取图片压缩编码器
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);// 这是Sun公司私有的API
// encoder.encode(image);
ImageIO.write(image, "png", os);
}
}
前端代码:
注册
window.onload = function () {
var image = document.getElementById("checkCode");
var rb = document.getElementById("rb");
image.onclick = function () {
image.src = "plain_check_code?" + Math.random();
};
rb.onclick = function () {
image.src = "plain_check_code?" + Math.random();
}
};
2009/11/20
main
注册
用户名:
真实姓名:
密码:
性别:
男
女
验证码:
换一张
ABC@126.com