`

Struts版的验证码生成使用方法

阅读更多
package cn.com.lough.struts.action;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.commons.lang.RandomStringUtils;

/**
* MyEclipse Struts Creation date: 01-11-2007
*
* XDoclet definition:
*
* @struts.action validate="true"
*/
public class ValidatecodeAction extends Action {
/*
* Generated Methods
*/

/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
try {
int width = 50;
int height = 18;
// 取得一个4位随机字母数字字符串
String s = RandomStringUtils.random(4, true, true);

// 保存入session,用于与用户的输入进行比较.
// 注意比较完之后清除session.
HttpSession session = request.getSession(true);
session.setAttribute("validateCode", s);

response.setContentType("images/jpeg");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

ServletOutputStream out = response.getOutputStream();
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
// 设定背景色
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);

// 设定字体
Font mFont = new Font("Times New Roman", Font.BOLD, 18);// 设置字体
g.setFont(mFont);

// 画边框
// g.setColor(Color.BLACK);
// g.drawRect(0, 0, width - 1, height - 1);

// 随机产生干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160, 200));
// 生成随机类
Random random = new Random();
for (int i = 0; i < 155; i++) {
int x2 = random.nextInt(width);
int y2 = random.nextInt(height);
int x3 = random.nextInt(12);
int y3 = random.nextInt(12);
g.drawLine(x2, y2, x2 + x3, y2 + y3);
}

// 将认证码显示到图象中
g.setColor(new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110)));

g.drawString(s, 2, 16);

// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write((BufferedImage) image, "JPEG", out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

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);
}
}
[/codes]


jsp页面的调用
<html:img page="/validatecode.do" border="0" onclick="this.src='/validatecode.do'" alt="请输入此验证码,如看不清请点击刷新。" style="cursor:pointer" />
分享到:
评论

相关推荐

    Struts2的验证码生成

    1. **安装库**:首先,我们需要一个验证码生成库。例如,我们可以使用Apache Commons Codec库,它提供了生成随机字符串的功能。另外,还需要一个图像处理库,如Java的Java Advanced Imaging (JAI) 或者更简单的如...

    struts2 生成验证码

    ### Struts2 生成验证码知识点解析 #### 一、引言 在Web应用程序开发中,验证码是一种常见的安全机制,用于防止自动化的恶意攻击,如垃圾邮件发送或非法登录尝试等。Struts2作为一款流行的Java Web应用框架,支持...

    验证码生成工具类

    验证码生成工具类是一种在Web应用中广泛使用的安全机制,它主要用于防止自动化的恶意操作,比如机器人注册、垃圾邮件发送等。这个工具类是用Java语言编写的,因此我们可以深入探讨一下Java验证码生成的相关技术和...

    基于struts2的验证码生成

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

    struts2验证码生成

    验证码的生成,源代码,供参考

    struts2生成中文验证码的Action

    3. **生成中文验证码**: 验证码生成通常涉及随机选择汉字并组合。你可以使用Java的`Random`类和预先准备的汉字字符数组来生成随机的中文字符串。确保生成的字符串长度适中,一般4到6个字符。 4. **图形化验证码**: ...

    Struts2验证码

    验证码生成后,需要将其保存到Session中,以便后续前端提交时进行校验: ```java request.getSession().setAttribute("captcha", captcha); ``` 2. **图片验证码** 如果需要图形验证码,可以使用Java的`java....

    struts2-生成图片验证码

    此外,每次新的验证码生成时,旧的验证码应从session中清除,防止重复使用。 在提供的文件列表中,我们看到的`.classpath`和`.project`是Eclipse项目设置文件,`WebContent`是Web应用的根目录,`src`是源代码目录,...

    struts2 验证码----web界面生成几种常见的验证码

    5. **工具使用**:除了Struts2的插件,还有许多第三方库可以帮助我们生成验证码,例如,Google的reCAPTCHA服务,它可以提供更高级的保护,如行为分析,以检测是否为真实人类。这些工具的集成也可以在Struts2项目中...

    Struts2验证码用户登录

    Struts2验证码用户登录是一个常见的...总的来说,Struts2验证码用户登录的实现涉及了后端验证码生成、session存储、前端JavaScript交互以及Struts2的MVC架构。理解并掌握这一过程,对于开发安全的Web应用程序至关重要。

    最新的struts2验证码.rar

    1. **验证码生成**:验证码通常由随机生成的一串字符或数字组成,可以是纯文本、图片或数学问题。在Struts2中,可以使用Java的Random类或其他库(如Apache Commons Lang的RandomStringUtils)来生成验证码的内容,...

    基于struts1.x的验证码实现

    在实际的Struts1.x项目中,可以创建一个专门的Action来处理验证码的生成和验证,然后在对应的JSP页面上使用Struts标签库来调用这个Action。例如,你可能会有一个名为`GenerateCaptchaAction`的类,负责生成验证码,...

    用struts实现验证码.rar

    1. **创建验证码生成器**: 验证码通常由随机数字或字母组成,你需要编写一个类来生成这些随机字符并将其转化为图像。这个类可能包含一个方法,该方法返回一个包含随机字符串的BufferedImage对象。 2. **配置...

    java登录验证码生成代码

    一个登录验证生成验证码用struts 后台生成验证码在jsp页面输出生成图片

    struts2验证码.pdf

    本篇文章将详细解析如何在Struts2中生成和使用基于AWT的内存图片验证码。 首先,验证码的生成过程通常分为以下几个步骤: 1. **生成随机字符串**: 在`creatidateAction`类中,我们看到`createRandomString()`...

    一个简单的struts2验证码

    这些可能包括Struts2的相关库、验证码生成库(如JCaptcha)、以及任何用于开发和调试的IDE或工具。 在"struts2Test"这个压缩包文件中,可能包含了实现上述流程的所有必要文件,如Action类的Java源代码、JSP页面、...

    struts中实现验证码

    当用户提交表单时,Struts2会将输入框中的验证码与服务器端生成的验证码进行比较。如果匹配,验证通过,否则返回错误信息提示用户重新输入。 通过以上步骤,Struts2框架能够提供一个完整的验证码解决方案,确保了...

    struts2验证码

    这个类通常会包含两个方法,一个用于生成随机的验证码字符串并将其保存到session中,另一个用于接收用户输入的验证码并进行比较。 2. **拦截器(Interceptor)**:Struts2的拦截器可以用来扩展框架的功能,如日志、...

    struts2实现验证码

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

    struts2生成验证码

    生成验证码图片主要涉及到两个类: 1.SecurityCode.java --- 生成验证码 SecurityCode类中提供的验证码分三个难度,易(全数字)、中(数字+小写英文)、难(数字+大小写英文)。难度使用枚举SecurityCodeLevle表示...

Global site tag (gtag.js) - Google Analytics