问题:重复调用每次返回action的值相同
action:
================================================================
public class AccountAction extends ActionSupport {
/**
*生成验证图片的execute方法,
/*
public String validataImage(){
createInputStream(ValidateImageService.Disturb_Type_Complex);//生成图片inputStream
return SUCCESS;
}
/**
*生成图片的具体方法
/*
private String createInputStream(int disturbType) throws IOException{
ByteArrayOutputStream bos =new ByteArrayOutputStream();
String validateCode = null;
ValidateImageServiceImp validateImageService=new ValidateImageServiceImp();
validateCode = validateImageService.createValidateCode(disturbType,18, bos, 100, 30, null, 5);//把验证码图片放入bos
inputStream = new ByteArrayInputStream(bos.toByteArray());
bos.close();
return validateCode;
}
}
struts.xml
========================================================================
<action name="validataImage" class="com.dearfashion.eshop.security.action.AccountAction" method="validataImage">
<result name="success" type="stream">
<param name="contentType">image/jpeg</param>
<param name="inputName">inputStream</param>
</result>
</action>
jsp
====================================================
<img id="random" src="validataImage.action" />
<a href="#" onclick="javascript:document.getElementById('random').src='validataImage.action'">看不清楚</a>
==========================================
点击 ‘看不清楚’每次返回的结果是同一张图片,或者重复调用
<img id="random" src="validataImage.action" />
<img id="random" src="validataImage.action" />
多次,也是同一张图片,并且方法AccountAction.validataImage()只会执行一次
分析原因,可能是存在缓冲,也可能其他原因,如果直接用response的方式就没有问题
如:outStream = response.getOutputStream();
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
encoder.encode(image);
分享到:
相关推荐
1. **安装库**:首先,我们需要一个验证码生成库。例如,我们可以使用Apache Commons Codec库,它提供了生成随机字符串的功能。另外,还需要一个图像处理库,如Java的Java Advanced Imaging (JAI) 或者更简单的如...
### Struts2 生成验证码知识点解析 #### 一、引言 在Web应用程序开发中,验证码是一种常见的安全机制,用于防止自动化的恶意攻击,如垃圾邮件发送或非法登录尝试等。Struts2作为一款流行的Java Web应用框架,支持...
基于Struts2的验证码生成就是将这一功能集成到Struts2框架中的过程。 验证码的主要目的是验证用户是人类而非机器,通常通过显示一个随机生成的图像,要求用户输入图像中显示的字符来实现。在基于Struts2的验证码...
此外,每次新的验证码生成时,旧的验证码应从session中清除,防止重复使用。 在提供的文件列表中,我们看到的`.classpath`和`.project`是Eclipse项目设置文件,`WebContent`是Web应用的根目录,`src`是源代码目录,...
3. **生成中文验证码**: 验证码生成通常涉及随机选择汉字并组合。你可以使用Java的`Random`类和预先准备的汉字字符数组来生成随机的中文字符串。确保生成的字符串长度适中,一般4到6个字符。 4. **图形化验证码**: ...
验证码生成后,需要将其保存到Session中,以便后续前端提交时进行校验: ```java request.getSession().setAttribute("captcha", captcha); ``` 2. **图片验证码** 如果需要图形验证码,可以使用Java的`java....
验证码的生成,源代码,供参考
Struts2验证码用户登录是一个常见的...总的来说,Struts2验证码用户登录的实现涉及了后端验证码生成、session存储、前端JavaScript交互以及Struts2的MVC架构。理解并掌握这一过程,对于开发安全的Web应用程序至关重要。
1. **验证码生成**:验证码通常由随机生成的一串字符或数字组成,可以是纯文本、图片或数学问题。在Struts2中,可以使用Java的Random类或其他库(如Apache Commons Lang的RandomStringUtils)来生成验证码的内容,...
Struts2提供了一些内置的支持来帮助开发者生成和验证验证码,以增强网站的安全性。 验证码的种类多样,包括图像验证码、音频验证码、数学问题验证码等。在Struts2中,我们可以使用插件或自定义拦截器来实现这些功能...
验证码生成工具类是一种在Web应用中广泛使用的安全机制,它主要用于防止自动化的恶意操作,比如机器人注册、垃圾邮件发送等。这个工具类是用Java语言编写的,因此我们可以深入探讨一下Java验证码生成的相关技术和...
综上所述,Struts2验证码的实现利用了Java AWT库来生成内存中的图片,结合Struts2框架的流结果类型,实现了动态生成并返回验证码的功能。这种技术提高了网站安全性,防止了自动化脚本的恶意操作,同时通过JavaScript...
Struts2验证码是一种用于增强网站安全性的重要机制,它主要用于防止恶意自动化的机器人或者爬虫程序进行非法操作,比如批量注册、频繁登录等。在本项目中,开发者自定义了一个基于Struts2框架的验证码功能,使得...
这些可能包括Struts2的相关库、验证码生成库(如JCaptcha)、以及任何用于开发和调试的IDE或工具。 在"struts2Test"这个压缩包文件中,可能包含了实现上述流程的所有必要文件,如Action类的Java源代码、JSP页面、...
我们可以使用一个`<img>`标签来显示验证码图片,图片的src属性指向一个Struts2 Action,该Action负责生成并返回验证码的图片。图片可以通过将验证码字符串转换为像素并绘制到图像上实现。 4. **配置Struts2 Action*...
生成验证码图片主要涉及到两个类: 1.SecurityCode.java --- 生成验证码 SecurityCode类中提供的验证码分三个难度,易(全数字)、中(数字+小写英文)、难(数字+大小写英文)。难度使用枚举SecurityCodeLevle表示...
Struts验证码插件JCaptcha4Struts2是一个用于增强Web应用程序安全性的工具,它整合了Jcaptcha库,为Struts2框架提供了强大的验证码功能。在Web应用中,验证码是一种防止恶意自动化程序(如机器人)进行非法操作的...
在这个"struts2+spring3验证码登录实例"中,验证码功能是一个重要的安全措施,它可以防止恶意的自动登录尝试或机器人攻击。验证码通常由一串随机生成的字符或数字组成,用户需要在输入框中正确输入才能完成登录。...