kaptchaCode(验证码)
生活随笔
收集整理的這篇文章主要介紹了
kaptchaCode(验证码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.springMVC-servlet.xml配置bean
<bean id="captchaProducer" 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.image.width">160</prop> <!-- 圖片高度 --><prop key="kaptcha.image.height">50</prop> <prop key="kaptcha.session.key">code</prop> <!-- 設置字體顏色 --><prop key="kaptcha.textproducer.font.color">red</prop> <!-- 設置字體大小 --> <prop key="kaptcha.textproducer.font.size">35</prop> <!-- 文字價格 --><prop key="kaptcha.textproducer.char.space">5</prop> <!-- 設置字體個數 --> <prop key="kaptcha.textproducer.char.length">6</prop> <!-- 配置中文--> <!-- <prop key="kaptcha.textproducer.impl">com.google.code.kaptcha.text.impl.ChineseTextProducer</prop> --><!-- 設置字體樣式 --> <prop key="kaptcha.textproducer.font.names">彩云,宋體,楷體,微軟雅黑</prop> </props> </constructor-arg> </bean> </property> </bean>2.控制類VerifyCodeController.java
package com.shenqz.controller; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.google.code.kaptcha.Constants; import com.google.code.kaptcha.Producer; /** * 隨機驗證碼控制層 * * 使用kaptcha-2.3.2.jar支持 * * @author shenqz* */ @Controller public class VerifyCodeController { private Producer captchaProducer = null; @Autowired public void setCaptchaProducer(Producer captchaProducer) { this.captchaProducer = captchaProducer; }@RequestMapping("captcha-image.do") public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // 禁止服務器端緩存 response.setDateHeader("Expires", 0);// 設置標準的 HTTP/1.1 no-cache headers. response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); // 設置IE擴展 HTTP/1.1 no-cache headers (use addHeader). response.addHeader("Cache-Control", "post-check=0, pre-check=0");// 設置標準 HTTP/1.0 不緩存圖片 response.setHeader("Pragma", "no-cache");//返回一個 jpeg 圖片,默認是text/html(輸出文檔的MIMI類型) response.setContentType("image/jpeg");//為圖片創建文本 String capText = captchaProducer.createText();// 將文本保存在session中,這里就使用包中的靜態變量吧 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(); } System.out.println("Session 驗證碼是:" + request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY)); return null; } @RequestMapping("checkCode.do") @ResponseBodypublic String checkCode(HttpServletRequest request) { //獲取用戶輸入的驗證碼 /*String submitCode = WebUtils.getCleanParam(request,"j_code"); */ //從session中獲取系統生成的驗證碼 String kaptchaCode = request.getParameter("kaptchaCode");String kaptchaExpected = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY); System.out.println("用戶輸入的驗證碼是:"+kaptchaCode+",系統生成的驗證碼:"+kaptchaExpected); //進行比較 if(!kaptchaCode.isEmpty() && kaptchaCode.equalsIgnoreCase(kaptchaExpected)){ return "true";}else { return "false"; } }}3.jsp頁面index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery-1.8.3.js" ></script> <script type="text/javascript"> $(function(){ //生成驗證碼 $('#kaptchaImage').click(function () { $(this).hide().attr('src', 'captcha-image.do?' + Math.floor(Math.random()*100) ).fadeIn(); }); $('#submitBtn').click(function(){ $.post('checkCode.do?kaptchaCode='+$('#kaptchaCode').val(),function(data){ if (data=='true'){ window.location.href="captchaSuccess.jsp";}else{ alert("驗證碼錯誤!"); return false; } }); }); }); window.onbeforeunload = function(){ //關閉窗口時自動退出 if(event.clientX>360&&event.clientY<0||event.altKey){ alert(parent.document.location); } }; function changeCode() { //刷新 $('#kaptchaImage').hide().attr('src', 'captcha-image.do?' + Math.floor(Math.random()*100) ).fadeIn(); event.cancelBubble=true; } </script> </head><body><table> <tr> <td>驗證碼:<input type="text" name="kaptchaCode" id="kaptchaCode" value="" /></td> <td align="right"><img src="captcha-image.do" height="25px" width="100px" id="kaptchaImage"/> <a href="#" οnclick="changeCode()">看不清?換一張</a> <input type="button" value="驗證" id="submitBtn"/></td></tr> </table></body> </html>4.頁面效果
5.相關jar
kaptcha-2.3.2.jar
轉載于:https://www.cnblogs.com/shenqz/p/7648869.html
總結
以上是生活随笔為你收集整理的kaptchaCode(验证码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL相关日志介绍
- 下一篇: poj1673 EXOCENTER OF