SpringMVC整合Jcaptcha - Milan418/image GitHub Wiki

#开源组件Jcaptcha生成验证码 Jcaptcha是一个生成图形验证码的Java开源组件,常与Spring组合使用

#SpringMVC中使用Jcaptcha ##maven依赖 com.octo.captcha jcaptcha-all 1.0-RC6 quartz quartz commons-dbcp commons-dbcp commons-pool commons-pool hsqldb hsqldb net.sf.ehcache ehcache concurrent concurrent org.springframework spring xerces xercesImpl xerces xmlParserAPIs

##将Jcaptcha的Bean加入Spring管理 增加spring-jcaptcha.xml配置文件在,如下:

       <bean id="captchaService" class="com.octo.captcha.service.multitype.GenericManageableCaptchaService">
       <constructor-arg index="0"><ref bean="imageEngine"/></constructor-arg>
           <constructor-arg index="1"><value>180</value></constructor-arg>
           <constructor-arg index="2"><value>180000</value></constructor-arg>
       </bean>

     <bean id="imageEngine" class="com.octo.captcha.engine.GenericCaptchaEngine">
        <constructor-arg index="0">
           <list>
              <ref bean="captchaFactory" />
           </list>
        </constructor-arg>
      </bean>

    <bean id="captchaFactory" class="com.octo.captcha.image.gimpy.GimpyFactory">
       <constructor-arg>
         <ref bean="wordgen" />
       </constructor-arg>
       <constructor-arg>
         <ref bean="wordtoimage" />
       </constructor-arg>
     </bean>

     <bean id="wordgen" class="com.octo.captcha.component.word.wordgenerator.RandomWordGenerator">
        <!--可选字符-->
        <constructor-arg>
          <value>0123456789abcdefghijklmnopqrstuvwxyz</value>
        </constructor-arg>
      </bean>

      <bean id="wordtoimage" class="com.octo.captcha.component.image.wordtoimage.ComposedWordToImage">
         <constructor-arg index="0">
            <ref bean="fontGenRandom" />
         </constructor-arg>
         <constructor-arg index="1">
            <ref bean="backGenUni" />
         </constructor-arg>
         <constructor-arg index="2">
           <ref bean="decoratedPaster" />
         </constructor-arg>
       </bean>

       <bean id="fontGenRandom" class="com.octo.captcha.component.image.fontgenerator.RandomFontGenerator">
         <!--最小字体-->
         <constructor-arg index="0">
          <value>20</value>
         </constructor-arg>
         <!--最大字体-->
         <constructor-arg index="1">
           <value>20</value>
         </constructor-arg>
         <constructor-arg index="2">
           <list>
              <bean class="java.awt.Font">
                   <constructor-arg index="0">
                      <value>Arial</value>
                   </constructor-arg>
                   <constructor-arg index="1">
                      <value>0</value>
                   </constructor-arg>
                   <constructor-arg index="2">
                      <value>20</value>
                    </constructor-arg>
               </bean>
          </list>
        </constructor-arg>
     </bean>

     <bean id="backGenUni" class="com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator">
       <!--背景宽度-->
       <constructor-arg index="0">
         <value>80</value>
       </constructor-arg>
       <!--背景高度-->
       <constructor-arg index="1">
          <value>32</value>
       </constructor-arg>
      </bean>

     <bean id="decoratedPaster" class="com.octo.captcha.component.image.textpaster.DecoratedRandomTextPaster">
        <!--最大字符长度-->
        <constructor-arg type="java.lang.Integer" index="0">
           <value>4</value>
        </constructor-arg>
        <!--最小字符长度-->
        <constructor-arg type="java.lang.Integer" index="1">
            <value>4</value>
        </constructor-arg>
        <!--文本颜色-->
        <constructor-arg index="2">
          <ref bean="colorGen" />
        </constructor-arg>
        <!--文本混淆-->
        <constructor-arg index="3">
          <list>
            <ref bean="baffleDecorator"/>
          </list>
        </constructor-arg>
     </bean>

     <bean id="baffleDecorator" class="com.octo.captcha.component.image.textpaster.textdecorator.BaffleTextDecorator">
        <constructor-arg type="java.lang.Integer" index="0">
            <value>1</value>
        </constructor-arg>
        <constructor-arg type="java.awt.Color" index="1">
          <ref bean="colorWrite" />
        </constructor-arg>
      </bean>

   <bean id="colorGen" class="com.octo.captcha.component.image.color.SingleColorGenerator">
       <constructor-arg type="java.awt.Color" index="0">
          <ref bean="colorDimGrey" />
       </constructor-arg>
    </bean>

   <bean id="colorWrite" class="java.awt.Color">
       <constructor-arg type="int" index="0">
           <value>255</value>
       </constructor-arg>
       <constructor-arg type="int" index="1">
           <value>255</value>
       </constructor-arg>
       <constructor-arg type="int" index="2">
          <value>255</value>
       </constructor-arg>
    </bean>

   <bean id="colorDimGrey" class="java.awt.Color">
       <constructor-arg type="int" index="0">
          <value>105</value>
       </constructor-arg>
        <constructor-arg type="int" index="1">
            <value>105</value>
        </constructor-arg>
        <constructor-arg type="int" index="2">
            <value>105</value>
        </constructor-arg>
     </bean>
 </beans>

##服务端生成验证码 调用captchaService.getImageChallengeForID(sessionId,request.getLocal()) 返回BufferedImage,并将验证码内容存入到Session中

##服务端验证验证码 调用captchaService.validateResponseForID(sessionId,code)验证

⚠️ **GitHub.com Fallback** ⚠️