后台生成图片验证码的方法

先写两个工具类:

1.生成随机数的

package com.bgs.utils;

public class RandomNumberUtil {

    public static String getRandomNumber4(){
        String code = "";
        for(int i=0;i<4;i++){
            int random = (int)(Math.random()*10);
            code += String.valueOf(random);
        }
        return code;
    }

    public static String getRandomNumber6(){
        String code = "";
        for(int i=0;i<6;i++){
            int random = (int)(Math.random()*10);
            code += String.valueOf(random);
        }
        return code;
    }
}

2.生成图片的 :这个生成图片的需要传入一个字符串进去

package com.bgs.utils;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;
public class ImageVerifyCodeUtil {
    public static BufferedImage getBufferedImage(String capstr){
        int width = 80;
        int height = 32;
        //create the image
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        // set the background color
        g.setColor(new Color(0xDCDCDC));
        g.fillRect(0, 0, width, height);
        // draw the border
        g.setColor(Color.black);
        g.drawRect(0, 0, width - 1, height - 1);
        g.setColor(new Color(0, 100, 0));
        g.setFont(new Font("Candara", Font.BOLD, 24));
        g.drawString(capstr, 8, 24);
        g.dispose();
        return image;
    }
}

 3.controller:

//生成图片验证码的方法
@RequestMapping("/findVerifyPictureCode")
public void findVerifyPictureCode(HttpSession session, HttpServletResponse response){
    //告诉客户端,输出的格式
    response.setContentType("image/jpeg");
    String randomNumber4 = RandomNumberUtil.getRandomNumber4();    //生成随机数
    BufferedImage bufferedImage = ImageVerifyCodeUtil.getBufferedImage(randomNumber4);  把随机数传入生成图片
    try {
        ImageIO.write(bufferedImage, "JPG", response.getOutputStream());  //把图片写回到前台
        session.setAttribute("randomCode",randomNumber4);     //将生成的验证码存入session
    } catch (IOException e) {
        e.printStackTrace();
    }
} 

4.前台代码,记得把src中的路径改为访问controller的路径

<img id="servletImg" src="${pageContext.request.contextPath}/managerUser/findVerifyPictureCode" onclick="javascript:changImg()"/>
<script type="text/javascript">
    function changImg(){
        var img = document.getElementById("servletImg");
        var d = new Date();
        var time = d.getTime();//如果没有这个
        //下面这一句不会起作用,因为浏览器的缓存技术,图片并不会刷新
        //img.src="/myHelloWeb/servlet/ImageServlet";
        img.src="${pageContext.request.contextPath}/managerUser/findVerifyPictureCode?"+time;
        //?号后面的东西是通过get方式传递的
    }

</script>

这样就可以啦!写完这个博客又可以愉快的去玩耍啦!

猜你喜欢

转载自blog.csdn.net/qq_43154385/article/details/85000954
今日推荐