您的位置:首页 > 编程语言 > Java开发

struts2使用kaptcha实现验证码功能

2015-04-15 16:25 429 查看
1.下载kaptcha-2.3.2.jar,拷贝到项目中;

2.首先在web.xml文件中添加以下代码(包括struts2过滤器和Kaptcha的相关配置):

<?xml version="1.0" encoding="utf-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet>
<servlet-name>Kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
<init-param>
<param-name>kaptcha.image.width</param-name>
<param-value>150</param-value>
</init-param>
<init-param>
<param-name>kaptcha.image.height</param-name>
<param-value>50</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.font.size</param-name>
<param-value>30</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.char.length</param-name>
<param-value>4</param-value>
</init-param>
<init-param>
<param-name>kaptcha.border</param-name>
<param-value>no</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.font.color</param-name>
<param-value>black</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.char.space</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>kaptcha.obscurificator.impl</param-name>
<param-value>com.google.code.kaptcha.impl.ShadowGimpy</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.font.names</param-name>
<param-value>Arial, Courier</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Kaptcha</servlet-name>
<url-pattern>/Kaptcha.jpg</url-pattern>
</servlet-mapping>
<!--添加struts过滤器-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--设置项目的首页-->
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>


3.编写login.jsp显示页面,代码如下:

<%@page language="java" contentType="text/html;charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript"
src="<c:url value='/js/jquery-2.1.3.js'/>"></script>
<script type="text/javascript"
src="<c:url value='/js/login.js'/>"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录界面</title>
</head>
<body>
<img src="Kaptcha.jpg" id="kaptchaImage" />
<a href="javascript:_change()">换一张</a>
</body>
</html>


4.编写login.js文件,需要下载jquery,代码如下:

$(function() {
//点击图片本身更换图片
$('#kaptchaImage').click(function() {
$(this).attr('src', 'Kaptcha.jpg?' + Math.floor(Math.random() * 100));
})
});
//点击换一张,更换图片
function _change() {
$("#kaptchaImage").attr('src', 'Kaptcha.jpg?' + Math.floor(Math.random() * 100));
}


5.得到KaptchaServlet生成的验证码:

kaptchaServlet默认是把验证码保存在session中,如果是struts2的action,可以通过如下方式获取

String kaptchaExpected = (String)ActionContext.getContext().getSession().get(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);


如果是servlet,直接通过以下代码获取

request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);


KaptchaServlet生成验证码还有如下配置:

参考以下地址

参考:

kaptcha验证码使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: