`
Ramls
  • 浏览: 37418 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2实现图片验证码

阅读更多

 

action

Java代码
package com.comm.validateNumImage.action;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;

import com.comm.action.BaseAction;

public class ValidateNumImageManagerAction extends BaseAction {
	private ByteArrayInputStream inputStream;  
    
    public String getValidateImage() throws Exception{ 
    	char[] mapTable = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
                'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
                'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8',
                '9' };
    	
//      在内存中创建图象   
    	int width=60, height=20;   
    	BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);

    	//
    	Graphics2D g = image.createGraphics();
	
    	// 填充背景色
    	g.setColor(Color.white);
    	g.fillRect(0, 0, width, height);
	
    	// 绘制边框
    	g.setColor(Color.BLACK);
    	g.drawRect(0, 0, width - 1, height - 1);
		
		 // 验证码
    	String security = "";
    	
    	// 随机生成验证码
    	Random random = new Random();
    	for (int i = 0; i < 4; i++) {
	        security += mapTable[random.nextInt(mapTable.length)];
    	}
	
    	// 绘制验证码
    	g.setColor(Color.BLACK);
    	g.setFont(new Font("MS Sans Serif", Font.PLAIN, 18));
	
    	String temp = security.substring(0, 1);
    	g.drawString(temp, 7, 15);
    	temp = security.substring(1, 2);
    	g.drawString(temp, 18, 17);
    	temp = security.substring(2, 3);
    	g.drawString(temp, 28, 18);
    	temp = security.substring(3, 4);
    	g.drawString(temp, 40, 17);
	
    	// 绘制干扰点
    	g.setColor(Color.BLACK);
    	for (int i = 0; i < 20; i++) {
	        g.drawOval(random.nextInt(width), random.nextInt(height), 0, 0);
    	}
    	g.dispose(); 
    	
    	this.getRequest().getSession().setAttribute("security", security);
    	ByteArrayOutputStream output = new ByteArrayOutputStream();   
    	ImageOutputStream imageOut = ImageIO.createImageOutputStream(output);   
    	ImageIO.write(image, "JPEG", imageOut);   
    	imageOut.close();   
    	ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray());   
    	this.setInputStream(input);   
    	return SUCCESS;   
    }

    public void setInputStream(ByteArrayInputStream inputStream) {   
        this.inputStream = inputStream;   
    }   
    public ByteArrayInputStream getInputStream() {   
        return inputStream;   
    }
}

 

action 配置

Xml代码 复制代码

 

<action name="getValidateImage" class="validateNumImageManagerAction" method="getValidateImage">   
	<result type="stream">   
		<param name="contentType">image/jpeg</param>   
		 <param name="inputName">inputStream</param>   
	</result>   
</action>  

 

js

Js代码 复制代码
  1. <script type="text/javascript">      
  2.     function changeValidateCode(obj) {      
  3.            //获取当前的时间作为参数,无具体意义      
  4.         var timenow = new Date().getTime();      
  5.            //每次请求需要一个不同的参数,否则可能会返回同样的验证码      
  6.         //这和浏览器的缓存机制有关系,也可以把页面设置为不缓存,这样就不用这个参数了。      
  7.         obj.src="getValidateImage.action?d="+timenow;      
  8.     }      
  9. </script>      
  10.      
  11. <img src="getValidateImage.action" onclick="changeValidateCode(this)"/>   
分享到:
评论

相关推荐

    struts2 图片 验证码

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

    struts中实现验证码

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

    struts2实现验证码

    我们可以使用一个`&lt;img&gt;`标签来显示验证码图片,图片的src属性指向一个Struts2 Action,该Action负责生成并返回验证码的图片。图片可以通过将验证码字符串转换为像素并绘制到图像上实现。 4. **配置Struts2 Action*...

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

    - 图片验证码的生成可能使用了Java的Graphics2D API,将随机字符绘制到图像上,并添加一些干扰线或点以增加机器识别的难度。 - 生成的验证码字符串存储在服务器的Session中,以便后续的验证过程使用。 2. **...

    struts2-生成图片验证码

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

    struts2生成中文验证码的Action

    要实现Struts2中的中文验证码Action,我们需要以下步骤: 1. **配置Struts2**: 首先,确保你的项目已经集成了Struts2框架,并且在`struts.xml`配置文件中添加了Action的配置。Action的配置应包含一个对应的Action类...

    Struts2-登录验证码

    完整的Struts2框架,联系oracle数据库实现登录验证 验证码功能:点击图片切换验证码,验证码错误提示 登录成功后变量session中的list集合 内含备注

    struts2 生成验证码

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

    Struts2的验证码生成

    通过以上步骤,我们就能在Struts2应用中实现一个完整的验证码功能。这不仅提高了网站的安全性,也为用户提供了更好的交互体验。在实际开发中,还需要根据项目需求进行相应的定制和优化,确保验证码系统既有效又易于...

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

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

    struts2下实现了图片验证码

    ### Struts2 下实现图片验证码的关键技术点 #### 一、引言 在现代Web应用中,验证码(CAPTCHA)是一种常见的用户验证机制,用于区分真实用户与自动化软件(如爬虫)。Struts2框架因其丰富的插件支持及灵活性,在...

    Struts2 图片验证码

    总的来说,Struts2图片验证码的实现涉及了Action的逻辑处理、图像生成、session管理、表单验证等多个方面,体现了Struts2框架在构建复杂业务逻辑时的强大能力。通过熟练掌握这一技术,开发者可以为Web应用提供更为...

    java动态验证码Struts2集成实现

    java动态验证码Struts2集成实现

    struts2验证码完整实例

    1、页面加载后,想后台发出生产验证码图片的请求,并在前台显示验证码图片,同时将验证码上的数字 通过ActionContext.getContext().getSession().put("random", randomNum.getRandomCode())将数字存放到session当中 2...

    Struts2验证码

    2. **图片验证码** 如果需要图形验证码,可以使用Java的`java.awt`和`javax.imageio`库生成图片。创建一个包含随机颜色和扭曲线条的背景,然后在上面绘制验证码字符串。生成的图片可以用`ImageIO.write()`方法写入...

    Struts2验证码用户登录

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

    基于struts1.x的验证码实现

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

    Struts2实现的6位数字的验证码程序

    在这个特定的示例中,我们看到如何使用Struts2来实现一个简单的6位数字验证码程序。验证码的主要目的是验证用户是否是人类,防止自动化机器人进行恶意操作,如注册、登录等。 首先,`login.jsp`页面包含一个...

    最新的struts2验证码.rar

    "最新的struts2验证码.rar"很可能包含了有关如何在Struts2框架下实现验证码功能的示例代码或配置文件。 Struts2验证码的实现通常涉及到以下几个关键知识点: 1. **验证码生成**:验证码通常由随机生成的一串字符或...

    基于struts2的验证码生成

    基于Struts2的验证码生成就是将这一功能集成到Struts2框架中的过程。 验证码的主要目的是验证用户是人类而非机器,通常通过显示一个随机生成的图像,要求用户输入图像中显示的字符来实现。在基于Struts2的验证码...

Global site tag (gtag.js) - Google Analytics