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 图片验证
2. 文件类型检查:验证上传的文件是否为图片格式,防止恶意文件上传。 3. 图片重命名:为上传的图片生成唯一文件名,防止同名文件覆盖。 4. 图片处理:可以使用Java的图像处理库如ImageIO对上传的图片进行缩放、裁剪...
在本项目中,我们关注的是Struts2中的图片上传功能,以及如何处理图片的大小和格式问题。这个压缩包包含了实现这些功能所需的jar文件和其他资源,例如TestUpload_Struts2项目。 首先,图片上传是Web应用中常见的...
Struts 2是Struts的升级版本,引入了拦截器、类型转换和验证等功能,进一步简化了Web应用的开发过程。 ### 图片上传的实现步骤 #### 1. 页面代码 页面代码是用户与应用交互的第一线,对于图片上传功能而言,需要...
在这个"struts1实现图片上传"的实践中,我们将深入探讨如何使用Struts1来处理图片上传功能,包括图片预览。 首先,我们需要在Struts1的配置文件`struts-config.xml`中定义一个Action,这个Action将处理图片上传的...
Struts2.0图片上传是Web开发中常见的一项功能,涉及到的主要知识点包括Struts2框架、文件上传处理、IO流操作以及配置文件的设定。在本文中,我们将深入探讨这些内容,帮助你理解和实现Struts2.0环境下的图片上传功能...
总之,"struts 图片上传demo"是一个很好的学习资源,它涵盖了Struts框架下实现文件上传的基本流程和关键点,包括文件类型的验证、大小限制以及如何在服务器端存储上传的文件。通过这个示例,开发者可以掌握如何在...
在Struts2框架中,图片文件的上传是一个常见的功能需求,尤其在网站或者应用程序中,用户可能需要上传个人头像、商品图片等。本教程主要关注如何实现这一过程,同时包含图片格式的验证以及文件大小的限制。我们将...
标题与描述概述的知识点主要集中在Struts2框架中的文件与图片上传功能,下面将详细解析这一过程的关键步骤和实现机制。 ### Struts2文件与图片上传详解 #### 准备工作 - **导入必要的库**:为了实现文件上传功能,...
在"struts2上传图片"这个场景下,我们将深入探讨如何在Struts2框架下实现用户上传图片的功能,并关注网站统计访问量以及防止重复提交的问题。 首先,上传图片是Web应用中常见的功能,它涉及到前端表单设计、后端...
### Struts 1.2 图片上传实例解析 #### 一、概述 在Web开发过程中,文件上传是一项常见的功能需求。对于使用Struts框架进行开发的项目而言,掌握如何利用Struts实现文件上传是非常必要的技能之一。本文将通过一个...
通过整合这些组件,开发者可以构建一个完整的Struts2应用程序,其中包含生成和验证图片验证码的功能,从而增强网站的安全性。这个过程涉及到Java编程、Web图像处理、HTTP协议理解以及Struts2框架的深入运用。
10. **测试**:确保编写单元测试和集成测试,以验证图片上传功能的正确性,包括边界条件和异常情况。 以上就是"struts+spring上传图片实例"中的核心知识点。理解并掌握这些内容,将有助于开发出稳定、安全且用户...
本文将详细讲解如何使用Struts2实现图片上传,并涉及相关的验证、处理和存储策略。 首先,要在页面上创建一个用于选择图片的表单元素。Struts2提供了一种简单的方式,通过使用其内置的`<s:file>`标签来实现。例如:...
在实际开发中,你可能需要编写JUnit测试用例来验证图片上传功能的正确性,确保文件能够成功上传并存储至数据库。 总的来说,这个"Struts+Hibernate图片上传"程序涉及了前端表单提交、Struts的Action处理、Hibernate...
总的来说,Struts2图片验证码的实现涉及了Action的逻辑处理、图像生成、session管理、表单验证等多个方面,体现了Struts2框架在构建复杂业务逻辑时的强大能力。通过熟练掌握这一技术,开发者可以为Web应用提供更为...
在图片上传的场景中,Struts2提供Action类来接收用户上传的图片文件,同时可以通过配置Struts2的配置文件(struts.xml)来定义Action的映射路径和处理方法,使得前端请求能够正确地路由到后端的处理逻辑。...
3. **文件格式检查**:为了防止恶意用户上传非图片文件或执行代码注入,我们需要在服务器端验证上传文件的格式。这通常通过检查文件的扩展名或实际内容类型来完成。例如,我们可以检查文件扩展名是否为`.jpg`, `.png...
总结来说,Struts2实现图片验证码主要涉及生成随机字符串、绘制图片、配置Action、定义结果类型以及处理用户验证。这个过程需要结合Java图形编程、HTTP响应处理和会话管理等多个方面的知识。通过实践,你可以更好地...
Java图片滑动验证(登录验证)原理与实现方法详解 Java图片滑动验证(登录验证)是一种常用的身份验证机制,它可以有效地防止机器人和恶意攻击。下面将详细介绍Java图片滑动验证(登录验证)的原理和实现方法。 ...