Spring MVC 使用kaptcha生成驗證碼


Spring MVC 使用kaptcha生成驗證碼

1.下載kaptcha-2.3.2.jar(或直接通過該文章附件下載)

http://code.google.com/p/kaptcha/downloads/list

kaptcha-2.3.2-jdk14.jar

kaptcha-2.3.2.jar

 

  1. spring.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.textproducer.font.color">blue</prop>

    <prop key="kaptcha.image.width">125</prop>

    <prop key="kaptcha.image.height">45</prop>

    <prop key="kaptcha.textproducer.font.size">40</prop>

    <prop key="kaptcha.session.key">code</prop>

    <prop key="kaptcha.textproducer.char.length">4</prop>

    <prop key="kaptcha.textproducer.font.names">宋體,楷體,微軟雅黑                            </prop>

    </props>

    </constructor-arg>

    </bean>

    </property>

    </bean>

  2. 編寫controller(設置)

    @Controller

    @RequestMapping("/yzm/")

    public class YZMController {

    @Autowired

    private Producer producer;

    @RequestMapping("/yzm")

    public void yzm(HttpServletRequest request, HttpServletResponse response,

    HttpSession session) throws IOException {

    String lastYZM = (String) session.getAttribute("yzm");

    System.out.println("*******************上一次的驗證碼是" + lastYZM+ "**********************");

    // 設置瀏覽器不要對數據進行緩存

    response.setDateHeader("Expires", 0);

    // Set standard HTTP/1.1 no-cache headers.

    response.setHeader("Cache-Control",

    "no-store, no-cache, must-revalidate");

    // Set IE extended HTTP/1.1 no-cache headers (use addHeader).

    response.addHeader("Cache-Control", "post-check=0, pre-check=0");

    // Set standard HTTP/1.0 no-cache header.

    response.setHeader("Pragma", "no-cache");

    // return a jpeg

    response.setContentType("image/jpeg");

    String yzm = producer.createText();

    System.out.println("*******************本次的驗證碼是" + yzm+ "**********************");

    session.setAttribute("yzm", yzm);

    BufferedImage image = producer.createImage(yzm);

    OutputStream out = response.getOutputStream();

    ImageIO.write(image, "jpg", out);

    try {

    out.flush();

    } finally {

    out.close();

    }

    }

    }

     

  3. kaptcha可配置選項

    kaptcha.border 是否有邊框默認為true 我們可以自己設置yesno

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

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

    kaptcha.producer.impl 驗證碼生成器默認為DefaultKaptcha

    kaptcha.textproducer.impl 驗證碼文本生成器DefaultTextCreator

    kaptcha.textproducer.char.string 驗證碼文本字符內容范圍默認為abcde2345678gfynmnpwx

    kaptcha.textproducer.char.length 驗證碼文本字符長度默認為5

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

    kaptcha.textproducer.font.size 驗證碼文本字符大小默認為40

    kaptcha.textproducer.font.color 驗證碼文本字符顏色默認為Color.BLACK

    kaptcha.textproducer.char.space 驗證碼文本字符間距默認為2

    kaptcha.noise.impl 驗證碼噪點生成對象默認為DefaultNoise

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

    kaptcha.obscurificator.impl 驗證碼樣式引擎默認為WaterRipple

    kaptcha.word.impl 驗證碼文本字符渲染默認為DefaultWordRenderer

    kaptcha.background.impl 驗證碼背景生成器默認為DefaultBackground

    kaptcha.background.clear.from 驗證碼背景顏色漸進默認為Color.LIGHT_GRAY

    kaptcha.background.clear.to 驗證碼背景顏色漸進默認為Color.WHITE

    kaptcha.image.width 驗證碼圖片寬度默認為200

    kaptcha.image.height 驗證碼圖片高度默認為50

    Constant

    描述

    默認值

    kaptcha.border

    圖片邊框,合法值:yes , no

    yes

    kaptcha.border.color

    邊框顏色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.

    black

    kaptcha.border.thickness

    邊框厚度,合法值:>0

    1

    kaptcha.image.width

    圖片寬

    200

    kaptcha.image.height

    圖片高

    50

    kaptcha.producer.impl

    圖片實現類

    com.google.code.kaptcha.impl.DefaultKaptcha

    kaptcha.textproducer.impl

    文本實現類

    com.google.code.kaptcha.text.impl.DefaultTextCreator

    kaptcha.textproducer.char.string

    文本集合,驗證碼值從此集合中獲取

    abcde2345678gfynmnpwx

    kaptcha.textproducer.char.length

    驗證碼長度

    5

    kaptcha.textproducer.font.names

    字體

    Arial, Courier

    kaptcha.textproducer.font.size

    字體大小

    40px.

    kaptcha.textproducer.font.color

    字體顏色,合法值: r,g,b  或者 white,black,blue.

    black

    kaptcha.textproducer.char.space

    文字間隔

    2

    kaptcha.noise.impl

    干擾實現類

    com.google.code.kaptcha.impl.DefaultNoise

    kaptcha.noise.color

    干擾 顏色,合法值: r,g,b 或者 white,black,blue.

    black

    kaptcha.obscurificator.impl

    圖片樣式: 
    水紋com.google.code.kaptcha.impl.WaterRipple 
    魚眼com.google.code.kaptcha.impl.FishEyeGimpy 
    陰影com.google.code.kaptcha.impl.ShadowGimpy

    com.google.code.kaptcha.impl.WaterRipple

    kaptcha.background.impl

    背景實現類

    com.google.code.kaptcha.impl.DefaultBackground

    kaptcha.background.clear.from

    背景顏色漸變,開始顏色

    light grey

    kaptcha.background.clear.to

    背景顏色漸變, 結束顏色

    white

    kaptcha.word.impl

    文字渲染器

    com.google.code.kaptcha.text.impl.DefaultWordRenderer

    kaptcha.session.key

    session key

    KAPTCHA_SESSION_KEY

    kaptcha.session.date

    session date

    KAPTCHA_SESSION_DATE

     

     

     

     

     

     

     

     

     

     

     

     

    SSM(Spring+SpringMVC+mybatis)使用Log4j記錄日志

    為了方便調試,一般都會使用日志來輸出信息,Log4jApache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制台、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。

          Log4j的配置很簡單,而且也是通用的,下面給出一個基本的配置,換到其他項目中也無需做多大的調整,如果想做調整或者想了解Log4j的各種配置,參看我轉載的一篇博文,很詳細:

    http://blog.csdn.net/zhshulin/article/details/37937365

    下面給出配置文件目錄:

    log4j.properties

    為了方便調試,一般都會使用日志來輸出信息,Log4jApache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制台、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。

          Log4j的配置很簡單,而且也是通用的,下面給出一個基本的配置,換到其他項目中也無需做多大的調整,如果想做調整或者想了解Log4j的各種配置,參看我轉載的一篇博文,很詳細:

    http://blog.csdn.net/zhshulin/article/details/37937365

    下面給出配置文件目錄:

     

    log4j.properties#定義LOG輸出級別  

    log4j.rootLogger=INFO,Console,File  

    #定義日志輸出目的地為控制台  

    log4j.appender.Console=org.apache.log4j.ConsoleAppender  

    log4j.appender.Console.Target=System.out  

    #可以靈活地指定日志輸出格式,下面一行是指定具體的格式  

    log4j.appender.Console.layout = org.apache.log4j.PatternLayout  

    log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  

    #文件大小到達指定尺寸的時候產生一個新的文件  

    log4j.appender.File = org.apache.log4j.RollingFileAppender  

    #指定輸出目錄  

    log4j.appender.File.File = logs/ssm.log  

    #定義文件最大大小  

    log4j.appender.File.MaxFileSize = 10MB  

    # 輸出所以日志,如果換成DEBUG表示輸出DEBUG以上級別日志  

    log4j.appender.File.Threshold = ALL  

    log4j.appender.File.layout = org.apache.log4j.PatternLayout  

    log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM