springmvc集成kaptcha

今天在网上看了一些资料,再花了2个积分在CSDN下载了一个kaptcha-2.3.2.jar的jar包。在springmvc的环境中集成了kaptcha验证码功能。在这里记下来以备以后查看。

关于kaptcha,它是一个可以自由配置 验证码图片的样式以及字数等的验证码插件。

首先在applicationContext.xml中配置验证码的参数

如下:

<!-- 配置验证码 start -->
	<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">no</prop>
						<prop key="kaptcha.border.color">105,179,90</prop>
						<prop key="kaptcha.textproducer.font.color">red</prop>
						<prop key="kaptcha.image.width">250</prop>
						<prop key="kaptcha.textproducer.font.size">90</prop>
						<prop key="kaptcha.image.height">90</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>
	<!-- 配置验证码 end -->

 配置验证码生成方法

如下:

@RequestMapping(value = "captcha-image.do")
	public String handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		response.setDateHeader("Expires", 0);
		response.setHeader("Cache-Control",
				"no-store, no-cache, must-revalidate");
		response.addHeader("Cache-Control", "post-check=0, pre-check=0");
		response.setHeader("Pragma", "no-cache");
		response.setContentType("image/jpeg");
		String capText = captchaProducer.createText();
		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();
		}
		return null;
	}

        @Autowired
	@Qualifier("captchaProducer")
	private Producer captchaProducer;

 获取后台生成的验证码文本:

//获取后台生成的验证码
		String code = (String) request.getSession().getAttribute(
				Constants.KAPTCHA_SESSION_KEY);
前台页面获取验证码
<input type="text" name="captcha" />
<img src="captcha-image.do" width="55" height="20"
					id="kaptchaImage" style="margin-bottom: -3px" />
 

我这里在前台页面应用的jquery

点击图片刷新验证码

<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(); 
			     }); 
			   });   
			        
</script> 

猜你喜欢

转载自huhongyu.iteye.com/blog/1779677
今日推荐