Response验证码

验证码功能

  1. 前端实现:js
  2. 后端实现:Java的image(图片类),生成一个图片,响应到前端。

StringBuffer缓存区设置

屏幕截图 2025-09-03 094230
append方法返回StringBuffer类的实例化类对象。

public class StringBufferDemo01{
	public static void main(String args[]){
		StringBuffer buf = new StringBuffer() ;	// 声明StringBuffer对象 
		buf.append("Hello ") ;					// 向StringBuffer中添加内容
		buf.append("World").append("!!!") ;		// 可以连续调用append()方法
		buf.append("\n") ;						// 添加一个转义字符
		buf.append("数字 = ").append(1).append("\n") ;	// 添加数字
		buf.append("字符 = ").append('C').append("\n");	 // 添加字符
		buf.append("布尔 = ").append(true) ;	// 添加布尔值
		System.out.println(buf) ;			// 直接输出对象,调用toString()
	}
};

代码

package com.xin.servlet;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
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.util.Random;

public class ImageServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //浏览器五秒自动刷新
        resp.setHeader("refresh","5");
        //在内存中创建一个图片
        BufferedImage image = new BufferedImage(80, 20,BufferedImage.TYPE_3BYTE_BGR);
       //得到一支2d的笔
        Graphics2D graphics =(Graphics2D) image.getGraphics();
        //设置背景颜色
        graphics.setColor(Color.yellow);
        //设置形状
        graphics.fillRect(0,0,80,20);
        //给图片写数据
        graphics.setColor(Color.BLUE);
        graphics.setFont(new Font(null,Font.BOLD,20));
        graphics.drawString(makeNum(),0,20);
        //告诉浏览器,这个请求用图片的方式打开
        resp.setContentType("image/png");
        // resp.setContentType("image/jpeg");
        //网站存在缓存,不让浏览器缓存
        resp.setDateHeader("expires",-1);
        resp.setHeader("Cache-Control","no-Cache");
        resp.setHeader("Pragma","no-Cache");
        //把图片写给浏览器
        boolean write = ImageIO.write(image, "png",resp.getOutputStream());


    }
    //生成随机数
    private String makeNum(){
        Random random = new Random();
        String s = random.nextInt(99999) + "";
        StringBuffer sf = new StringBuffer();
        for (int i=0;i<5-s.length();i++){
            sf.append("0");
        }
        s = sf.toString() + s;
        return s;

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}
posted @ 2025-09-03 10:04  xixixixin  阅读(10)  评论(0)    收藏  举报