kaptcha验证码的使用

一、xml方式

1.导入依赖

<dependency>
      <groupId>com.github.penggle</groupId>
      <artifactId>kaptcha</artifactId>
      <version>2.3.2</version>
    </dependency>

2.在web.xml中注册servlet

<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.textproducer.font.color</param-name>
      <param-value>red</param-value>
    </init-param>
    <!-- 图片宽度 -->
    <init-param>
      <param-name>kaptcha.image.width</param-name>
      <param-value>135</param-value>
    </init-param>
    <!-- 使用哪些字符生成验证码 -->
    <init-param>
      <param-name>kaptcha.textproducer.char.string</param-name>
      <param-value>ACDEFHKPRSTWX345679</param-value>
    </init-param>
    <!-- 图片高度 -->
    <init-param>
      <param-name>kaptcha.image.height</param-name>
      <param-value>50</param-value>
    </init-param>
    <!-- 字体大小 -->
    <init-param>
      <param-name>kaptcha.textproducer.font.size</param-name>
      <param-value>43</param-value>
    </init-param>
    <!-- 干扰线颜色 -->
    <init-param>
      <param-name>kaptcha.noise.color</param-name>
      <param-value>black</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>Arial</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>Kaptcha</servlet-name>
    <url-pattern>/Kaptcha</url-pattern>
  </servlet-mapping>

3.在前端页面用src的属性引入

<img id="captcha_img" alt="点击更换" title="点击更换"
src="/Kaptcha" />
可以用js给这个图片添加一个点击事件,点击之后就更换一个图片



一、@Annoation方式
1.导入maven依赖
<dependency>
      <groupId>com.github.penggle</groupId>
      <artifactId>kaptcha</artifactId>
      <version>2.3.2</version>
    </dependency>

 


2.在webapp初始化的时候,将Kaptcha加到servletContext中,代码如下
public class WebAppInit implements WebApplicationInitializer {
    @Override
    public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
          // Load Spring web application configuration
        AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
        ac.register(WebMvcConfig .class);
          // ac.refresh();此处应该注释,否则报错

          // Create and register the DispatcherServlet
        DispatcherServlet servlet = new DispatcherServlet(ac);
        ServletRegistration.Dynamic registration = servletContext.addServlet("DispatcherServlet", servlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/");

          //配置生成验证码的kaptchaServlet
           //第一步,创建一个kaptchaServlet
        KaptchaServlet kaptchaServlet = new KaptchaServlet();
          //添加到servletContext
        ServletRegistration.Dynamic kaptchaServlet1 = servletContext.addServlet("KaptchaServlet", kaptchaServlet);
          //创建一个map用来存放kapchaServlet的初始化参数
        HashMap<String, String> map = new HashMap<>();
          // <!-- 是否有边框 --> yes or no
        map.put("kaptcha.border","no");
          //<!-- 字体颜色 -->
        map.put("kaptcha.textproducer.font.color","red");
          // <!-- 图片宽度 -->
        map.put("kaptcha.image.width","135");
          //  <!-- 使用哪些字符生成验证码 -->
        map.put("kaptcha.textproducer.char.string","ACDEFHKPRSTWX345679");
          //  <!-- 图片高度 -->
        map.put("kaptcha.image.height","50");
          // <!-- 字体大小 -->
        map.put("kaptcha.textproducer.font.siz","43");
          //  <!-- 干扰线颜色 -->
        map.put("kaptcha.noise.color","black");
          // <!-- 验证码字符个数 -->
        map.put("kaptcha.textproducer.char.length","4");
          //<!-- 字体 -->
        map.put("kaptcha.textproducer.font.names","Arial");
          //设置kapchaServlet的初始化参数
        kaptchaServlet1.setInitParameters(map);
          //设置
        kaptchaServlet1.addMapping("/Kaptcha");
    }
}

3.在前端页面用src的属性引入

<img id="captcha_img" alt="点击更换" title="点击更换"
src="/Kaptcha" />
可以用js给这个图片添加一个点击事件,点击之后就更换一个图片
com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY

(String)servletRequest.getSession().getAttribute("KAPTCHA_SESSION_KEY");

springboot中注册

@Bean
    public ServletRegistrationBean servletRegistrationBean(){
        ServletRegistrationBean<Servlet> servletServletRegistrationBean = new ServletRegistrationBean<>();
       //第一步,创建一个kaptchaServlet
        KaptchaServlet kaptchaServlet = new KaptchaServlet();
      //创建一个map用来存放kapchaServlet的初始化参数
        servletServletRegistrationBean.setServlet(kaptchaServlet);
        HashMap<String, String> map = new HashMap<>();
      // <!-- 是否有边框 --> yes or no
        map.put("kaptcha.border","no");
        //<!-- 字体颜色 -->
        map.put("kaptcha.textproducer.font.color","red");
     // <!-- 图片宽度 -->
        map.put("kaptcha.image.width","135");
       //  <!-- 使用哪些字符生成验证码 -->
        map.put("kaptcha.textproducer.char.string","ACDEFHKPRSTWX345679");
    //  <!-- 图片高度 -->
        map.put("kaptcha.image.height","50");
    // <!-- 字体大小 -->
        map.put("kaptcha.textproducer.font.siz","43");
   //  <!-- 干扰线颜色 -->
        map.put("kaptcha.noise.color","black");
      // <!-- 验证码字符个数 -->
        map.put("kaptcha.textproducer.char.length","4");
     //<!-- 字体 -->
        map.put("kaptcha.textproducer.font.names","Arial");
       //设置kapchaServlet的初始化参数
        servletServletRegistrationBean.setInitParameters(map);
      //设置
        servletServletRegistrationBean.addUrlMappings("/Kaptcha");
        return servletServletRegistrationBean;
    }

 

posted @ 2018-05-25 13:15  chenhonggao  阅读(1164)  评论(0编辑  收藏  举报