首頁 >Java >java教程 >spring透過kaptcha配置驗證碼產生的程式碼實例

spring透過kaptcha配置驗證碼產生的程式碼實例

Y2J
Y2J原創
2017-05-05 15:19:181459瀏覽

本篇文章主要介紹了spring mvc 使用kaptcha產生驗證碼實例,詳細的介紹了使用Kaptcha 產生驗證碼的步驟,有興趣的可以了解一下

使用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

<p 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=&#39;login.label.code&#39; />" />
  <p style="height: 1px"></p>
  <img src="${pageContext.request.contextPath}/getVerifyCodeImage" id="verifyCodeImage" style="margin-bottom: -3px" /> 
  <a href="#" rel="external nofollow" onclick="changeVerifyCode()"><spring:message code=&#39;login.code.tip&#39; /></a>
</p>
function changeVerifyCode() {
  $(&#39;#verifyCodeImage&#39;).hide().attr(&#39;src&#39;, &#39;${pageContext.request.contextPath}/getVerifyCodeImage?&#39; + Math.floor(Math.random()*100) ).fadeIn(); 
  event.cancelBubble=true; 
}

#5.kaptcha屬性說明:

  1. kaptcha.border.color   邊框顏色   默認為Color.BLACK 

  2. kaptcha.border.thickness  邊框粗細度  默認為1 

  3. kaptcha.producer.impl   驗證碼產生器  預設為DefaultKaptcha 

  4. kaptcha.textproducer.impl   驗證碼文字產生器  預設為DefaultTextCreator Text

  5. kaptcha.textproducer.char.string   驗證碼文字字元內容範圍  預設為abcde2345678gfynmnpwx 

  6. #kaptcha.textproducer.char.length  5 

  7. kaptcha.textproducer.font.names    驗證碼文字字體樣式  預設為new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)

  8. kaptcha.textproducer.font.size   驗證碼文字字元大小  預設為40 

  9. kaptcha.textproducer.font.color  驗證碼文字字元顏色  預設為Color.BLACK 

  10. kaptcha.textproducer.char.space  驗證碼文字字元間距  預設為2 

  11. #kaptcha.noise.impl驗證碼噪點生成

    對象  默認為DefaultNoise 

  12. kaptcha.noise.color   驗證碼噪點顏色   默認為Color.BLACK 

  13. kaptcha.obscurificator.impl   驗證碼樣式引擎  預設為WaterRipple 

  14. kaptcha.word.impl   驗證碼文字字元渲染   預設為DefaultWordRenderer   驗證碼文字字元渲染   預設為DefaultWordRenderer 

    . #kaptcha.background.impl   驗證碼背景產生器   預設為DefaultBackground 
  15. kaptcha.background.clear.from   驗證碼背景顏色漸進#   預設為Color.LIGHT_GRAY##  
  16. ##kaptcha.background.clear.to   驗證碼背景顏色漸進   預設為Color.WHITE 
  17. kaptcha.image.width   驗證碼
  18. #kaptcha.image.width   驗證碼
  19. 圖片圖片
  20. 寬度為200 

    kaptcha.image.height  驗證碼圖片高度  預設為50  
  21. 【相關建議】
#1.

Java免費視訊教學

2. YMP線上手冊

#3. 
Java實作圖片等比例縮圖影片教學

以上是spring透過kaptcha配置驗證碼產生的程式碼實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn