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

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

相关推荐

    Struts 图片验证 源码

    Struts 图片验证 Struts 图片验证 Struts 图片验证

    struts2登录验证(验证码)

    struts2登录验证(验证码) 点击图片即可切换验证码 已打包成war

    struts2图片上传并预览

    2. 文件类型检查:验证上传的文件是否为图片格式,防止恶意文件上传。 3. 图片重命名:为上传的图片生成唯一文件名,防止同名文件覆盖。 4. 图片处理:可以使用Java的图像处理库如ImageIO对上传的图片进行缩放、裁剪...

    struts实现上传图片

    Struts 2是Struts的升级版本,引入了拦截器、类型转换和验证等功能,进一步简化了Web应用的开发过程。 ### 图片上传的实现步骤 #### 1. 页面代码 页面代码是用户与应用交互的第一线,对于图片上传功能而言,需要...

    struts2 图片上传,图片大小,图片格式

    在本项目中,我们关注的是Struts2中的图片上传功能,以及如何处理图片的大小和格式问题。这个压缩包包含了实现这些功能所需的jar文件和其他资源,例如TestUpload_Struts2项目。 首先,图片上传是Web应用中常见的...

    struts 图片上传demo

    总之,"struts 图片上传demo"是一个很好的学习资源,它涵盖了Struts框架下实现文件上传的基本流程和关键点,包括文件类型的验证、大小限制以及如何在服务器端存储上传的文件。通过这个示例,开发者可以掌握如何在...

    struts1实现图片上传

    在这个"struts1实现图片上传"的实践中,我们将深入探讨如何使用Struts1来处理图片上传功能,包括图片预览。 首先,我们需要在Struts1的配置文件`struts-config.xml`中定义一个Action,这个Action将处理图片上传的...

    struts2上传图片

    在Struts2中,可以使用`token`标签生成一个唯一的令牌,并在表单提交时验证: ```html 选择图片"/&gt; 上传"/&gt; ``` 在Action中,添加`TokenAware`接口并实现`checkToken()`方法来验证令牌: ```java public ...

    struts2-生成图片验证码

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

    struts2.0图片上传代码

    Struts2.0图片上传是Web开发中常见的一项功能,涉及到的主要知识点包括Struts2框架、文件上传处理、IO流操作以及配置文件的设定。在本文中,我们将深入探讨这些内容,帮助你理解和实现Struts2.0环境下的图片上传功能...

    struts中实现验证码

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

    struts1.2上传图片例子

    这里提到“添加Struts支持”意味着我们需要在项目的build路径中添加Struts 1.2的核心库(如`struts.jar`等),无需额外引入其他JAR包即可完成图片上传的功能。 #### 三、核心代码分析 1. **Action类:** `...

    struts2中绝对路径上传图片和显示图片

    在Struts2中处理文件上传是一项常见的任务,尤其是上传图片并展示它们。本篇将详细介绍如何在Struts2中实现绝对路径上传图片以及在页面上显示这些图片。 首先,了解文件上传的基本概念。在Web开发中,文件上传允许...

    ssh框架用struts2 hibernate实现图片的上传源码

    在图片上传的场景中,Struts2提供Action类来接收用户上传的图片文件,同时可以通过配置Struts2的配置文件(struts.xml)来定义Action的映射路径和处理方法,使得前端请求能够正确地路由到后端的处理逻辑。...

    java图片滑动验证(登录验证)原理与实现方法详解

    Java图片滑动验证(登录验证)原理与实现方法详解中,我们详细介绍了Java图片滑动验证(登录验证)的原理和实现方法,包括计算小图轮廓、抠图、校验等步骤。这些步骤可以帮助开发者更好地理解和实现Java图片滑动...

    struts2图片和文件上传

    标题与描述概述的知识点主要集中在Struts2框架中的文件与图片上传功能,下面将详细解析这一过程的关键步骤和实现机制。 ### Struts2文件与图片上传详解 #### 准备工作 - **导入必要的库**:为了实现文件上传功能,...

    struts2生成中文验证码的Action

    在这个特定的场景中,我们讨论的是如何在Struts2中创建一个能够生成中文验证码的Action。 验证码的主要目的是防止自动机器人或恶意攻击,通过向用户提供一组随机字符(通常是数字和/或字母)来验证他们是否是真实的...

    struts中图片上传的实现

    通过以上步骤,你已经成功地在Struts中实现了图片上传功能,并将图片保存在了Tomcat服务器上。这个过程涵盖了文件上传的基本流程,包括表单创建、Action配置、文件处理和安全验证,为实际的Web应用开发提供了基础。

    Struts2图片文件上传,判断图片格式和图片大小.rar_Struts2图片文件上传

    在Struts2框架中,图片文件的上传是一个常见的功能需求,尤其在网站或者应用程序中,用户可能需要上传个人头像、商品图片等。本教程主要关注如何实现这一过程,同时包含图片格式的验证以及文件大小的限制。我们将...

    struts1.2上传图片源代码(包含检查文件格式、限制文件大小功能)

    通过分析这些文件,我们可以深入理解如何在Struts1.2中实现图片上传功能及其附加的安全措施。对于初学者来说,这是一个很好的学习实例,可以帮助他们掌握Web开发中的文件上传操作和Struts1.2框架的使用。

Global site tag (gtag.js) - Google Analytics