画图片的工具类
public final class ImageUtil { private static final char[] chars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' }; private static final int SIZE = 4; private static final int LINES = 5; private static final int WIDTH = 80; private static final int HEIGHT = 40; private static final int FONT_SIZE = 30; public static Map<String, BufferedImage> createImage() { StringBuffer sb = new StringBuffer(); BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics graphic = image.getGraphics(); graphic.setColor(Color.LIGHT_GRAY); graphic.fillRect(0, 0, WIDTH, HEIGHT); Random ran = new Random(); // 画随机字符 for (int i = 1; i <= SIZE; i++) { int r = ran.nextInt(chars.length); graphic.setColor(getRandomColor()); graphic.setFont(new Font(null, Font.BOLD + Font.ITALIC, FONT_SIZE)); graphic.drawString(chars[r] + "", (i - 1) * WIDTH / SIZE, HEIGHT / 2); sb.append(chars[r]);// 将字符保存,存入Session } // 画干扰线 for (int i = 1; i <= LINES; i++) { graphic.setColor(getRandomColor()); graphic.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT), ran.nextInt(WIDTH), ran.nextInt(HEIGHT)); } Map<String, BufferedImage> map = new HashMap<String, BufferedImage>(); map.put(sb.toString(), image); return map; } public static Color getRandomColor() { Random ran = new Random(); Color color = new Color(ran.nextInt(256), ran.nextInt(256), ran.nextInt(256)); return color; } public static InputStream getInputStream(BufferedImage image) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos); encoder.encode(image); byte[] imageBts = bos.toByteArray(); InputStream in = new ByteArrayInputStream(imageBts); return in; } }
Action类 以及BaseAction(主要用来获取session)
public class ValidateCodeAction extends BaseAction { private InputStream codeStream; public String execute() { Map<String, BufferedImage> imageMap = ImageUtil.createImage(); String code = imageMap.keySet().iterator().next(); session.put("imageCode", code); BufferedImage image = imageMap.get(code); try { codeStream = ImageUtil.getInputStream(image); } catch (IOException e) { e.printStackTrace(); return "error"; } return "success"; } public InputStream getCodeStream() { return codeStream; } public void setCodeStream(InputStream codeStream) { this.codeStream = codeStream; } }
Struts配置文件的配置
<action name="validateCode" class="com.tarena.action.login.ValidateCodeAction"> <result name="success" type="stream"> <param name="inputName">codeStream</param> </result> </action>
这样配置完成后,这页面上设置img的src属性为action的链接即可
相关推荐
在Struts2框架中,实现验证码功能主要是为了增强网站的安全性,防止自动化脚本或恶意用户进行批量、无意义的注册或登录尝试。以下将详细解释如何在Struts2环境中设置验证码并展示其核心组件: 1. **HTML 页面**: ...
在这个“使用struts2.0实现的验证码功能”项目中,我们将深入探讨如何利用Struts2.0来构建一个安全的登录页面,其中包括验证码的生成与验证。 验证码是一种防止恶意自动化程序(如机器人或爬虫)进行非法操作的安全...
Struts2作为一款流行的Java Web应用框架,支持多种方式来实现验证码功能。本文将详细介绍如何在Struts2项目中生成并显示验证码。 #### 二、核心概念 1. **验证码**:一种用于区分用户是人还是计算机程序的技术手段...
在本文中,我们将深入探讨如何在Struts2框架中实现验证码功能,并结合JavaScript和session技术来增强用户体验。 首先,验证码的核心是生成一个随机的、难以自动识别的图像。这通常涉及到以下几个步骤: 1. **生成...
在基于Struts1.x的项目中实现验证码功能,可以帮助提升应用的安全性。 验证码的实现通常涉及以下几个步骤: 1. **生成随机验证码**:首先,我们需要创建一个服务或者Action,生成一个随机字符串作为验证码。这个...
"struts2-生成图片验证码"的主题表明我们将探讨如何在Struts2框架中实现图片验证码的功能。 验证码通常由随机生成的一串字符组成,这些字符以图像形式显示,用户需要输入他们看到的字符以完成验证。在Struts2中实现...
在Struts2中实现图片验证码功能是常见的需求,主要用于防止恶意自动化程序(如机器人)对网站进行攻击或滥用。下面我们将深入探讨如何在Struts2框架中创建和使用图片验证码。 首先,验证码的基本原理是生成一段随机...
Struts2验证码是一种用于增强网站安全性的重要机制,它主要用于防止恶意自动化的机器人或者爬虫程序进行非法操作,比如批量注册、频繁登录等。在本项目中,开发者自定义了一个基于Struts2框架的验证码功能,使得...
### Struts2 图片验证码实现解析 #### 一、引言 在Web应用程序中,图片验证码(CAPTCHA)被广泛用于防止自动化攻击和机器人操作,确保用户是真实的人类。Struts2框架提供了丰富的功能来集成这样的安全特性,本文将...
Struts2图片验证码是一种常用的网络安全措施,用于防止自动化的机器人或恶意软件进行非法操作,如用户注册、登录等。在Web应用中,验证码通常由随机生成的一串字符组成,显示在图片上,用户需要正确输入这些字符才能...
在Struts2中实现验证码功能,可以自定义一个Servlet来生成并处理验证码图像。 首先,让我们深入了解一下在上述代码中创建验证码的步骤: 1. **定义字体和图像尺寸**: 类`AuthImg`定义了一个内部常量`mFont`,它...
本项目以"用Struts实现用户登录"为主题,旨在帮助初学者入门Struts框架,理解其基本工作原理和配置过程。 首先,我们要了解Struts框架的核心概念。MVC模式是软件设计中的一个经典模式,它将应用程序分为三个主要...
在Struts2框架中,实现验证码功能可以确保用户交互的真实性和安全性。本篇文章将详细解析如何在Struts2中生成和使用基于AWT的内存图片验证码。 首先,验证码的生成过程通常分为以下几个步骤: 1. **生成随机字符串...
在Struts2框架中生成动态验证码并验证是一个常见的安全措施,用于防止自动化程序(如机器人)对网站进行恶意操作,例如频繁登录尝试或批量数据提交。动态验证码的主要目的是增加用户交互的安全性,确保只有真实的人...
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动机器人或恶意用户通过自动化脚本进行非法操作,如批量注册、恶意登录等。这个插件结合了Struts2框架和JCaptcha库,为Struts2应用...
在本项目中,“仿CSDN样式(Struts2中文验证码源代码)”是为了实现类似CSDN登录页面的中文验证码功能,这在防止恶意机器人自动登录或注册时非常有用。 验证码的主要作用是验证用户是否为真人,通过显示一组随机生成...
这个项目案例对于理解Struts2框架如何与验证码机制结合,以及如何在实际项目中实现安全控制具有很高的学习价值。通过分析`authcode.jar`中的代码,开发者可以深入理解验证码的生成和验证过程,以及如何在Struts2框架...
在这个Java实现验证码的详细步骤中,我们将探讨如何在Servlet中生成验证码,将其发送到前端,并整合到Struts框架中。下面,我们将逐步深入这个过程。 首先,验证码的生成通常涉及到以下几个核心组件: 1. **随机数...