`

kaptcha 验证码在spring mvc 中的使用

阅读更多

kaptcha 是一个非常实用的验证码生成工具。有了它,你可以生成各种样式的验证码,因为它是可配置的。kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片。同时将生成的验证码字符串放到 HttpSession中。

使用kaptcha可以方便的配置:

 

  • 验证码的字体
  • 验证码字体的大小
  • 验证码字体的字体颜色
  • 验证码内容的范围(数字,字母,中文汉字!)
  • 验证码图片的大小,边框,边框粗细,边框颜色
  • 验证码的干扰线(可以自己继承com.google.code.kaptcha.NoiseProducer写一个自定义的干扰线)
  • 验证码的样式(鱼眼样式、3D、普通模糊……当然也可以继承com.google.code.kaptcha.GimpyEngine自定义样式)

……

详细信息请看下面的web.xml文件

下面介绍一下用法:

1.首先去官网下载jar:http://code.google.com/p/kaptcha/

2.建立一个web项目,导入kaptcha-2.3.jar到环境变量中。

3.配置web.xml文件

<!--Kaptcha 验证码  --><!--
	<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>no</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.border.color</param-name>
			<param-value>105,179,90</param-value>
		</init-param>		
		<init-param>
			<param-name>kaptcha.textproducer.font.color</param-name>
			<param-value>red</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.image.width</param-name>
			<param-value>250</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.image.height</param-name>
			<param-value>90</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.textproducer.font.size</param-name>
			<param-value>70</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.session.key</param-name>
			<param-value>code</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.textproducer.char.length</param-name>
			<param-value>4</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.textproducer.font.names</param-name>
			<param-value>宋体,楷体,微软雅黑</param-value>
		</init-param>		
	</servlet>

Xml代码
          <servlet-mapping>
    		<servlet-name>kaptcha</servlet-name>
    		<url-pattern>/ClinicCountManager/kaptcha.jpg</url-pattern>
    	</servlet-mapping>

     

    jsp 页面使用

    	<table>
    			<tr>
    				<td><img src="/ClinicCountManager/kaptcha.jpg"></td>
    				<td valign="top">
    			
    					<form method="POST">
    						<br>sec code:<input type="text" name="kaptchafield"><br />
    						<input type="submit" name="submit">
    					</form>
    				</td>
    			</tr>
    		</table>	
    
    		<br /><br /><br /><br />
    		
    		<%
    			String c = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
    			String parm = (String) request.getParameter("kaptchafield");
    			
    			out.println("Parameter: " + parm + " ? Session Key: " + c + " : ");
    			
    			if (c != null && parm != null) {
    				if (c.equals(parm)) {
    					out.println("<b>true</b>");
    				} else {
    					out.println("<b>false</b>");
    				}
    			
    		%>
    

     

    上面的配置在普通jsp环境下面是有效的,如果在spring mvc环境下,则取不到session值,对于sping mvc环境验证码配置如下:

    1.不用在web.xml进行相关配置,在applicationContext.xml中配置

     

    Xml代码 

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

     

    新建生成图片控制类

    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
    @RequestMapping("/")
    public class CaptchaImageCreateController {
    	
    	private Producer captchaProducer = null;
    
    	@Autowired
    	public void setCaptchaProducer(Producer captchaProducer) {
    		this.captchaProducer = captchaProducer;
    	}
    
    	@RequestMapping("/captcha-image")
    	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    
    		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;
    	}
    
    }

     前台调用方式

     

    Java代码

       <div class="chknumber">
              <label>验证码:        
              <input name="kaptcha" type="text" id="kaptcha" maxlength="4" class="chknumber_input" />             
              </label>
               <img src="/ClinicCountManager/captcha-image.do" width="55" height="20" id="kaptchaImage"  style="margin-bottom: -3px"/> 
              <script type="text/javascript">    
               $(function(){         
                   $('#kaptchaImage').click(function () {//生成验证码
                  	 $(this).hide().attr('src', '/ClinicCountManager/captcha-image.do?' + Math.floor(Math.random()*100) ).fadeIn(); })    
                         }); 
             
              </script> 
            </div>

       取验证码的方式

       

      Java代码

      		String code = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
      			
      分享到:
      评论
      11 楼 songBUBU 2013-03-26  
      我写在action里,为什么图片没有显示出来呢?
      10 楼 429537044 2013-01-30  
      楼主你好!
      我在引用那个图片生成类得时候
      createImage()这个方法提示少了一个参数。
      9 楼 429537044 2013-01-30  
      楼主 能不能把那个kaptcha-2.3.jar这个包发我一个啊, 我下载不到 谢谢
      8 楼 jayyunfei 2012-12-14  
      是啊,在spring配置文件就好了,因为web中配置了加载spring的配置文件了
      7 楼 349297045 2012-09-21  
      liuyuanshijie 写道
      没有人评论啊? 呵呵
      真不地道,
      我用了你的东西了啊
      很好, 呵呵
      Spring mvc中, web.xml中的那些配置是多余的
      只要在spring配置文件中设置就好了.呵呵
      亲身体验了


      web.xml中去掉 后 我在spring配置文件中的 怎么不起作用啊 望回复....
      6 楼 jayyunfei 2012-06-07  
      BufferedImage bi = captchaProducer.createImage(capText); 我进行断点,执行到这里
      然后就突然跳出来,然后就不执行了~~~求解为什么?
      5 楼 jayyunfei 2012-06-07  
      求解啊~~
      4 楼 jayyunfei 2012-06-07  
      我用怎么就是加载不出来呢?
      3 楼 kennykinte 2012-03-29  
      liuyuanshijie 写道
      没有人评论啊? 呵呵
      真不地道,
      我用了你的东西了啊
      很好, 呵呵
      Spring mvc中, web.xml中的那些配置是多余的
      只要在spring配置文件中设置就好了.呵呵
      亲身体验了

      LZ说了在SpringMVC中,只需要配置applicationContext了啊,不需要配置web.xml的。
      2 楼 flamingsky007 2011-11-21  
      用着 谢谢
      1 楼 liuyuanshijie 2011-11-18  
      没有人评论啊? 呵呵
      真不地道,
      我用了你的东西了啊
      很好, 呵呵
      Spring mvc中, web.xml中的那些配置是多余的
      只要在spring配置文件中设置就好了.呵呵
      亲身体验了

      相关推荐

        精通Spring MVC 4

        , 在精通Spring MVC4中,我们将会从头开始构建一个有用的Web应用。本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、...

        spring整合kaptcha验证码的实现

        主要介绍了spring整合kaptcha验证码的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

        Spring MVC中使用Google kaptcha验证码的方法详解

        kaptcha 是一个非常实用的...有了它,你可以生成各种样式的验证码,因为它是可配置的,下面这篇文章主要给大家介绍了关于Spring MVC中使用Google kaptcha验证码的方法,需要的朋友可以参考借鉴,下面来一起看看吧。

        精通Spring MVC 4 中文

        精通Spring MVC 4 中文

        spring mvc 官方文档

        本文详细介绍spring MVC的原理和开发心得体会。

        spring mvc 使用kaptcha配置生成验证码实例

        本篇文章主要介绍了spring mvc 使用kaptcha生成验证码实例,详细的介绍了使用Kaptcha 生成验证码的步骤,有兴趣的可以了解一下

        Spring MVC入门教程

        十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...

        SpringBoot集成Kaptcha验证码生成器快速入门Demo

        编译器版本:IntelliJ IDEA 2020.3.2 x64 JDK版本:java 1.8.0_111 SpringBoot集成Kaptcha验证码生成器快速入门Demo,演示Kaptcha验证码生成器后端代码和前端测试页面

        Spring MVC所需jar包

        Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包

        [免费]Spring MVC学习指南(高清)

        Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

        Spring MVC 教程 快速入门 深入分析

        十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...

        Spring MVC 基于注解实例

        Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

        大优惠 Spring MVC学习指南(第2版)2017.pdf

        Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

        Spring MVC 入门实例

        在 Spring MVC 中, jsp 文件中尽量不要有 Java 代码, 只有 HTML 代码和"迭代(forEach)"与"判断(if)"两个jstl标签. jsp 文件只作为渲染(或称为视图 View)模板使用. 好了, 我们开始吧. 首先我们需要一个放在 WEB-INF...

        vue+springboot+redis+kaptcha实现登录验证码

        vue+springboot+redis+kaptcha实现登录页验证码

        Spring MVC 的注解使用实例

        主要介绍Spring MVC 的使用注解来配置的使用实例

        Spring MVC+MyBatis开发从入门到项目实战

        《Spring MVC+MyBatis开发从入门到项目实战》适用于拥有Java基础的软件开发人员学习框架开发,也适用于大中专院校在校师生学习开发技术,以及软件从业实习生提升框架开发技术水平,也可作为高等院校计算机及相关专业...

        Spring MVC使用Demo

        可以了解spring mvc的开发环境,以及注解使用,对理解spring mvc的工作原理有直观的帮助。

      Global site tag (gtag.js) - Google Analytics