一个相对好的登录验证码的生成过程:
<%@ 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
分享到:
相关推荐
一个登录验证生成验证码用struts 后台生成验证码在jsp页面输出生成图片
文章详见链接https://blog.csdn.net/qq_39559641/article/details/98029015,英文和数字混合的...换一个”超链接生成新的验证码,这时页面并不会刷新。本项目为Eclipse中的Dynamic Web Project,需要用Eclipse打开。
简单轻巧的验证码生成工具类。
本项目是基于Java的CheckFourMark验证码生成与Android登录设计源码,包含30个文件,...这个项目是一个验证码生成与Android登录的开发项目,旨在通过Java技术栈实现,为用户提供一个高效、便捷的验证码生成和登录体验。
VC++验证码生成Base64验证码png图片程序,如何使用VC++生成验证码图片,输出Base64图片给网页调用
验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类验证码生成类
页面JSP中有验证码的样式,后台有生成验证码的java代码,这是一个完整的生成验证码的小项目,望推荐!
JavaWeb项目生成随机验证码,使用IDEA开发,可以导入到Eclipse和MyEclipse中
验证码生成类大全
1、开放源码文件 2、用于登录界面验证码随机生成,包括数字+字母、纯数字、纯字母3类验证码,已经调试成功,下载即用。 3、基于VS2015,C#
本程序是采用Windows GDI+技术模拟Web上的验证码生成而设计的一款Windows版验证码随机生成程序,利用GDI+图形图像处理技术,可随机生成强验证码(即汉字验证码)或弱验证码(即数字和字母组合验证码),支持验证码的...
图片验证码生成demo
该项目是一个使用Python语言和Django框架开发的登录网站验证码的生成与识别系统。 1. **系统设计**:项目主要目的是实现一个能够生成和识别登录网站验证码的系统,以提高网站的安全性。 2. **技术实现**: - 利用...
70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java...
分享一个php验证码生成类代码,通过该方法向浏览器输出图像,创建图像背景,设置干扰元素,向图像中随机画出文本,输出图像。
ajax验证码 验证码ajax 生成中文验证码
php验证码生成类
一个.net core,跨平台的图形验证码生成工具包,基于ImageSharp。
将生成的四个验证图片放在一个页面上以供比对,全部可以运行。 四种方法分别为: 1. 数字、字母、汉字混合验证码,叠影(给力)、扭曲 2. 数字、字母混合验证码,扭曲 3. 汉字验证码,噪点,未加扭曲(未使用字符集...
页面验证码生成器,可以定制显示的字符,字符长度,验证码图片的长度和高度,干扰纹可以更改