一个相对好的登录验证码的生成过程:
<%@ 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提供了一系列不同的验证码样式,包括字母、数字、字母数字组合以及算术式验证码。这些多样化的验证码类型可以有效地防止机器学习...
在提供的文件列表中,`ValidyCode.sln`可能是一个Visual Studio的解决方案文件,用于管理和构建验证码相关的项目。而`ValidyCode`可能是源代码文件夹,包含了实现动态验证码功能的C#或其他编程语言的代码。这些代码...
综上所述,jQuery网页验证码插件是一个集成了安全验证和良好用户体验的解决方案,它能够帮助开发者快速构建具有动态验证码功能的网页。通过深入理解和灵活运用这个插件,我们可以创建出既安全又易于使用的网页应用。
1. 生成一个完整的图像,并将其分割为两部分。 2. 展示分割后的图像,其中一部分可滑动。 3. 用户拖动滑块完成拼合,记录滑动的起点和终点。 4. 将这些信息发送到服务器,与原始完整图像的位置进行比较验证。 滑动...
ASCIICaptcha-1.0.2-py3-none-any.whl.zip 是一个包含 ASCIICaptcha 库的压缩包,适用于Python 3环境。这个库主要用于生成ASCII格式的验证码,提供了一种防止自动化程序(如机器人)进行恶意操作的安全机制。在网络...
关于"jd-seckill-master"这个文件名,看起来它可能是一个开源项目或者代码库的主分支,专门针对京东秒杀活动进行开发。这可能包含实现秒杀逻辑的源代码、接口文档、测试用例以及部署脚本等。对于开发者来说,研究这...
例如,实训一主要关注JavaScript的基本语法,包括条件判断、事件处理等,通过项目一至五,学生将学习到如何验证用户输入、处理复选框和单选钮的选择、生成随机验证码以及验证隐藏控件等实际应用场景。 实训二则聚焦...
总之,基于ASP的ASP购物网站系统源码 G202205.zip为我们提供了一个了解传统Web开发的实例,从中可以学习到如何构建一个完整的电子商务平台,以及ASP技术在实际项目中的运用。虽然现在的新技术层出不穷,但理解并掌握...
毕业设计是大多数计算机专业学生必须完成的一项任务,它不仅考验学生的专业知识水平,还锻炼了综合运用所学技能解决实际问题的能力。针对网上投票系统的开发,以下是一些建议: - **需求分析**:明确项目目标,了解...
DRF是Django的一个扩展,提供了一套工具集,简化RESTful API的开发,包括序列化、认证、权限控制等。 12. 网上超市系统实训: 实训项目包括用户注册和登录功能,注册需确保用户名唯一,登录时引入验证码机制。这些...
在本项目中,标题"C#爬取某网站数据"揭示了主要任务是使用C#编程语言来编写一个网络爬虫,目标是抓取特定网站上的信息。爬虫是一种自动化程序,能够按照一定的规则遍历互联网上的网页,提取所需的数据。在C#中,可以...
通过以上模块的协同工作,可以构建出一个完整且功能完善的水果商城系统。 #### 四、数据库设计 为了更好地组织和管理数据,采用E-R图进行了初步概念设计,再细化为具体表格结构。 ##### 4.1 E-R 图设计 E-R图...
该项目分了两个系统,一个用户登录的系统,一个管理员登录的系统,可以更好的进行管理 功能技术亮点:4,支付宝扫码支付 角色:商户 商品发码 1.商户通过自助签约平台签约扫码产品后,可以通过发码平台自助发商品...
72 <br>0102 将字符串首字母转换大写 72 <br>0103 如何进行字节数组和字符串的相互转换 72 <br>0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 <br>4.2 获取字符串信息 73 ...