项目中要用验证码,在网上找到的struts2验证码是把返回结果配置成文件流,通过类似于下载来实现的,不太理想。于是把孙修鹏网友的代码稍作修改,自己实现了一个。struts2也是遵循请求响应的模式,如果把响应直接写到response里面,则返回结果不做配置就可以了。
代码如下
action
其中makeImage方法的返回结果是void
package com.image;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Map;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Image extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
public void makeImage() throws Exception{
Map<String, Object> session = ActionContext.getContext().getSession();
HttpServletResponse res = ServletActionContext.getResponse();
BufferedImage img = new BufferedImage(68, 22,
BufferedImage.TYPE_INT_RGB);
// 得到该图片的绘图对象
Graphics g = img.getGraphics();
Random r = new Random();
Color c = new Color(200, 150, 255);
g.setColor(c);
// 填充整个图片的颜色
g.fillRect(0, 0, 68, 22);
// 向图片中输出数字和字母
StringBuffer sb = new StringBuffer();
char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
int index, len = ch.length;
for (int i = 0; i < 4; i++) {
index = r.nextInt(len);
g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255)));
g.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 22));// 输出的字体和大小
g.drawString("" + ch[index], (i * 15) + 3, 18);// 写什么数字,在图片的什么位置画
sb.append(ch[index]);
}
session.put("piccode", sb.toString());
ImageIO.write(img, "JPG", res.getOutputStream());
}
}
配置文件,这里是关键
<action name="image" class="com.image.Image" method="makeImage"></action>
大家看到了,返回的结果是空的,返回的内容已经写到response中了,这里就没必要再配置了。
其实框架只是让我们用起来更方便更有效率,但是原理的东西永远不过过时的。
分享到:
相关推荐
通过设置`src`属性为一个Struts2的Action,该Action会返回验证码的图片流。 ```html ``` 4. **JavaScript交互** 前端通常需要提供一个刷新验证码的功能,这可以通过JavaScript实现。添加一个按钮,当点击时...
2. **配置Struts2**:在Struts2的配置文件(struts.xml)中,我们需要定义一个Action,这个Action将负责生成验证码。Action应该有一个结果类型,指向一个JSP页面或者FreeMarker模板,用于显示验证码图片。 3. **...
2. **Struts2**:一个开源的Java EE框架,用于构建企业级Web应用程序。 3. **Action**:在Struts2中负责处理业务逻辑,并响应用户请求的类。 4. **配置文件**:Struts2使用配置文件来定义项目的结构和组件。 5. **...
"最新的struts2验证码.rar"很可能包含了有关如何在Struts2框架下实现验证码功能的示例代码或配置文件。 Struts2验证码的实现通常涉及到以下几个关键知识点: 1. **验证码生成**:验证码通常由随机生成的一串字符或...
Struts1.x是一个经典的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Web开发中,验证码(CAPTCHA)是一种重要的安全机制,它用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、垃圾...
Struts验证码插件...总的来说,Struts验证码插件JCaptcha4Struts2是Java Web开发者应对自动化攻击的一个有力工具,它通过简单的集成和配置,即可为Struts2应用提供强大的验证码保护功能,有效提升了系统的安全性。
Struts2是一个流行的Java ...总结来说,这个Struts2验证码程序的实现涉及到前端JavaScript交互、后台Java类的图像生成和Struts2的Action处理。它展示了如何结合多种技术来提供安全的用户体验,防止自动化的恶意活动。
通过以上步骤,可以在Struts2框架下实现一个完整的图片验证码功能。这种方法不仅简单高效,而且易于集成到现有的项目中。此外,还可以根据实际需求进一步优化验证码的复杂度和安全性,例如增加扭曲效果、使用更复杂...
Struts验证码简单实用的小demo是基于Struts框架实现的一个用于网页身份验证的示例项目。在Web开发中,验证码是一种防止恶意自动程序(如机器人)滥用服务的有效手段,它要求用户在提交表单时输入显示在页面上的随机...
首先,"jcaptcha4struts2-demo-2.0.1.zip"是一个包含Jcaptcha4Struts2验证码插件示例的压缩包,版本为2.0.1。这个DEMO旨在帮助开发者快速理解和应用Jcaptcha4Struts2,为初学者提供了一个基础入门级的学习资源。 ...
在本案例中,“成功的验证码案例-----struts验证码demo”是一个基于Struts框架实现的简单易懂的验证码应用。Struts是Java EE平台上的一款开源MVC框架,它为构建Web应用程序提供了强大的结构支持。 首先,我们来理解...
Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,主要用于构建企业级Web应用。在本项目中,“仿CSDN样式(Struts2中文验证码源代码)”是为了实现类似CSDN登录页面的中文...
在IT行业中,Struts2是一个非常流行的Java Web开发框架,它基于MVC(Model-View-Controller)设计模式,提供了一种结构化的方式来构建应用程序。验证码(Verification Code)是网络应用中常用的一种安全机制,用于...
在Spring中,我们可以配置一个Bean来代表验证码服务,然后在Struts2 Action中注入这个服务,以便获取和验证验证码。在Hibernate中,虽然通常不需要直接与验证码交互,但如果有存储用户验证历史需求,我们可以利用...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、易于维护的MVC(模型-视图-控制器)架构的应用程序。基于Struts2的个人信息管理系统是使用这一框架来设计和实现的一个典型示例,它涵盖了用户管理...
JCaptcha4Struts2 是一个专门为Struts2框架集成JCaptcha验证码服务的插件。JCaptcha本身是一种强大的、可自定义的图像验证码库,旨在防止自动机器人和恶意软件对网站进行非法操作。在Struts2项目中添加JCaptcha验证...
本项目"struts2简单登录"是基于Struts2框架实现的一个基础登录系统,它采用DAO(数据访问对象)模式来处理数据持久层操作。 在Struts2中,核心概念包括Action、Result和Interceptor。Action是业务逻辑的载体,它...
本实例将详细讲解如何使用Struts2实现一个简单的登录功能。 一、Struts2基础 Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并改进了其不足,如更灵活的配置、更强的拦截器机制等。Struts2的核心是...
【双鱼林struts2_hibernate人事工资管理系统】是一个基于Java技术栈的开源项目,主要应用于企业的人事管理和工资计算。系统集成了Struts2框架和Hibernate持久化框架,为企业的日常人力资源管理提供了便捷的数据处理...