`

一个相对完善的项目登录所运用的验证码生成

阅读更多

一个相对好的登录验证码的生成过程:

 

<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="UTF-8"%>
<%!
Color getRandColor(int fc,int bc){//随机获得颜色,RGB格式
        Random random = new Random();
        if(fc>255) fc=255;
        if(bc>255) bc=255;
        int r=fc+random.nextInt(bc-fc);
        int g=fc+random.nextInt(bc-fc);
        int b=fc+random.nextInt(bc-fc);
        return new Color(r,g,b);
        }
%>
<%
//清除缓存,每次访问该页面时都从服务器端读取
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

// 定义显示图片的宽度和高度
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 画图画板
Graphics g = image.getGraphics();

//定义一个随机数
Random random = new Random();

// 设置画板背景颜色
g.setColor(getRandColor(200,250));
//设置画板的填充范围
g.fillRect(0, 0, width, height);

//设置字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));

// 设置线条颜色并画线,155条
g.setColor(getRandColor(160,200));
for (int i=0;i<155;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);
}

// 显示数字,4位长度
String sRand="";
for (int i=0;i<4;i++){
    String rand=String.valueOf(random.nextInt(10));
    sRand+=rand;
    // 设置每个数字的颜色
    g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
//在画板上写数字,起始位置
    g.drawString(rand,13*i+6,16);
}

// 保存进session
session.setAttribute("yzkeyword",sRand);
System.out.println("yzm:"+sRand);


// 显示图片
g.dispose();

%>

<%
//转换成一张图片,格式为JPEG
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();//清空缓存的内容。

pageContext.pushBody();
%>

 

 

比如这个是image.jsp页面,现在在登录页面调用:

 

<img src="/mars/main/image.jsp" alt="换一个" title="换一个" id="identity-img" />

 

 

 

 

效果就是:

 

 

 

  • 大小: 14.7 KB
分享到:
评论

相关推荐

    验证码实现

    在本压缩包中,包含的是kaptcha的jar包,这是一个流行的Java验证码生成库。kaptcha提供了一系列不同的验证码样式,包括字母、数字、字母数字组合以及算术式验证码。这些多样化的验证码类型可以有效地防止机器学习...

    12306动态验证码

    在提供的文件列表中,`ValidyCode.sln`可能是一个Visual Studio的解决方案文件,用于管理和构建验证码相关的项目。而`ValidyCode`可能是源代码文件夹,包含了实现动态验证码功能的C#或其他编程语言的代码。这些代码...

    jQuery网页验证码插件.zip

    综上所述,jQuery网页验证码插件是一个集成了安全验证和良好用户体验的解决方案,它能够帮助开发者快速构建具有动态验证码功能的网页。通过深入理解和灵活运用这个插件,我们可以创建出既安全又易于使用的网页应用。

    JS 验证码功能的三种实现方式

    1. 生成一个完整的图像,并将其分割为两部分。 2. 展示分割后的图像,其中一部分可滑动。 3. 用户拖动滑块完成拼合,记录滑动的起点和终点。 4. 将这些信息发送到服务器,与原始完整图像的位置进行比较验证。 滑动...

    ASCIICaptcha-1.0.2-py3-none-any.whl.zip

    ASCIICaptcha-1.0.2-py3-none-any.whl.zip 是一个包含 ASCIICaptcha 库的压缩包,适用于Python 3环境。这个库主要用于生成ASCII格式的验证码,提供了一种防止自动化程序(如机器人)进行恶意操作的安全机制。在网络...

    京东秒杀,用于抢购茅台、显卡、PS5等稀缺商品。.zip

    关于"jd-seckill-master"这个文件名,看起来它可能是一个开源项目或者代码库的主分支,专门针对京东秒杀活动进行开发。这可能包含实现秒杀逻辑的源代码、接口文档、测试用例以及部署脚本等。对于开发者来说,研究这...

    JAVASCRIPT+实验指导书[1]

    例如,实训一主要关注JavaScript的基本语法,包括条件判断、事件处理等,通过项目一至五,学生将学习到如何验证用户输入、处理复选框和单选钮的选择、生成随机验证码以及验证隐藏控件等实际应用场景。 实训二则聚焦...

    基于ASP的ASP购物网站系统源码 G202205.zip

    总之,基于ASP的ASP购物网站系统源码 G202205.zip为我们提供了一个了解传统Web开发的实例,从中可以学习到如何构建一个完整的电子商务平台,以及ASP技术在实际项目中的运用。虽然现在的新技术层出不穷,但理解并掌握...

    ASP源码asp网上投票系统设计(论文+源代码+开题报告)

    毕业设计是大多数计算机专业学生必须完成的一项任务,它不仅考验学生的专业知识水平,还锻炼了综合运用所学技能解决实际问题的能力。针对网上投票系统的开发,以下是一些建议: - **需求分析**:明确项目目标,了解...

    人工智能Django练习手册.docx

    DRF是Django的一个扩展,提供了一套工具集,简化RESTful API的开发,包括序列化、认证、权限控制等。 12. 网上超市系统实训: 实训项目包括用户注册和登录功能,注册需确保用户名唯一,登录时引入验证码机制。这些...

    C#爬取某网站数据

    在本项目中,标题"C#爬取某网站数据"揭示了主要任务是使用C#编程语言来编写一个网络爬虫,目标是抓取特定网站上的信息。爬虫是一种自动化程序,能够按照一定的规则遍历互联网上的网页,提取所需的数据。在C#中,可以...

    基于JavaWeb的水果商城设计【论文】.doc

    通过以上模块的协同工作,可以构建出一个完整且功能完善的水果商城系统。 #### 四、数据库设计 为了更好地组织和管理数据,采用E-R图进行了初步概念设计,再细化为具体表格结构。 ##### 4.1 E-R 图设计 E-R图...

    GoodProject Maven Webapp.zip

    该项目分了两个系统,一个用户登录的系统,一个管理员登录的系统,可以更好的进行管理 功能技术亮点:4,支付宝扫码支付 角色:商户 商品发码 1.商户通过自助签约平台签约扫码产品后,可以通过发码平台自助发商品...

    C#编程经验技巧宝典

    72 &lt;br&gt;0102 将字符串首字母转换大写 72 &lt;br&gt;0103 如何进行字节数组和字符串的相互转换 72 &lt;br&gt;0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 &lt;br&gt;4.2 获取字符串信息 73 ...

Global site tag (gtag.js) - Google Analytics