`
弗洛韦德
  • 浏览: 13589 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Struts2实现登录验证码的输出

阅读更多

  画图片的工具类

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的链接即可

分享到:
评论

相关推荐

    struts中实现验证码

    在Struts2框架中,实现验证码功能主要是为了增强网站的安全性,防止自动化脚本或恶意用户进行批量、无意义的注册或登录尝试。以下将详细解释如何在Struts2环境中设置验证码并展示其核心组件: 1. **HTML 页面**: ...

    使用struts2.0实现的验证码功能

    在这个“使用struts2.0实现的验证码功能”项目中,我们将深入探讨如何利用Struts2.0来构建一个安全的登录页面,其中包括验证码的生成与验证。 验证码是一种防止恶意自动化程序(如机器人或爬虫)进行非法操作的安全...

    struts2 生成验证码

    Struts2作为一款流行的Java Web应用框架,支持多种方式来实现验证码功能。本文将详细介绍如何在Struts2项目中生成并显示验证码。 #### 二、核心概念 1. **验证码**:一种用于区分用户是人还是计算机程序的技术手段...

    Struts2验证码用户登录

    在本文中,我们将深入探讨如何在Struts2框架中实现验证码功能,并结合JavaScript和session技术来增强用户体验。 首先,验证码的核心是生成一个随机的、难以自动识别的图像。这通常涉及到以下几个步骤: 1. **生成...

    基于struts1.x的验证码实现

    在基于Struts1.x的项目中实现验证码功能,可以帮助提升应用的安全性。 验证码的实现通常涉及以下几个步骤: 1. **生成随机验证码**:首先,我们需要创建一个服务或者Action,生成一个随机字符串作为验证码。这个...

    struts2-生成图片验证码

    "struts2-生成图片验证码"的主题表明我们将探讨如何在Struts2框架中实现图片验证码的功能。 验证码通常由随机生成的一串字符组成,这些字符以图像形式显示,用户需要输入他们看到的字符以完成验证。在Struts2中实现...

    struts2 图片 验证码

    在Struts2中实现图片验证码功能是常见的需求,主要用于防止恶意自动化程序(如机器人)对网站进行攻击或滥用。下面我们将深入探讨如何在Struts2框架中创建和使用图片验证码。 首先,验证码的基本原理是生成一段随机...

    struts2验证码

    Struts2验证码是一种用于增强网站安全性的重要机制,它主要用于防止恶意自动化的机器人或者爬虫程序进行非法操作,比如批量注册、频繁登录等。在本项目中,开发者自定义了一个基于Struts2框架的验证码功能,使得...

    struts2图片验证码--struts2图片验证码-(通用版)

    ### Struts2 图片验证码实现解析 #### 一、引言 在Web应用程序中,图片验证码(CAPTCHA)被广泛用于防止自动化攻击和机器人操作,确保用户是真实的人类。Struts2框架提供了丰富的功能来集成这样的安全特性,本文将...

    Struts2 图片验证码

    Struts2图片验证码是一种常用的网络安全措施,用于防止自动化的机器人或恶意软件进行非法操作,如用户注册、登录等。在Web应用中,验证码通常由随机生成的一串字符组成,显示在图片上,用户需要正确输入这些字符才能...

    struts2_中的验证码

    在Struts2中实现验证码功能,可以自定义一个Servlet来生成并处理验证码图像。 首先,让我们深入了解一下在上述代码中创建验证码的步骤: 1. **定义字体和图像尺寸**: 类`AuthImg`定义了一个内部常量`mFont`,它...

    用struts实现用户登录

    本项目以"用Struts实现用户登录"为主题,旨在帮助初学者入门Struts框架,理解其基本工作原理和配置过程。 首先,我们要了解Struts框架的核心概念。MVC模式是软件设计中的一个经典模式,它将应用程序分为三个主要...

    struts2验证码.pdf

    在Struts2框架中,实现验证码功能可以确保用户交互的真实性和安全性。本篇文章将详细解析如何在Struts2中生成和使用基于AWT的内存图片验证码。 首先,验证码的生成过程通常分为以下几个步骤: 1. **生成随机字符串...

    Struts2实现生成动态验证码并验证实例代码

    在Struts2框架中生成动态验证码并验证是一个常见的安全措施,用于防止自动化程序(如机器人)对网站进行恶意操作,例如频繁登录尝试或批量数据提交。动态验证码的主要目的是增加用户交互的安全性,确保只有真实的人...

    基于Java的实例源码-Struts验证码插件 JCaptcha4Struts2.zip

    Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动机器人或恶意用户通过自动化脚本进行非法操作,如批量注册、恶意登录等。这个插件结合了Struts2框架和JCaptcha库,为Struts2应用...

    仿CSDN样式(Struts2中文验证码源代码)

    在本项目中,“仿CSDN样式(Struts2中文验证码源代码)”是为了实现类似CSDN登录页面的中文验证码功能,这在防止恶意机器人自动登录或注册时非常有用。 验证码的主要作用是验证用户是否为真人,通过显示一组随机生成...

    STRUTS2验证码

    这个项目案例对于理解Struts2框架如何与验证码机制结合,以及如何在实际项目中实现安全控制具有很高的学习价值。通过分析`authcode.jar`中的代码,开发者可以深入理解验证码的生成和验证过程,以及如何在Struts2框架...

    验证码实现详细步骤

    在这个Java实现验证码的详细步骤中,我们将探讨如何在Servlet中生成验证码,将其发送到前端,并整合到Struts框架中。下面,我们将逐步深入这个过程。 首先,验证码的生成通常涉及到以下几个核心组件: 1. **随机数...

Global site tag (gtag.js) - Google Analytics