Java开源项目—验证码kaptcha

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

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

一、Kaptcha输出验证码的Demo:

二、配置参数(web.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>

 

三、在页面上的调用

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

四、验证码的验证

		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后添加随机参数,避免浏览器的缓存。

<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中添加

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

 

源码:

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;
        }
} 

 

Constant Description Default
kaptcha.border Border around kaptcha. Legal values are yes or no. yes
kaptcha.border.color Color of the border. Legal values are r,g,b (and optional alpha) or white,black,blue. black
kaptcha.border.thickness Thickness of the border around kaptcha. Legal values are > 0. 1
kaptcha.image.width Width in pixels of the kaptcha image. 200
kaptcha.image.height Height in pixels of the kaptcha image. 50
kaptcha.producer.impl The image producer. com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl The text producer. com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string The characters that will create the kaptcha. abcde2345678gfynmnpwx
kaptcha.textproducer.char.length The number of characters to display. 5
kaptcha.textproducer.font.names A list of comma separated font names. Arial, Courier
kaptcha.textproducer.font.size The size of the font to use. 40px.
kaptcha.textproducer.font.color The color to use for the font. Legal values are r,g,b. black
kaptcha.noise.impl The noise producer. com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color The noise color. Legal values are r,g,b. black
kaptcha.obscurificator.impl The obscurificator implementation. com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl The background implementation. com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from Starting background color. Legal values are r,g,b. light grey
kaptcha.background.clear.to Ending background color. Legal values are r,g,b. white
kaptcha.word.impl The word renderer implementation. com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.key The 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.date The date the kaptcha is generated is put into the HttpSession. This is the key value for that item in the session. KAPTCHA_SESSION_DATE

 

你可能感兴趣的:(java,验证码,validateCode)