首页 > 编程 > Java > 正文

java实用验证码的实现代码

2019-11-26 14:29:10
字体:
来源:转载
供稿:网友

本文为大家分享了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>

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表