验证码功能经常应用到网站中,放到此处便于查阅。
核心代码如下,如需全部代码请查看附件。
1、java生成验证码代码如下:(此代码也可放到servlet中)
public class ImageUtil {
private static String[] chars = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
private static final int WIDTH = 200;
private static final int HEIGHT = 100;
private static final int NUM = 4;
private static final int LINE = 10;
/**
* 生成随机图
*
* @return string 随机字符 image随机图片
*/
public static Map getImage() {
Map map = new HashMap();
String s = "";
// 创建�?个BufferedImage
BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
BufferedImage.TYPE_INT_RGB);
Graphics graphics = image.getGraphics();
Random ran = new Random();
// 画背景色
graphics.setColor(new Color(ran.nextInt(100), ran.nextInt(100), ran
.nextInt(100)));
graphics.fillRect(0, 0, WIDTH, HEIGHT);
// 画随机字�?
for (int i = 0; i < NUM; i++) {
graphics.setColor(new Color(ran.nextInt(20)+200, ran.nextInt(20)+200, ran
.nextInt(200)+20));
graphics.setFont(new Font(null, Font.BOLD, ran.nextInt(10) + 80));
String ranstr = chars[ran.nextInt(chars.length)];
graphics.drawString(ranstr, WIDTH / NUM * (i), HEIGHT / 4 * 3);
s += ranstr;
}
// 画干扰线
for (int j = 0; j < LINE; j++) {
graphics.setColor(new Color(ran.nextInt(255), ran.nextInt(255), ran
.nextInt(255)));
graphics.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT), ran
.nextInt(WIDTH), ran.nextInt(HEIGHT));
}
map.put("code", s);
map.put("image", image);
return map;
}
/**
* 将随机图片转换成inputStream
*/
public static InputStream getInputStream(BufferedImage image)
throws IOException {
// 将BufferedImage转换成符合JPEG格式字节数组
ByteArrayOutputStream bos = new ByteArrayOutputStream();
JPEGImageEncoder encode = JPEGCodec.createJPEGEncoder(bos);
encode.encode(image);
// 将图片的字节数组信息,封装成InputStream
byte[] byteArr = bos.toByteArray();
return new ByteArrayInputStream(byteArr);
}
}
2、action引用验证码
public class ImageCodeAction {
private InputStream imageStream;
public String execute() {
Map map = ImageUtil.getImage();
//存放在session中便于用户输入后进行验证 此处略去
//getSession().put(Constants.SESSION_CODE, map.get("code"));
try {
imageStream = ImageUtil.getInputStream((BufferedImage) map
.get("image"));
} catch (IOException e) {
e.printStackTrace();
}
return "success";
}
public InputStream getImageStream() {
return imageStream;
}
public void setImageStream(InputStream imageStream) {
this.imageStream = imageStream;
}
}
分享到:
相关推荐
Struts2作为一款流行的Java Web应用框架,支持多种方式来实现验证码功能。本文将详细介绍如何在Struts2项目中生成并显示验证码。 #### 二、核心概念 1. **验证码**:一种用于区分用户是人还是计算机程序的技术手段...
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动...通过深入研究这些源码和配置,你可以掌握将验证码功能集成到Struts2应用中的方法,同时提高对Java Web开发和安全防护的理解。
在Struts2框架下实现验证码功能,可以帮助提升用户体验和系统安全性。以下将详细讲解如何在Struts2中创建前端注册验证码。 首先,验证码的实现通常包括两个主要部分:后端生成验证码和前端展示及验证。 1. **后端...
Struts2是一个强大的MVC框架,它为Java开发者提供了构建Web应用程序的结构和控制层。在Web应用中,验证码(Captcha)是一种重要的安全机制,用于防止自动化程序(如机器人或爬虫)进行非法操作,比如防止恶意注册、...
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用程序的安全组件,旨在防止自动机器人或恶意用户通过表单提交不合法数据。该插件基于Java的开源项目JCaptcha(Just Another CAPTCHA)构建,提供了可视化挑战...
Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中。在Web应用中,验证码是一种防止恶意自动程序(如机器人)滥用服务的安全机制。本教程将详细讲解如何利用Struts2框架来实现验证码...
"struts2-生成图片验证码"的主题表明我们将探讨如何在Struts2框架中实现图片验证码的功能。 验证码通常由随机生成的一串字符组成,这些字符以图像形式显示,用户需要输入他们看到的字符以完成验证。在Struts2中实现...
在实际的Web系统开发中,Struts框架常与其他技术结合,如Spring(用于依赖注入和事务管理)、Hibernate(作为ORM框架)等,形成所谓的SSH(Struts-Spring-Hibernate)或SSM(Struts-Spring-MyBatis)体系。...
Struts2和Spring3是两种非常流行的Java Web开发框架,它们在企业级应用中被广泛使用。本实例结合这两种框架,构建了一个包含验证码功能的登录系统,旨在提供一个安全、可扩展的基础架构。 首先,Struts2是Apache...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在当今网络安全日益重要的环境下,使用HTTPS协议来确保数据传输的安全性变得至关重要。Struts2支持HTTPS配置,可以...
在"Extjs4登录功能+验证码+struts2"这个主题中,我们将深入探讨如何利用ExtJS4构建一个带有验证码功能的登录界面,并结合Struts2后端框架实现数据验证和处理。 首先,登录功能是Web应用的基础部分,通常包含用户名...
"最新的struts2验证码.rar"很可能包含了有关如何在Struts2框架下实现验证码功能的示例代码或配置文件。 Struts2验证码的实现通常涉及到以下几个关键知识点: 1. **验证码生成**:验证码通常由随机生成的一串字符或...
本文将详细介绍如何在Struts2框架下实现图片验证码的功能。 #### 二、验证码的基本原理 验证码的核心目的是通过生成随机的图形或字符让用户输入来验证其是否为真实用户。通常包括以下几个步骤: 1. **生成随机字符...
Struts2是一个基于MVC设计模式的Java Web框架,它提供了一种组织应用程序的方式,使得代码结构清晰,易于维护。在Struts2中,用户请求被控制器组件处理,并根据配置映射到相应的动作,最终生成响应。 验证码的实现...
SSH是三个开源Java框架的缩写,分别是Struts2、Hibernate3和Spring2.5,它们常被用于构建企业级的Web应用程序。SSH框架的整合提供了模型-视图-控制器(MVC)架构,持久层管理和依赖注入等功能,极大地提高了开发效率...
Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,主要用于构建企业级Web应用。在本项目中,“仿CSDN样式(Struts2中文验证码源代码)”是为了实现类似CSDN登录页面的中文...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、易于维护的MVC(模型-视图-控制器)架构的应用程序。基于Struts2的个人信息管理系统是使用这一框架来设计和实现的一个典型示例,它涵盖了用户管理...
在这个Struts2的项目案例中,开发者已经创建了一个完整的流程,包括生成验证码的逻辑以及将其整合到Struts2框架中的方法。 验证码的生成通常包含以下几个步骤: 1. **随机生成数字或字母**:验证码通常由随机选择...