本文为大家分享了 Java 实用验证码的实现代码 , 供大家参考 , 具体内容如下
1 、 Validcode
package validimg; Importer 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; javax.servlet.http.httpservletResponse; import javax.servlet.http.httpSession; import com.github.bingoohuang.patchca.color.colorfactory; importance com.guhub.bingoohuang.patchca.custom.configurablcaptchaservice; import; com.github.bingoohuang.patchca.filter.predefined.curvesripplefilterfactory; import com.github.bingoohuang.patchca.filter.predefined.diffusepplefilterfactory; import com.github.bingoohuang.patchca.filter.predefined.doublerippleflactive; com.github.bingoohuang.patchca.filter.predefined.marbleripplefilterfactory; import com.github.bingoohuang.patchca.filter.predefined.wobbleripplefilterfactory; importance com.github.bingoohuang.patchca.utils.encoder.encoderhelper; import; com.github.bingoohuang.patchca.word.randomwordfactory; classe publique ValidCode étend httpServlet {private static configurableCaptChaservice cs = new ConfigurableCaptChaservice (); Random random statique privé = nouveau aléatoire (); statique {// cs.SetColorFactory (new singlecolorfactory (nouvelle couleur (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); = Random.Nextint (256);}} Retourne la nouvelle couleur (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 (demande httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {switch (random.nextint (5)) {case 0: cs.SetFilterFactory (new CurveSrippleFilterFactory (cs .tsetColorFactory ())); casser; Cas 1: CS.SetFilterFactory (nouveau MarblerippleFilterFactory ()); casser; Cas 2: CS.SetFilterFactory (nouveau DoublerippleFilterFactory ()); casser; Cas 3: CS.SetFilterFactory (nouveau WobblerippleFilterFactory ()); casser; Cas 4: CS.SetFilterFactory (nouveau DiffUserrippleFilterFactory ()); casser; } HttpSession session = request.getSession (false); if (session == null) {session = request.getSession (); } setResponseHeaders (réponse); String token = EncoderHelper.getChallangeAndWriteImage (cs, "png", réponse.getOutputStream ()); session.setAttribute ("validcode", token); System.out.println ("当前的 sessionID =" + session.getID () + ", 验证码 =," + token); } protected void setResponseHeaders (httpservletResponse réponse) {réponse.setContentType ("image / png"); Response.sethEader ("Cache-Control", "No-Cache, No-Store"); Response.sethEader ("Pragma", "No-Cache"); longue durée = System.currentTimemillis (); Response.SetDateHeader ("Last-Modified", time); Response.SetDateHeader ("Date", heure); réponse.setDateHeader ("expire", temps); } public void doPost (requête httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {}} 2.xml 代码
<dependency> <proupId> com.github.bingoohuang </rombasid> <letifactive> patchca </ artifactId> <version> 0.0.1 </servlet> </ Dependency> <Servlet> <Serplet-Name> Validcode </vrlet-name> <Servlet-Class> ValidImg.Validcode </Servlet-Class> <Vertlet-Name> validcode </ servlet-name> <url-potern> /validimg.jpg </url-stern> </ serplet-mapping>
以上就是本文的全部内容 , 希望对大家的学习有所帮助。