public class ImageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setHeader("refresh", "3");
// 在内存中创建一个图片
BufferedImage image = new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB);
// 得到图片
Graphics2D g2d = (Graphics2D)image.getGraphics();
// 设置图片的背景颜色
g2d.setColor(Color.white);
g2d.fillRect(0, 0, 80, 20);
// 给图片写随机数
g2d.setColor(Color.blue);
g2d.setFont(new Font(null, Font.BOLD, 20));
g2d.drawString(makeNum(), 20, 20);
// 告诉浏览器,这个请求用浏览器打开
resp.setContentType("image/jpeg");
// 网站存在缓存 不让浏览器缓存
resp.setDateHeader("expires", -1);
resp.setHeader("cache-Control", "no-cache");
resp.setHeader("Pragma", "no-cache");
// 把图片写给浏览器
boolean write = ImageIO.write(image, "jpg", resp.getOutputStream());
}
// 生成随机数
private String makeNum() {
Random random = new Random();
String num = random.nextInt(9999) + "";
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < 4-num.length(); i++) {
stringBuffer.append("0");
}
num = stringBuffer.toString() + num;
return num;
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
Java后端实现验证码
最新推荐文章于 2024-08-09 09:37:41 发布