spring mvc 使用kaptcha配置生成验证码实例
程序员文章站
2024-02-28 16:27:46
使用kaptcha 生成验证码十分简单并且参数可以进行自定义,以下简单记录下使用步骤。
1.在pom.xml中添加maven依赖:
使用kaptcha 生成验证码十分简单并且参数可以进行自定义,以下简单记录下使用步骤。
1.在pom.xml中添加maven依赖:
<dependency> <groupid>com.google.code.kaptcha</groupid> <artifactid>kaptcha</artifactid> <version>2.3</version> <classifier>jdk15</classifier> </dependency>
2.web.xml中配置kaptcha属性:
<bean id="verifycodeproducer" class="com.google.code.kaptcha.impl.defaultkaptcha"> <property name="config"> <bean class="com.google.code.kaptcha.util.config"> <constructor-arg> <props> <prop key="kaptcha.border">yes</prop> <prop key="kaptcha.border.color">105,179,90</prop> <prop key="kaptcha.border.thickness">1</prop> <prop key="kaptcha.noise.color">blue</prop> <prop key="kaptcha.image.width">150</prop> <prop key="kaptcha.image.height">50</prop> <prop key="kaptcha.session.key">verifycode</prop> <!-- <prop key="kaptcha.textproducer.char.string">0123456789abcdefghijklmnopqrst!@#$%^*</prop> --> <prop key="kaptcha.textproducer.char.length">4</prop> <prop key="kaptcha.textproducer.char.space">4</prop> <prop key="kaptcha.textproducer.font.size">30</prop> <prop key="kaptcha.textproducer.font.color">blue</prop> </props> </constructor-arg> </bean> </property> </bean>
其中bean节点的id值 verifycodeproducer 为在类中引用@resource生成实例时的名称;属性配置中 kaptcha.session.key 的值为在session中存取名称。
在servlet节点中配置
3.controller类中的相关方法:
@controller public class commoncontroller { @autowired private producer verifycodeproducer; @requestmapping(path = "/getverifycodeimage", method = requestmethod.get) public void getverifycodeimage(httpservletrequest request, httpservletresponse response) { httpsession session = request.getsession(); responseutils.nocache(response); response.setcontenttype("image/jpeg"); string captext = verifycodeproducer.createtext(); session.setattribute(constants.session_key_verify_code, captext); bufferedimage bi = verifycodeproducer.createimage(captext); servletoutputstream out = null; try { out = response.getoutputstream(); imageio.write(bi, "jpg", out); out.flush(); } catch (exception ex) { logger.error("failed to produce the verify code image: ", ex); throw new serverinternalexception("cannot produce the verify code image."); } finally { ioutils.closequietly(out); } } }
constants.session_key_verify_code为属性配置中 kaptcha.session.key 的值。
4.jsp:
<div class="form-group has-feedback"> <span class="glyphicon glyphicon-barcode form-control-feedback"></span> <input id="verifycode" name="verifycode" type="text" maxlength="4" class="form-control" placeholder="<spring:message code='login.label.code' />" /> <div style="height: 1px"></div> <img src="${pagecontext.request.contextpath}/getverifycodeimage" id="verifycodeimage" style="margin-bottom: -3px" /> <a href="#" rel="external nofollow" onclick="changeverifycode()"><spring:message code='login.code.tip' /></a> </div>
function changeverifycode() { $('#verifycodeimage').hide().attr('src', '${pagecontext.request.contextpath}/getverifycodeimage?' + math.floor(math.random()*100) ).fadein(); event.cancelbubble=true; }
5.kaptcha属性说明:
- kaptcha.border.color 边框颜色 默认为color.black
- kaptcha.border.thickness 边框粗细度 默认为1
- kaptcha.producer.impl 验证码生成器 默认为defaultkaptcha
- kaptcha.textproducer.impl 验证码文本生成器 默认为defaulttextcreator
- kaptcha.textproducer.char.string 验证码文本字符内容范围 默认为abcde2345678gfynmnpwx
- kaptcha.textproducer.char.length 验证码文本字符长度 默认为5
- kaptcha.textproducer.font.names 验证码文本字体样式 默认为new font("arial", 1, fontsize), new font("courier", 1, fontsize)
- kaptcha.textproducer.font.size 验证码文本字符大小 默认为40
- kaptcha.textproducer.font.color 验证码文本字符颜色 默认为color.black
- kaptcha.textproducer.char.space 验证码文本字符间距 默认为2
- kaptcha.noise.impl 验证码噪点生成对象 默认为defaultnoise
- kaptcha.noise.color 验证码噪点颜色 默认为color.black
- kaptcha.obscurificator.impl 验证码样式引擎 默认为waterripple
- kaptcha.word.impl 验证码文本字符渲染 默认为defaultwordrenderer
- kaptcha.background.impl 验证码背景生成器 默认为defaultbackground
- kaptcha.background.clear.from 验证码背景颜色渐进 默认为color.light_gray
- kaptcha.background.clear.to 验证码背景颜色渐进 默认为color.white
- kaptcha.image.width 验证码图片宽度 默认为200
- kaptcha.image.height 验证码图片高度 默认为50
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: mysql中的保留字段产生的问题