servlet中response实现验证码功能
发布日期:2021-05-06 18:58:21 浏览次数:30 分类:技术文章

本文共 1742 字,大约阅读时间需要 5 分钟。

package cn.edu.hbue.wmp;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","3");        //内存中创建图片        BufferedImage image = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);        //得到图片        Graphics2D g = (Graphics2D) image.getGraphics(); //笔        //设置图片的背景颜色        g.setColor(Color.white);        g.fillRect(0,0,80,20);        //给图片写数据        g.setColor(Color.BLUE);        g.setFont(new Font(null,Font.BOLD,20));        g.drawString(makeNum(),0,20);        //告诉浏览器,这个请求用图片的方式打开        resp.setContentType("image/jpeg");        //网站存在缓存,不让浏览器缓存        resp.setDateHeader("expires",-1);        resp.setHeader("Cache-Control","no-cache");        resp.setHeader("Pragma","no-cache");        //把图片写给浏览器        ImageIO.write(image,"jpg", resp.getOutputStream());    }    //生成随机数    private String makeNum(){        Random random = new Random();        String num = random.nextInt(9999999) + "";        StringBuffer sb = new StringBuffer();        for (int i = 0; i < 7-num.length() ; i++) {            sb.append("0");        }        num = sb.toString() + num;        return num;    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doGet(req, resp);    }}

效果:浏览器出现动态验证码

上一篇:idea 写web项目图片不显示
下一篇:IDEA导入JDBC驱动

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月27日 15时21分36秒