java 验证码

Java实现登录验证码 Java实现登录验证码login.htmlCheckNumber.java(util)login.jsUserManController.java实现效果 login.html 在login.html中,用session接收前台输入的验证码。 <input id="userCaptcha" name="userCaptcha" type="text" placeholder="请输入验证码" /> <img id="kaptchaImage" src="./UserMan/getChe 阅读详情
package com.subang.controller;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;


import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


/**
 * *
 * @author yxk
 * 生成验证码
 *
 */
@SuppressWarnings("serial")
@Controller
@RequestMapping("verify")
public class VerifyCodeUtil extends HttpServlet {
  // 验证码图片的宽度。         
    private int width = 60;         
    // 验证码图片的高度。         
    private int height = 20;         
    // 验证码字符个数         
    private int codeCount = 4;         
    private int x = 0;         
    // 字体高度         
    private int fontHeight;         
    private int codeY;         
    char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',         
            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',         
            'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };         
    /**       
     * 初始化验证图片属性       
     */        
    public void initxuan() throws ServletException {         
        // 从web.xml中获取初始信息         
        // 宽度         
        String strWidth ="80";         
        // 高度         
        String strHeight ="24";         
        // 字符个数         
        String strCodeCount = "4";         
        // 将配置的信息转换成数值         
        try {         
            if (strWidth != null && strWidth.length() != 0) {         
                width = Integer.parseInt(strWidth);         
            }         
            if (strHeight != null && strHeight.length() != 0) {         
                height = Integer.parseInt(strHeight);         
            }         
            if (strCodeCount != null && strCodeCount.length() != 0) {         
                codeCount = Integer.parseInt(strCodeCount);         
            }         
        } catch (NumberFormatException e) {         
        }         
        x = width / (codeCount + 1);         
        fontHeight = height - 2;         
        codeY = height - 4;         
    }   
    @RequestMapping(value="verifyCode",method=RequestMethod.GET)
    public void service(HttpServletRequest req, HttpServletResponse resp)         
            throws ServletException, java.io.IOException { 
        initxuan();
        // 定义图像buffer         
        BufferedImage buffImg = new BufferedImage(width, height,         
                BufferedImage.TYPE_INT_RGB);         
        Graphics2D g = buffImg.createGraphics();         
        // 创建一个随机数生成器类         
        Random random = new Random();         
        // 将图像填充为白色         
        g.setColor(Color.WHITE);         
        g.fillRect(0, 0, width, height);         
        // 创建字体,字体的大小应该根据图片的高度来定。         
        Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);         
        // 设置字体。         
        g.setFont(font);         
        // 画边框。         
        g.setColor(Color.BLACK);         
        g.drawRect(0, 0, width - 1, height - 1);         
        // 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。         
        g.setColor(Color.BLACK);         
        for (int i = 0; i < 10; i++) {         
            int x = random.nextInt(width);         
            int y = random.nextInt(height);         
            int xl = random.nextInt(12);         
            int yl = random.nextInt(12);         
            g.drawLine(x, y, x + xl, y + yl);         
        }         
        // randomCode用于保存随机产生的验证码,以便用户登录后进行验证。         
        StringBuffer randomCode = new StringBuffer();         
        int red = 0, green = 0, blue = 0;         
        // 随机产生codeCount数字的验证码。         
        for (int i = 0; i < codeCount; i++) {         
            // 得到随机产生的验证码数字。         
            String strRand = String.valueOf(codeSequence[random.nextInt(36)]);         
            // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。         
            red = random.nextInt(255);         
            green = random.nextInt(255);         
            blue = random.nextInt(255);         
            // 用随机产生的颜色将验证码绘制到图像中。         
            g.setColor(new Color(red, green, blue));         
            g.drawString(strRand, (i + 1) * x, codeY);         
            // 将产生的四个随机数组合在一起。         
            randomCode.append(strRand);         
        }         
        // 将四位数字的验证码保存到Session中。         
        HttpSession session = req.getSession();         
        session.setAttribute("validateCode", randomCode.toString());         
        // 禁止图像缓存。         
        resp.setHeader("Pragma", "no-cache");         
        resp.setHeader("Cache-Control", "no-cache");         
        resp.setDateHeader("Expires", 0);         
        resp.setContentType("image/jpeg");         
        // 将图像输出到Servlet输出流中。         
        ServletOutputStream sos = resp.getOutputStream();         
        ImageIO.write(buffImg, "jpeg", sos);         
        sos.close();         
    }         
}
10X Genomics数据实战:手把手教你用Seurat处理单细胞PBMC数据(附完整代码) 本文详细介绍了如何使用Seurat处理10X Genomics的单细胞PBMC数据,从数据获取、质控到降维分析和细胞分群的全流程。通过实战代码演示,帮助研究者掌握单细胞RNA测序数据分析的核心技术,提升对细胞异质性的理解。 阅读详情

相关推荐

避开这些坑!QMT多因子策略实盘中的5个常见错误及解决方案

