`

Struts 验证图片。

阅读更多
Java代码

   1. package cn.com.lough.struts.action; 
   2.  
   3. import java.awt.Color; 
   4. import java.awt.Font; 
   5. import java.awt.Graphics; 
   6. import java.awt.image.BufferedImage; 
   7. import java.util.Random; 
   8.  
   9. import javax.imageio.ImageIO; 
  10. import javax.servlet.ServletOutputStream; 
  11. import javax.servlet.http.HttpServletRequest; 
  12. import javax.servlet.http.HttpServletResponse; 
  13. import javax.servlet.http.HttpSession; 
  14.  
  15. import org.apache.struts.action.Action; 
  16. import org.apache.struts.action.ActionForm; 
  17. import org.apache.struts.action.ActionForward; 
  18. import org.apache.struts.action.ActionMapping; 
  19. import org.apache.commons.lang.RandomStringUtils; 
  20.  
  21. /**
  22.  * MyEclipse Struts Creation date: 01-11-2007
  23.  * 
  24.  * XDoclet definition:
  25.  * 
  26.  * @struts.action validate="true"
  27.  */ 
  28. public class ValidatecodeAction extends Action { 
  29.     /*
  30.      * Generated Methods
  31.      */ 
  32.  
  33.     /**
  34.      * Method execute
  35.      * 
  36.      * @param mapping
  37.      * @param form
  38.      * @param request
  39.      * @param response
  40.      * @return ActionForward
  41.      */ 
  42.     public ActionForward execute(ActionMapping mapping, ActionForm form, 
  43.             HttpServletRequest request, HttpServletResponse response) { 
  44.         try { 
  45.             int width = 50; 
  46.             int height = 18; 
  47.             // 取得一个4位随机字母数字字符串 
  48.             String s = RandomStringUtils.random(4, true, true); 
  49.  
  50.             // 保存入session,用于与用户的输入进行比较. 
  51.             // 注意比较完之后清除session. 
  52.             HttpSession session = request.getSession(true); 
  53.             session.setAttribute("validateCode", s); 
  54.  
  55.             response.setContentType("images/jpeg"); 
  56.             response.setHeader("Pragma", "No-cache"); 
  57.             response.setHeader("Cache-Control", "no-cache"); 
  58.             response.setDateHeader("Expires", 0); 
  59.  
  60.             ServletOutputStream out = response.getOutputStream(); 
  61.             BufferedImage image = new BufferedImage(width, height, 
  62.                     BufferedImage.TYPE_INT_RGB); 
  63.             Graphics g = image.getGraphics(); 
  64.             // 设定背景色 
  65.             g.setColor(getRandColor(200, 250)); 
  66.             g.fillRect(0, 0, width, height); 
  67.  
  68.             // 设定字体 
  69.             Font mFont = new Font("Times New Roman", Font.BOLD, 18);// 设置字体 
  70.             g.setFont(mFont); 
  71.  
  72.             // 画边框 
  73.             // g.setColor(Color.BLACK); 
  74.             // g.drawRect(0, 0, width - 1, height - 1); 
  75.  
  76.             // 随机产生干扰线,使图象中的认证码不易被其它程序探测到 
  77.             g.setColor(getRandColor(160, 200)); 
  78.             // 生成随机类 
  79.             Random random = new Random(); 
  80.             for (int i = 0; i < 155; i++) { 
  81.                 int x2 = random.nextInt(width); 
  82.                 int y2 = random.nextInt(height); 
  83.                 int x3 = random.nextInt(12); 
  84.                 int y3 = random.nextInt(12); 
  85.                 g.drawLine(x2, y2, x2 + x3, y2 + y3); 
  86.             } 
  87.  
  88.             // 将认证码显示到图象中 
  89.             g.setColor(new Color(20 + random.nextInt(110), 20 + random 
  90.                     .nextInt(110), 20 + random.nextInt(110))); 
  91.  
  92.             g.drawString(s, 2, 16); 
  93.  
  94.             // 图象生效 
  95.             g.dispose(); 
  96.             // 输出图象到页面 
  97.             ImageIO.write((BufferedImage) image, "JPEG", out); 
  98.             out.close(); 
  99.         } catch (Exception e) { 
100.             e.printStackTrace(); 
101.         } 
102.         return null; 
103.     } 
104.  
105.     private Color getRandColor(int fc, int bc) { // 给定范围获得随机颜色 
106.         Random random = new Random(); 
107.         if (fc > 255) 
108.             fc = 255; 
109.         if (bc > 255) 
110.             bc = 255; 
111.         int r = fc + random.nextInt(bc - fc); 
112.         int g = fc + random.nextInt(bc - fc); 
113.         int b = fc + random.nextInt(bc - fc); 
114.         return new Color(r, g, b); 
115.     } 
116. } 
117.  
118.  
119. jsp页面的调用  
120. <html:img page="/validatecode.do" border="0" onclick="this.src='/validatecode.do'" alt="请输入此验证码,如看不清请点击刷新。" style="cursor:pointer" />
分享到:
评论

相关推荐

    Struts 图片验证 源码

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

    struts2图片上传并预览

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

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

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

    struts实现上传图片

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

    struts1实现图片上传

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

    struts2.0图片上传代码

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

    struts 图片上传demo

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

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

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

    struts2图片和文件上传

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

    struts2上传图片

    在"struts2上传图片"这个场景下,我们将深入探讨如何在Struts2框架下实现用户上传图片的功能,并关注网站统计访问量以及防止重复提交的问题。 首先,上传图片是Web应用中常见的功能,它涉及到前端表单设计、后端...

    struts1.2上传图片例子

    ### Struts 1.2 图片上传实例解析 #### 一、概述 在Web开发过程中,文件上传是一项常见的功能需求。对于使用Struts框架进行开发的项目而言,掌握如何利用Struts实现文件上传是非常必要的技能之一。本文将通过一个...

    struts2-生成图片验证码

    通过整合这些组件,开发者可以构建一个完整的Struts2应用程序,其中包含生成和验证图片验证码的功能,从而增强网站的安全性。这个过程涉及到Java编程、Web图像处理、HTTP协议理解以及Struts2框架的深入运用。

    struts+spring上传图片实例

    10. **测试**:确保编写单元测试和集成测试,以验证图片上传功能的正确性,包括边界条件和异常情况。 以上就是"struts+spring上传图片实例"中的核心知识点。理解并掌握这些内容,将有助于开发出稳定、安全且用户...

    struts2图片上传

    本文将详细讲解如何使用Struts2实现图片上传,并涉及相关的验证、处理和存储策略。 首先,要在页面上创建一个用于选择图片的表单元素。Struts2提供了一种简单的方式,通过使用其内置的`&lt;s:file&gt;`标签来实现。例如:...

    Struts+hibernate图片上传

    在实际开发中,你可能需要编写JUnit测试用例来验证图片上传功能的正确性,确保文件能够成功上传并存储至数据库。 总的来说,这个"Struts+Hibernate图片上传"程序涉及了前端表单提交、Struts的Action处理、Hibernate...

    Struts2 图片验证码

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

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

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

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

    3. **文件格式检查**:为了防止恶意用户上传非图片文件或执行代码注入,我们需要在服务器端验证上传文件的格式。这通常通过检查文件的扩展名或实际内容类型来完成。例如,我们可以检查文件扩展名是否为`.jpg`, `.png...

    struts2 图片 验证码

    总结来说,Struts2实现图片验证码主要涉及生成随机字符串、绘制图片、配置Action、定义结果类型以及处理用户验证。这个过程需要结合Java图形编程、HTTP响应处理和会话管理等多个方面的知识。通过实践,你可以更好地...

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

    Java图片滑动验证(登录验证)原理与实现方法详解 Java图片滑动验证(登录验证)是一种常用的身份验证机制,它可以有效地防止机器人和恶意攻击。下面将详细介绍Java图片滑动验证(登录验证)的原理和实现方法。 ...

Global site tag (gtag.js) - Google Analytics