当前位置: 首页 > 编程笔记 >

java实用验证码的实现代码

燕智
2023-03-14
本文向大家介绍java实用验证码的实现代码,包括了java实用验证码的实现代码的使用技巧和注意事项,需要的朋友参考一下

本文为大家分享了java实用验证码的实现代码,供大家参考,具体内容如下

1、ValidCode     

package validImg;
 
import java.awt.Color;
import java.io.IOException;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.github.bingoohuang.patchca.color.ColorFactory;
import com.github.bingoohuang.patchca.custom.ConfigurableCaptchaService;
import com.github.bingoohuang.patchca.filter.predefined.CurvesRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.DiffuseRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.DoubleRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.MarbleRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.WobbleRippleFilterFactory;
import com.github.bingoohuang.patchca.utils.encoder.EncoderHelper;
import com.github.bingoohuang.patchca.word.RandomWordFactory;
 
public class ValidCode extends HttpServlet {
  private static ConfigurableCaptchaService cs = new ConfigurableCaptchaService();
  private static Random random = new Random();
  static {
//    cs.setColorFactory(new SingleColorFactory(new Color(25, 60, 170)));
  
    cs.setColorFactory(new ColorFactory() {
      @Override
      public Color getColor(int x) {
        int[] c = new int[3];
        int i = random.nextInt(c.length);
        for (int fi = 0; fi < c.length; fi++) {
          if (fi == i) {
            c[fi] = random.nextInt(71);
          } else {
            c[fi] = random.nextInt(256);
          }
        }
        return new Color(c[0], c[1], c[2]);
      }
    });
    RandomWordFactory wf = new RandomWordFactory();
    wf.setCharacters("23456789abcdefghigkmnpqrstuvwxyzABCDEFGHIGKLMNPQRSTUVWXYZ");
    wf.setMaxLength(4);
    wf.setMinLength(4);
    cs.setWordFactory(wf);
  }
 
 
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
 
    switch (random.nextInt(5)) {
    case 0:
      cs.setFilterFactory(new CurvesRippleFilterFactory(cs
          .getColorFactory()));
      break;
    case 1:
      cs.setFilterFactory(new MarbleRippleFilterFactory());
      break;
    case 2:
      cs.setFilterFactory(new DoubleRippleFilterFactory());
      break;
    case 3:
      cs.setFilterFactory(new WobbleRippleFilterFactory());
      break;
    case 4:
      cs.setFilterFactory(new DiffuseRippleFilterFactory());
      break;
    }
    HttpSession session = request.getSession(false);
    if (session == null) {
      session = request.getSession();
    }
    setResponseHeaders(response);
    String token = EncoderHelper.getChallangeAndWriteImage(cs, "png",
        response.getOutputStream());
    session.setAttribute("validCode", token);
    System.out.println("当前的SessionID=" + session.getId() + ",验证码= ," + token);
 
  }
 
  protected void setResponseHeaders(HttpServletResponse response) {
    response.setContentType("image/png");
    response.setHeader("Cache-Control", "no-cache, no-store");
    response.setHeader("Pragma", "no-cache");
    long time = System.currentTimeMillis();
    response.setDateHeader("Last-Modified", time);
    response.setDateHeader("Date", time);
    response.setDateHeader("Expires", time);
  }
 
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
 
  }
 
 
}

2.XML代码

<dependency>
  <groupId>com.github.bingoohuang</groupId>
  <artifactId>patchca</artifactId>
  <version>0.0.1</version>
 </dependency>
 
<servlet>
 <servlet-name>ValidCode</servlet-name>
 <servlet-class>validImg.ValidCode</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>ValidCode</servlet-name>
 <url-pattern>/validImg.jpg</url-pattern>
</servlet-mapping>

以上就是本文的全部内容,希望对大家的学习有所帮助。

 类似资料:
  • 本文向大家介绍Ajax+Struts2实现验证码验证功能实例代码,包括了Ajax+Struts2实现验证码验证功能实例代码的使用技巧和注意事项,需要的朋友参考一下 众所周知,验证码在我们的生活中都是非常常见的,很多公司都在各种折腾各种各样的验证码,这里简要的用一个小案例来实现验证码的功能(ps:其实我挺讨厌验证码这个东西的)。 今天分享的是通过ajax来动态的验证验证码输入是否正确。我们这里采用的

  • 本文向大家介绍Java实现随机验证码具体代码,包括了Java实现随机验证码具体代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java随机生成验证码的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Java实现图片验证码具体代码,包括了Java实现图片验证码具体代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java图片验证码代码,供大家参考,具体内容如下 网页显示效果: index.jsp 使用两种方式强制图片更新: 1、设置图片输出时不缓存。 2、用js改变请求的地址。 自动生成验证码的java代码 关键类(以下类为基础部分的内容) BufferedIma

  • 本文向大家介绍java使用servlet实现验证码,包括了java使用servlet实现验证码的使用技巧和注意事项,需要的朋友参考一下 利用servlet 实现验证码主要继承httpServlet类 下面是web.xml 配置  jsp 文件 简单实用。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍java实现登录验证码,包括了java实现登录验证码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现登录验证码的具体代码,供大家参考,具体内容如下 1、ValidateCode.java 2、Controller 3、html 效果图 更多关于验证码的文章请点击查看: 《java验证码》 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐

  • 本文向大家介绍python django 实现验证码的功能实例代码,包括了python django 实现验证码的功能实例代码的使用技巧和注意事项,需要的朋友参考一下 我也是刚学Python  Django不久很多都不懂,所以我现在想一边学习一边记录下来然后大家一起讨论! 验证码功能一开始我在网上找了很多的demo但是我在模仿他们写的时候,发现在我的版本上根本就不能运行起来在前端页面显示的时候是图