本文深入剖析了在QMT平台上实施多因子策略时常见的5个错误,包括因子过拟合、数据延迟处理不当、因子失效、交易成本低估和风险控制缺失,并提供了实用的解决方案。通过优化因子筛选、数据对齐和动态管理,帮助量化交易者提升策略稳健性和实盘表现。

k5l6m的博客 238

【Java 进阶篇】Java Web开发:实现验证码功能

验证码是“全自动区分计算机和人类的公证测试”(Completely Automated Public Turing test to tell Computers and Humans Apart)的缩写。它是一种用于识别用户是否为真实人类的技术。验证码通常包括一个随机生成的字符串,用户需要在输入框中输入正确的字符串以证明他们不是机器人。验证码的主要目的是防止自动化机器人攻击,例如恶意注册帐户、暴力破解密码或发垃圾邮件。

繁依Fanyi的博客 6385

HybridCLR热更新打包报错全解析:从原理到实战解决方案

热更新技术是现代游戏和应用开发中实现动态内容交付与Bug修复的核心机制,它允许开发者在无需重新发布完整应用的情况下更新代码逻辑。其原理通常涉及在运行时加载并执行新的代码模块,这要求框架在底层实现安全的代码隔离、内存管理与元数据桥接。在Unity生态中,HybridCLR作为基于IL2CPP的高性能热更新解决方案,通过补充元数据和AOT泛型引用技术,实现了对C#代码的原生级热更支持,显著提升了开发迭代效率与线上问题修复能力。然而,在实际的工程实践中,尤其是在面向Android、iOS等多平台打包构建时,开发者

weixin_29017445的博客 309

Java实现验证码功能

验证码一般用于登陆界面的防机器验证,但自已写一个验证码组件较为麻烦,我们可以用ValidateCode组件来实现,以下通过两个示例来演示ValidateCode的用法,最后附jar包,可自行下载。生成验证码,调用该方法可以重新生成验证码,实例化对象时会自动调用该方法生成一个默认的验证码,后续可再次调用生成。实例化对象,指定宽度和高度,默认验证码位数为5为位,障碍线为150;实例化对象,指定宽度、高度、验证码位数、障碍线数量;将生成的验证码图像写入输出流对象,可用于web端。

2301_77042303的博客 5537

用LTspice仿真Buck电路输出电容:从参数计算到波形优化的全流程演示

本文详细介绍了使用LTspice仿真Buck电路输出电容的全流程,从理论计算到波形优化。通过解析关键参数如纹波电压、瞬态响应和ESR,结合工程计算方法和LTspice仿真技巧,帮助工程师优化Buck电路设计,解决输出纹波过大和瞬态响应不佳的问题。

night的博客 851

【AWS】创建aws云服务器EC2实例

本文介绍了如何创建aws的EC2云服务器,并介绍了如何使用Xshell远程连接上云服务器

Marcos921的博客 2501

Java实现登录验证码的功能

Java实现登录验证码的功能

沐雨橙风ιε的博客 1万+

Vitis 安装及环境配置

Vitis 官方手册 https://www.xilinx.com/html_docs/xilinx2020_1/vitis_doc/index.html Xilinx Downloads center https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vitis.html 系统要求如下图所示,Windows系统只能支持Vitis嵌入式系统开发流程,不能支持加速设计 1.安装ubuntu18.0

怠桑的博客 7051

Java验证码

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序验证码的作用:防止刷票、论坛灌水、刷页防止黑客恶意破解密码,盗取用户数据验证码通常使用一些线条和一些不规则的字符组成,主要作用是为了防止一些黑客把密码数据化盗取。

Shawn的个人博客 3726

YOLOv11改进 ,YOLOv11改进主干网络为MobileNetV3,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1936

使用 Tesseract 在 C# 中进行光学字符识别(OCR)

你可以根据需要对 Tesseract 进行自定义配置,例如设置识别的分辨率、识别模式等。// 只识别数字// 设置自定义变量本文只讲述了简单的使用方法,未涉及字库训练,识别的准确率与训练的字库有关。

仰望星空的博客 4733

短信验证码—Java实现

在业务需求中我们经常会用到短信验证码,比如手机号登录、绑定手机号、忘记密码、敏感操作等,都可以通过短信验证码来保证操作的安全性,于是就记录下了一次开发的过程。

idogbin的博客 1万+

基于Python实现人脸识别相似度对比

随着人工智能技术的不断进步,人脸识别成为了一种广泛应用的技术。人脸相似度对比是其中的一个重要应用场景,可以用于人脸搜索、身份验证等方面。本文将介绍如何使用Python实现人脸相似度对比。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 9809

图形验证码+短信验证码【Java应用实例】

