栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java注册、登录界面通用验证码实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java注册、登录界面通用验证码实现

package cn.mengnalisa.web.servlet;

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.util.Random;


@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //服务器通知浏览器不要缓存
        response.setHeader("pragma", "no-cache");
        response.setHeader("cache-control", "no-cache");
        response.setHeader("expires", "0");

        //在内存中创建一个长80,宽30的图片
        //参数一:长
        //参数二:宽
        int width = 80;
        int height = 35;
        //1.创建一对象,在内存中的图片(验证码图片对象)
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        //2.美化图片
        Graphics g = image.getGraphics();//画笔对象
        g.setColor(Color.gray);//设置画笔颜色
        g.fillRect(0, 0, width, height);//填充图片

        //3.产生四位随机验证码
        String checkCode = getCheckCode();
        //将验证码存储到session
        request.getSession().setAttribute("checkCode_session", checkCode);

        //4.设置画笔颜色为黄色
        g.setColor(Color.YELLOW);
        //设置字体的小大
        g.setFont(new Font("黑体", Font.BOLD, 20));
        //向图片上写入验证码
        g.drawString(checkCode, 20, 25);

//        //5画干扰线
//        g.setColor(Color.white);//设置画笔为白色
//        Random ran = new Random();
//        //随机生成坐标点,并且画5条干扰线
//        for (int i = 0; i < 5; i++) {
//            int x1 = ran.nextInt(width);
//            int x2 = ran.nextInt(width);
//
//            int y1 = ran.nextInt(height);
//            int y2 = ran.nextInt(height);
//            g.drawLine(x1, y1, x2, y2);
//        }


        //将内存中的图片输出到浏览器
        //参数一:图片对象
        //参数二:图片的格式,如PNG,JPG,GIF
        //参数三:图片输出到哪里去
        ImageIO.write(image, "jpg", response.getOutputStream());

    }

    //获取四位随机数
    private String getCheckCode() {
        //随机数取值范围
        String base = "0123456789ABCDEFGabcdefg";
        //随机数组长度
        int size = base.length();
        //生成随机角标
        Random r = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 1; i <= 4; i++) {
            //产生0到size-1的随机值
            int index = r.nextInt(size);
            //在base字符串中获取下标为index的字符
            char c = base.charAt(index);
            //将c放入到StringBuffer中去
            sb.append(c);
        }
        return sb.toString();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446083.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号