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;
}
}
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 |
相关文章推荐
- kaptcha 验证码在spring mvc 中的使用
- spring mvc 使用kaptcha生成验证码
- Spring mvc 中使用 kaptcha 验证码
- spring mvc 使用kaptcha配置生成验证码实例
- spring mvc 使用kaptcha生成验证码
- 验证码的生成------------------------spring mvc 通过拦截器使用kaptcha
- Spring MVC 中使用 Google kaptcha 验证码
- Spring mvc 中使用 kaptcha 验证码
- spring mvc 使用kaptcha生成验证码
- Spring MVC 使用kaptcha生成验证码
- Spring mvc 中使用 kaptcha 验证码
- spring mvc 使用kaptcha生成验证码
- Spring mvc 中使用 kaptcha 验证码
- Spring mvc 中使用 kaptcha 验证码
- spring mvc 使用kaptcha生成验证码
- kaptcha验证码在spring mvc中的使用
- spring mvc 使用kaptcha生成验证码
- kaptcha 验证码在spring mvc 中的使用
- Spring mvc 中使用 kaptcha 验证码