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包

下面是效果


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。