servlet 代码:
package com.radicasys.signup.jcaptcha;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.octo.captcha.service.CaptchaServiceException;
import com.octo.captcha.service.image.ImageCaptchaService;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImageCaptchaServlet extends HttpServlet {
private static final long serialVersionUID = 3258417209566116145L;
private Log logger = LogFactory.getLog(this.getClass());
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
}
protected void doGet(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws ServletException,
IOException {
byte[] captchaChallengeAsJpeg = null;
// the output stream to render the captcha image as jpeg into
ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
try {
// get the image captcha service defined via the
//SpringFramework
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext());
Object bean = ctx.getBean("jcaptchaService");
ImageCaptchaService imageCaptchaService = (ImageCaptchaService) bean;
// get the id that will identify the generated captcha.
// the same id must be used to validate the response
String captchaId = httpServletRequest.getParameter("captchaId");
logger.debug("captchaIdParameter: "
+ httpServletRequest.getParameter("captchaId"));
if (captchaId == null) {
// If a captcha id is not passed in, use the session id
captchaId = httpServletRequest.getSession().getId();
logger.debug("httpServletRequest.session.id: "
+ httpServletRequest.getSession().getId());
}
logger.debug("captchaId: " + captchaId);
// call the ImageCaptchaService getChallenge method
BufferedImage challenge = imageCaptchaService
.getImageChallengeForID(captchaId,
httpServletRequest.getLocale());
// a jpeg encoder
JPEGImageEncoder jpegEncoder = JPEGCodec
.createJPEGEncoder(jpegOutputStream);
jpegEncoder.encode(challenge);
} catch (IllegalArgumentException e) {
httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
} catch (CaptchaServiceException e) {
httpServletResponse
.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
captchaChallengeAsJpeg = jpegOutputStream.toByteArray();
// flush it in the response
httpServletResponse.setHeader("Cache-Control", "no-store");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setDateHeader("Expires", 0);
httpServletResponse.setContentType("image/jpeg");
ServletOutputStream responseOutputStream = httpServletResponse
.getOutputStream();
responseOutputStream.write(captchaChallengeAsJpeg);
responseOutputStream.flush();
responseOutputStream.close();
}
}
web.xml加入:
<servlet>
<servlet-name>jcaptcha</servlet-name>
<servlet-class>
com.radicasys.signup.jcaptcha.ImageCaptchaServlet
</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jcaptcha</servlet-name>
<url-pattern>/user/jcaptcha</url-pattern>
</servlet-mapping>
jsp页面代码如下:
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<script language="javascript" type="text/javascript">
function changeImage() {
document.getElementById('kaptchaImage').src = 'jcaptcha?captchaId=' + Math.random();
}
</script>
<tr>
<th nowrap="nowrap"><fmt:message key="rememberPassword.code"/></th>
<td>
<s:url value="./jcaptcha" id="jcaptcha">
<s:param name="captchaId" value="captchaId"/>
</s:url>
<img src="<s:property value="#jcaptcha"/>" width="130" id="kaptchaImage"
name="photo" onclick="changeImage();"></td>
</tr>
<tr>
<th></th>
<td><a href="javascript:changeImage();" title="<fmt:message key="user.jcaptcha.see"/>"
tabindex="-2" style="color: gray; width: 130px"><fmt:message key="user.jcaptcha.see"></fmt:message></a></td>
</tr>
<tr>
<th></th>
<td valign="top"><fmt:message key="user.validateCode"></fmt:message> <input type="text"
name="jcaptchaResponse
" value=''></td>
</tr>
<tr>
<td colspan="2"><s:submit value="%{getText('button.next')}" /></td>
</tr>
struts2 action中的代码:
private String jcaptchaResponse;
//set get method......
public boolean checkJcaptcha() {
boolean flag = false;
String id = getRequest().getSession().getId();
if (StringUtils.isNotBlank(jcaptchaResponse)) {
flag = imageCaptchaService.validateResponseForID(id,
jcaptchaResponse);
}
return flag;
}
分享到:
相关推荐
基于java的开发源码-Struts验证码插件 JCaptcha4Struts2.zip 基于java的开发源码-Struts验证码插件 JCaptcha4Struts2.zip 基于java的开发源码-Struts验证码插件 JCaptcha4Struts2.zip 基于java的开发源码-Struts...
【JCaptcha4Struts2快速使用指南】 JCaptcha4Struts2 是一个专门为Struts2框架集成JCaptcha验证码服务的插件。JCaptcha本身是一种强大的、可自定义的图像验证码库,旨在防止自动机器人和恶意软件对网站进行非法操作...
Struts验证码插件JCaptcha4Struts2是一个用于增强Web应用程序安全性的工具,它整合了Jcaptcha库,为Struts2框架提供了强大的验证码功能。在Web应用中,验证码是一种防止恶意自动化程序(如机器人)进行非法操作的...
jcaptcha4struts2 从 code.google.com/p/jcaptcha4struts2 自动导出 JCaptcha4Struts2 快速入门指南 ##1。 安装 安装和配置 JCaptcha4Struts2 很简单。 从下载插件的最新版本将 JAR 文件包含在您的 Struts2 应用程序...
《Struts2环境下的Jcaptcha4Struts2验证码组件详解》 在Web开发中,验证码是一种常见的安全机制,用于防止自动化的恶意攻击,如机器人填写表单或进行非法操作。Struts2作为Java Web开发中广泛应用的MVC框架,与...
JAVA源码Struts验证码插件JCaptcha4Struts2
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动化的机器人或恶意软件通过表单提交进行欺诈性操作。在Web开发中,验证码(CAPTCHA)是一种常用的方法,用于区分人类用户和计算机...
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动机器人或恶意用户通过自动化脚本进行非法操作,如批量注册、恶意登录等。这个插件结合了Struts2框架和JCaptcha库,为Struts2应用...
java资源Struts验证码插件 JCaptcha4Struts2提取方式是百度网盘分享地址
`JCaptcha4Struts2`是一个专为Struts2设计的验证码插件,它允许开发者轻松集成验证码功能到他们的应用中。 首先,`JCaptcha4Struts2`依赖于`JCaptcha`库,这是一个Java实现的开源验证码生成器。`JCaptcha`提供了一...
5. **示例应用**:如果提供的压缩包包含一个完整的示例应用,那么你可以直接运行这个应用,了解如何在实际项目中使用JCaptcha4Struts2插件。这可能包括Web应用的部署描述符(如`web.xml`),以及必要的Maven或Gradle...
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用程序的安全组件,旨在防止自动机器人或恶意用户通过表单提交不合法数据。该插件基于Java的开源项目JCaptcha(Just Another CAPTCHA)构建,提供了可视化挑战...
jcaptcha4struts2-2.0.1,jcaptcha4struts2-2.0.1的jar包
Struts验证码插件 JCaptcha4Struts2.7z
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
**基于Struts2在线考试系统**是一个典型的JavaEE应用程序,主要使用了Struts2作为MVC框架,结合MySQL数据库存储数据,以及JSP用于展示页面。这个系统实现了验证码登录功能,确保用户验证身份的安全性,同时具备题目...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
2. **开源项目**:JCaptcha是基于Apache License 2.0开源协议的,这意味着任何人都可以免费使用、修改和分发代码,这对于开发者来说具有很高的灵活性和可扩展性。 3. **Java实现**:JCaptcha是用Java语言开发的,...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...