一、图形验证码的实现 1.1 简介 常在网上晃悠的人,对下面这张图都不会陌生。特别是在注册新账号、确认交易时,它们都会频繁出现,要求我们输入正确的验证码,那这些看上去跟我们要做的事情完全无关的验证码到底有何作用呢? 其实,验证码的校验即是一个直接的图灵测试,简单的逻辑是:服务提供者向用户方提出一个较为复杂的问题,能正确回答的即是人类,回答不出的即是机器或者程序代码。这个概念基于这样一个重...

短信接口_短信验证码_短信验证码接口 2万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java 图片验证码/图形验证码 亲测

Java图片验证码/图形验证码1. 图片验证码工具类2. 生成验证码,图片验证码 和 验证接口3. index.html 1. 图片验证码工具类 import lombok.Data; import java.awt.*; import java.awt.image.BufferedImage; import java.time.LocalDateTime; import java.util.R...

Shawn Jeon`s blog 2761

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java实现验证码

注释写在了代码里面 一、工具类 import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.ut...

╱/.独﹄無㈡oоΟ的博客 6337

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java 验证码识别_java验证码识别

java验证码识别--1java验证码识别--2java验证码识别--3java验证码识别--4java验证码识别--5(本文仅用于学习研究图像匹配识别原理,不得用于其他用途。)前面用的都是用的比较笨的,按像素比较的方法,属于靠感觉,没有什么理论支持的东西,效率也不高。这里我再试试用SVM的方法。用的是libsvm的java版。前面的步骤还是一样的,去干扰,分割。把训练的图片缩放成16*16的大小...

weixin_34896969的博客 1244

验证码java_java实现验证码功能

java实现验证码功能通过java代码实现验证码功能的一般思路:一、通过java代码生成一张验证码的图片,将验证码的图片保存到项目中的指定文件中去,代码如下:package com.util;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import ja...

weixin_42275078的博客 734

Java实现字符验证码、运算验证码

Java中很轻松可以实现验证码功能,在原生AWT图形化工具包中写一点简单的逻辑就能轻松完成验证码功能。 本文,同时将google的kaptcha验证码一同讲解。 项目地址:https://gitee.com/gester/captcha.git 原创不易!如果有帮到您,请给作者小星星鼓励一下 功能 字符验证码 AWT实现字符验证码 kaptcha实现字符验证码 运算验证码 AWT实现运算...

YTenderness的博客 2041

java 验证码_如何用java实现验证码?

验证码的出现在一定程度上降低了程序被攻击的风险,也使得我们的软件安全性得到有效提高。Java发展至今,网上也出现了各种各样的验证码:有图像验证码,字符验证码,还有用于计算的验证码等等。接下来为大家介绍几个原始验证码的写法。效果如下:第一款是基本的验证码,就背景颜色和字体颜色随机的。第二款是每个字符都是不同的颜色。第三款是每个字符都有不同的倾斜角度。验证码的实现原理:前端页面发送请求【使用标签】到后...

weixin_42110533的博客 1234

JAVA验证码存在哪里了_java实现验证码功能

java实现验证码功能通过java代码实现验证码功能的一般思路:一、通过java代码生成一张验证码的图片,将验证码的图片保存到项目中的指定文件中去,代码如下:package com.util;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import ja...

weixin_30647423的博客 1335

java 验证码_java实现简单的验证码功能

最近要做一个网站,要求实现验证码程序,经过不断调试,终于成功实现功能。一、验证码生成类生成验证码的话需要用到java的Graphics类库,画出一个验证码废话不多说,直接上代码package verificationCode;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.ima...

weixin_35915120的博客 379

java 验证码生成_Java生成验证码并进行验证

一、实现思路使用BufferedImage用于在内存中存储生成的验证码图片使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证最后通过ImageIO将生成的图片进行输出通过页面提交的验证码和存放在session中的验证码对比来进行校验二、生成验证码页面通过访问servlet来生成验证码,servlet中的代码如下:package org.test;...

weixin_31067561的博客 1055

java验证码

验证码在很多地方都能用上特别登录、注册的的时候会派上特别大的用处,接下来我们做一个简陋的验证码功能的实现: 1.创建一个servlet: @WebServlet("/checkCode") public class CheckCodeServlet extends HttpServlet { public void doGet(HttpServletRequest request, Htt...

谢萌新 457

Java图片验证码的实现

这里主要用到了三个文件,两个servlet类,一个JSP页面。两个servlet分别为drawCode.java和ValidateServlet.java,前者用来产生验证码,后者用来检验验证码是否正确,JSP页面为login.jsp,作为前台的交互。代码如下:     login.jsp  function refresh(){ a = pars

陈 浩 678

java生成验证码登录,生成验证码

这里写了一个生成验证码的demo 前台可以访问该servlet页面显示验证码 验证码 后台存的session名称为vCode 判断验证码是否正确时可以直接调用 前台通过 这里你就自己引入jq吧 <img src="ValidateCodeServle" id="src"> <a onclick="code()">看不清楚,换一张</a> <script...

不负好时光的博客 1109
上一篇: excel hssf解析
下一篇: JavaScript 常用正则大集合!
laohanfei
博客等级 码龄10年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值