您的位置:首页 > 编程语言 > Java开发

kaptcha 验证码在spring mvc 中的使用

2013-06-04 14:39 281 查看


kaptcha的配置是通过web.xml完成的,所有的参数都有默认值。

     所需要的jar包:kaptcha-2.0.jar


一、Kaptcha输出验证码的Demo:





二、配置参数(web.xml)

Xml代码  


<servlet>  

    <servlet-name>Kaptcha</servlet-name>  

    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>  

    <init-param>  

        <param-name>kaptcha.border</param-name>  

        <param-value>yes</param-value>  

    </init-param>  

</servlet>  

<servlet-mapping>  

    <servlet-name>Kaptcha</servlet-name>  

    <url-pattern>*.code</url-pattern>  

</servlet-mapping>  

 


三、在页面上的调用

Html代码  


<form action="submit.action">  

    <img src="validate.code" /> <input type="text" name="validateCode" value="" />  

</form>  


四、验证码的验证

Java代码  


HttpSession session = request.getSession();  

String makeValidateCode = (String) session  

        .getAttribute(Constants.KAPTCHA_SESSION_KEY);  

if (validateCode != null && makeValidateCode != null) {  

    return makeValidateCode.equalsIgnoreCase(validateCode);  

} else {  

    return false;  

}  


 五、实现刷新图片


       可以在请求URL后添加随机参数,避免浏览器的缓存。

Html代码  


<img src="validate.code" id="kaptchaImage" />  

<script type="text/javascript">  

    $(function(){  

        $('#kaptchaImage').click(function () {   

            $(this).attr('src', 'validate.code?' + Math.floor(Math.random()*100) ); })  

    });  

</script>  

<br /><small>Can't read the image? Click it to get a new one.</small>  

 


六、与spring MVC 的结合 


     在applicationContext.xml中添加

Java代码  


<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">  

                                <value>kaptcha.border=yes</value>  

                        </constructor-arg>  

                </bean>  

        </property>  

</bean>  

 


源码:

Java代码  


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.servlet.ModelAndView;  

   

import com.google.code.kaptcha.Constants;  

import com.google.code.kaptcha.Producer;  

   

@Controller  

public class CaptchaImageCreateController {  

        private Producer captchaProducer = null;  

   

        @Autowired  

        public void setCaptchaProducer(Producer captchaProducer) {  

                this.captchaProducer = captchaProducer;  

        }  

   

        @RequestMapping("/captcha-image.html")  

        public ModelAndView handleRequest(  

                        HttpServletRequest request,  

                        HttpServletResponse response) throws Exception {  

                // Set to expire far in the past.  

                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");  

   

                // create the text for the image  

                String capText = captchaProducer.createText();  

   

                // store the text in the session  

                request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);  

   

                // create the image with the text  

                BufferedImage bi = captchaProducer.createImage(capText);  

   

                ServletOutputStream out = response.getOutputStream();  

   

                // write the data out  

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

                try  

                {  

                        out.flush();  

                }  

                finally  

                {  

                        out.close();  

                }  

                return null;  

        }  

}   

 
ConstantDescriptionDefault
kaptcha.borderBorder around kaptcha. Legal values are yes or no.yes
kaptcha.border.colorColor of the border. Legal values are r,g,b (and optional alpha) or white,black,blue.black
kaptcha.border.thicknessThickness of the border around kaptcha. Legal values are > 0.1
kaptcha.image.widthWidth in pixels of the kaptcha image.200
kaptcha.image.heightHeight in pixels of the kaptcha image.50
kaptcha.producer.implThe image producer.com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.implThe text producer.com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.stringThe characters that will create the kaptcha.abcde2345678gfynmnpwx
kaptcha.textproducer.char.lengthThe number of characters to display.5
kaptcha.textproducer.font.namesA list of comma separated font names.Arial, Courier
kaptcha.textproducer.font.sizeThe size of the font to use.40px.
kaptcha.textproducer.font.colorThe color to use for the font. Legal values are r,g,b.black
kaptcha.noise.implThe noise producer.com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.colorThe noise color. Legal values are r,g,b.black
kaptcha.obscurificator.implThe obscurificator implementation.com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.implThe background implementation.com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.fromStarting background color. Legal values are r,g,b.light grey
kaptcha.background.clear.toEnding background color. Legal values are r,g,b.white
kaptcha.word.implThe word renderer implementation.com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.keyThe value for the kaptcha is generated and is put into the HttpSession. This is the key value for that item in the session.KAPTCHA_SESSION_KEY
kaptcha.session.dateThe date the kaptcha is generated is put into the HttpSession. This is the key value for that item in the session.KAPTCHA_SESSION_DATE
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: