`
465886163
  • 浏览: 13624 次
  • 性别: Icon_minigender_1
  • 来自: 龙南
社区版块
存档分类

struts2 jsp 验证码 实例

 
阅读更多
package org.apache.struts.action;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
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.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RandomPictureAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6950908478971552308L;

	private ByteArrayInputStream inputStream;

	public String execute() throws Exception {
		// 在内存中创建图象
		int width = 85, 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);
		}

		// 取随机产生的认证码(6位数字)
		String sRand = "";
		for (int i = 0; i < 6; 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
		ActionContext.getContext().getSession().put("rand", sRand);

		// 图象生效
		g.dispose();
		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;
	}

	/*
	 * 给定范围获得随机颜色
	 */
	private Color getRandColor(int fc, int bc) {
		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);
	}

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

	public ByteArrayInputStream getInputStream() {
		return inputStream;
	}

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<constant name="struts.devMode" value="true" />

	<package name="randpicture" extends="struts-default">

		<action name="rand" class="org.apache.struts.action.RandomPictureAction">
			<result type="stream">
				<param name="contentType">image/jpeg</param>
				<param name="inputName">inputStream</param>
			</result>
		</action>
		
	</package>

</struts>

 

<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<s:head />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Random Picture</title>
</head>
<body>
<script type="text/javascript">
    function changeValidateCode(obj) {
        var currentTime= new Date().getTime();
        obj.src = "rand.action?d=" + currentTime;
    }
</script>

<img src="rand.action" onclick="changeValidateCode(this)" />
</body>
</html>

 

0
0
分享到:
评论

相关推荐

    struts2实现验证码

    Struts2是一个强大的MVC(Model-...总结起来,Struts2实现验证码功能涉及到Java类的编写、session管理、Struts2配置、JSP页面设计以及用户交互逻辑的处理。掌握这些步骤,可以帮助开发者构建安全且用户友好的Web应用。

    struts2 实现登录实例

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛...实际开发中,登录功能会涉及到更复杂的验证和安全考虑,如密码加密、验证码、记住我功能等,但这个基础实例足以帮助初学者理解Struts2的基本工作流程。

    struts2+spring3验证码登录实例

    在这个"struts2+spring3验证码登录实例"中,验证码功能是一个重要的安全措施,它可以防止恶意的自动登录尝试或机器人攻击。验证码通常由一串随机生成的字符或数字组成,用户需要在输入框中正确输入才能完成登录。...

    Struts2 登录验证实例

    在这个“Struts2登录验证实例”中,我们将探讨如何利用Struts2实现用户登录功能,包括用户输入验证、会话管理以及错误处理等关键环节。 首先,我们需要在项目中引入Struts2的核心库。这通常通过在`pom.xml`(如果...

    adajx_struts2登陆框实例

    在本实例中,“adajx_struts2登陆框”着重展示了如何利用Struts2框架与AJAX技术结合,创建一个动态、交互式的登录界面。 首先,我们需要理解Struts2的核心概念。Struts2框架通过Action类处理用户请求,并返回相应的...

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

    Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用程序的安全组件,旨在防止自动机器人或恶意用户通过表单提交不合法数据。该插件基于Java的开源项目JCaptcha(Just Another CAPTCHA)构建,提供了可视化挑战...

    struts2验证码

    通过这个实例,开发者可以深入理解Struts2框架的Action、结果类型、拦截器以及如何与前端页面交互。同时,这也是一个实际运用Java图形处理和Session管理的示例,对于提升Web安全性的理解非常有帮助。在实际项目中,...

    struts2登录实例

    这个"struts2登录实例"旨在展示如何利用Struts2实现一个基本的用户登录功能。下面我们将深入探讨Struts2的核心概念以及如何构建一个简单的登录系统。 1. **Struts2框架基础** - **Action类**:在Struts2中,Action...

    struts2.0 用户维护实例(一)

    这个实例不仅涵盖了Struts2的基础使用,也涉及到了Web开发中常见的用户管理模块,是学习和理解Struts2框架的绝佳实践。在实际开发中,还可以根据项目需求扩展更多的功能,如权限控制、验证码、邮箱验证等。

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

    在Struts2配置文件(struts.xml)中,我们需要为生成验证码的Action添加一个对应的URL映射,以及一个显示验证码的JSP页面。JSP页面可能包含一个img标签,其src属性指向生成验证码的Action URL。当用户点击刷新按钮...

    Ajax+Struts2实现验证码验证功能实例代码

    ### Ajax+Struts2实现验证码验证功能实例代码知识点解析 #### 概述 验证码(CAPTCHA,Completely Automated Public Turing test to tell Computers and Humans Apart)是区分人类用户和计算机程序(机器人)的自动...

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

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

    jsp中用户登录代码(struts2)

    本项目涉及的知识点主要集中在"jsp中用户登录代码(struts2)",这包括Struts2框架的使用、数据库连接、SQL查询以及JSP页面的设计。 首先,**Struts2框架**是基于Apache的开源框架,它的核心是Action类,用于接收和...

    javaweb 验证码实例

    3. **显示验证码**:在客户端,Struts的视图层(通常是JSP)负责展示验证码图片。通常使用`&lt;img&gt;`标签,并设置其`src`属性指向服务器端生成验证码的URL。 4. **用户输入验证**:用户在看到验证码后,需要输入到表单...

    将验证码代码应用于struts2框架

    7. **源码分析**: 博客可能还深入解析了相关代码,包括Struts2配置文件(struts.xml)、Action类、验证码生成类以及视图层的JSP或FreeMarker模板等,以帮助读者理解每个部分的作用和交互。 通过以上步骤,开发者...

    struts2+srping+hibernate 登录实例

    这个"struts2+srping+hibernate 登录实例"应该是一个演示如何整合这三个框架来实现用户登录功能的项目。 **Struts2** 是一个基于MVC设计模式的Action驱动的Web应用框架,它负责处理HTTP请求,并通过Action转发到...

    JSP信息办公类实例开发源码——基于struts的图书管理系统.zip

    《基于Struts的图书管理系统——JSP信息办公实例解析》 在信息技术日益发达的今天,JSP(JavaServer Pages)作为Web开发中的重要技术之一,被广泛应用于各种信息系统的设计与开发,尤其是信息办公领域。本实例——...

    myeclipse+struts+Sql Server2000实例——2

    2. **Struts框架**: Struts是一个开源的MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性高的Web应用程序。在用户登录场景中,Struts可以帮助我们处理HTTP请求,管理业务逻辑,并将数据展示在视图层...

    简单的个人博客系统(struts2)

    总结来说,这个“简单的个人博客系统”是一个基于Struts2框架的Web应用实例,它展示了如何利用Java Web技术来实现一个功能完善的博客平台。开发者可以通过研究该项目,学习Struts2的用法以及如何构建一个完整的MVC...

Global site tag (gtag.js) - Google Analytics