spring mvc之验证码kaptcha
该验证码使用的谷歌的kaptcha,在他的基础上去掉了模糊的属性,和官方的jar包有区别。不废话,贴代码。
<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha"> <property name="config"> <bean class="com.google.code.kaptcha.util.Config"> <!--通过构造函数注入属性值 --> <constructor-arg type="java.util.Properties"> <props> <!-- 验证码宽度 --> <prop key="kaptcha.image.width">90</prop> <!-- 验证码高度 --> <prop key="kaptcha.image.height">36</prop> <!-- 生成验证码内容范围 --> <prop key="kaptcha.textproducer.char.string">0123456789</prop> <!-- 验证码个数 --> <prop key="kaptcha.textproducer.char.length">4</prop> <!-- 是否有边框 --> <prop key="kaptcha.border">yes</prop> <!-- 边框颜色 --> <prop key="kaptcha.border.color">black</prop> <!-- 边框厚度 --> <prop key="kaptcha.border.thickness">1</prop> <!-- 验证码字体颜色 --> <prop key="kaptcha.textproducer.font.color">black</prop> <!-- 验证码字体大小 --> <prop key="kaptcha.textproducer.font.size">33</prop> <!-- 验证码所属字体样式 --> <prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop> <prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop> <!-- 干扰线颜色 --> <!--<prop key="kaptcha.noise.color">blue</prop> --><!-- 验证码文本字符间距 --> <prop key="kaptcha.textproducer.char.space">3</prop> <pre name="code" class="html"> <!-- 该属性官方jar包没有,否则会报错,下面会帖jar包连接的 --> <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.NoWater</prop> </props> </constructor-arg> </bean> </property> </bean>页面上添加
<img class="kaptcha" id="kaptcha" src="kaptcha/kaptcha.do"/>另外别忘了加上jquery。因为下面用到了点击换验证码
$(function (){ $('#kaptcha').click( function (){ $(this).attr('src', 'kaptcha/kaptcha.do?' + Math.floor(Math.random() * 100)); } ); });我的spring拦截的后缀为.do的文件,大家根据自己的项目去修改。
@Controller("kaptchaController") @RequestMapping("/kaptcha") public class KaptchaController { @Autowired private Producer captchaProducer; @RequestMapping("/kaptcha.do") public void initCaptcha(HttpServletRequest request, HttpServletResponse response) throws Exception{ response.setDateHeader("Expires", 0); response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); response.addHeader("Cache-Control", "post-check=0, pre-check=0"); response.setHeader("Pragma", "no-cache"); response.setContentType("image/jpeg"); String capText = captchaProducer.createText(); request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText); BufferedImage bi = captchaProducer.createImage(capText); ServletOutputStream out = response.getOutputStream(); ImageIO.write(bi, "jpg", out); try{ out.flush(); }finally{ out.close(); } } }大家可以去下载我的jar包
下面是效果
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。