后台生成一个随机的英文与数字组合的验证码

简介: 后台生成一个随机的英文与数字组合的验证码
@CrossOrigin(origins = "http://192.168.10.110:2501",maxAge = 3600,allowCredentials = "true")
@RestController
@RequestMapping("/checkCode")
public class CheckCode extends HttpServlet {
    @PostMapping("/check")
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));//支持跨域请求
        response.setHeader("Access-Control-Allow-Methods", "*");
        response.setHeader("Access-Control-Allow-Credentials", "true");//是否支持cookie跨域
        //response.setHeader("Access-Control-Allow-Headers", "Authorization,Origin, X-Requested-With, Content-Type, Accept,Access-Token");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
        //服务器通知浏览器不要缓存
        response.setHeader("Pragma","no-cache");
        response.setHeader("Cache-Control","no-cache");
        response.setHeader("expires","0");
        response.setDateHeader("Expires",0);
        //在内存中创建一个长80,宽30的图片,默认黑色背景
        //参数一:长
        //参数二:宽
        //参数三:颜色
        int width = 80;
        int height = 30;
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        //获取画笔
        Graphics g = image.getGraphics();
        //设置画笔颜色为灰色
        g.setColor(Color.GRAY);
        //填充图片
        g.fillRect(0,0, width,height);
        //产生4个随机验证码,12Ey
        String checkCode = getCheckCode();
        //将验证码放入HttpSession中
        request.getSession().setAttribute("CHECKCODE_SERVER",checkCode);
        HttpSession session = request.getSession();
        System.out.println(session.getId());
        HttpPost httpPost=new HttpPost();
        httpPost.setHeader("SessionId",session.getId());
        //设置画笔颜色为黄色
        g.setColor(Color.YELLOW);
        //设置字体的小大
        g.setFont(new Font("黑体",Font.BOLD,24));
        //向图片上写入验证码
        g.drawString(checkCode,15,25);
        //将内存中的图片输出到浏览器
        //参数一:图片对象
        //参数二:图片的格式,如PNG,JPG,GIF
        //参数三:图片输出到哪里去
        ImageIO.write(image,"PNG",response.getOutputStream());
    }
    /**
     * 产生4位随机字符串
     */
    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();
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }
}
目录
相关文章
|
负载均衡 算法 druid
【Java多数据源实现教程】实现动态数据源、多数据源切换方式(下)
【Java多数据源实现教程】实现动态数据源、多数据源切换方式(下)
1720 0
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
什么是智能搜索
智能搜索融合了人工智能和大数据技术,提供高效的语义理解、多模态数据处理及个性化推荐。它不仅支持传统关键词匹配,还结合NLP、机器学习等先进技术,提升信息检索的精准度与多样性。适用于电商、内容平台、多媒体及企业内部知识库等多种场景,显著优化用户体验和业务效率。
1214 2
|
机器学习/深度学习 Rust JavaScript
Github 2024-06-24 开源项目周报 Top15
根据Github Trendings的统计,本周(2024年6月24日统计)共有15个项目上榜。按开发语言分类,项目数量如下:JavaScript项目5个,Python项目5个,TypeScript项目2个,Go项目2个,Dockerfile项目1个,C#项目1个,Java项目1个,Jupyter Notebook项目1个,Rust项目1个,Dart项目1个,Tcl项目1个。
363 0
|
9月前
|
人工智能 自然语言处理 安全
纷享销客与销售易CRM系统国际化能力:谁更胜一筹?
随着中国企业出海从“简单卖货”向“深度运营”转变,CRM系统的国际化能力愈发重要。纷享销客与销售易作为国内领先的CRM厂商,均提出“国际化”战略,但在多语言支持、多币种管理、地区与时区管理、全球访问能力、安全合规及服务能力等方面存在显著差异。本文旨在对比两家厂商在国际化能力方面的水平差异,帮助国际化企业更好进行CRM系统选型,助力本土企业出海实践。
|
算法 网络协议 网络安全
政务单位免费IP地址SSL证书
政务单位申请免费IP地址SSL证书需先确认IP地址为公网IP并拥有管理权限,选择如JoySSL等提供免费测试证书的服务商。申请流程包括注册账号、选择证书类型、提交申请、验证信息、等待审核签发、下载安装证书。注意事项包括安全性、合规性、定期更新及技术支持。通过合理配置,可提升网站安全性和公信力。
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
288 5
|
Oracle 关系型数据库 数据库
关系型数据库Oracle死锁
【7月更文挑战第16天】
306 3
|
数据采集 搜索推荐 算法
Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐
Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐
|
数据可视化
Excel实例:Excel图表可视化:条形图、折线图、散点图和步骤图
Excel实例:Excel图表可视化:条形图、折线图、散点图和步骤图
|
测试技术 Python
App自动化测试中,如何更好地处理弹窗?
在App自动化测试中,处理弹窗异常是保证测试稳定性和可靠性的重要环节。当遇到广告弹窗、升级提示等不定时出现的UI元素时,可以采用黑名单处理方法,如上述Python代码示例,通过尝试点击黑名单中的元素来避免干扰。同时,利用异常处理装饰器可以增强函数功能,保持代码整洁,当异常发生时记录日志、截图并保存页面源代码,便于问题排查。这两种策略能有效提升测试的效率和质量。