使用patchca生成验证码 ,随机出现五种不同干扰的验证码。,patchca验证码,package osho
分享于 点击 193 次 点评:5
使用patchca生成验证码 ,随机出现五种不同干扰的验证码。,patchca验证码,package osho
package oshop.captcha;import java.awt.Color;import java.io.IOException;import java.io.OutputStream;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;//Q277160299import org.patchca.color.ColorFactory;import org.patchca.color.SingleColorFactory;import org.patchca.filter.predefined.CurvesRippleFilterFactory;import org.patchca.filter.predefined.DiffuseRippleFilterFactory;import org.patchca.filter.predefined.DoubleRippleFilterFactory;import org.patchca.filter.predefined.MarbleRippleFilterFactory;import org.patchca.filter.predefined.WobbleRippleFilterFactory;import org.patchca.service.ConfigurableCaptchaService;import org.patchca.utils.encoder.EncoderHelper;import org.patchca.word.RandomWordFactory;public class CaptchaServlet extends HttpServlet { private static final long serialVersionUID = 3796351198097771007L; private static ConfigurableCaptchaService cs = null; private static ColorFactory cf = null; private static RandomWordFactory wf = null; private static Random r = new Random(); private static CurvesRippleFilterFactory crff = null; private static MarbleRippleFilterFactory mrff = null; private static DoubleRippleFilterFactory drff = null; private static WobbleRippleFilterFactory wrff = null; private static DiffuseRippleFilterFactory dirff = null; @Override public void init() throws ServletException { super.init(); cs = new ConfigurableCaptchaService(); cf = new SingleColorFactory(new Color(25, 60, 170)); wf = new RandomWordFactory(); crff = new CurvesRippleFilterFactory(cs.getColorFactory()); drff = new DoubleRippleFilterFactory(); wrff = new WobbleRippleFilterFactory(); dirff = new DiffuseRippleFilterFactory(); mrff = new MarbleRippleFilterFactory(); cs.setWordFactory(wf); cs.setColorFactory(cf); cs.setWidth(120); cs.setHeight(50); } @Override public void destroy() { wf = null; cf = null; cs = null; super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/png"); response.setHeader("cache", "no-cache"); wf.setMaxLength(5); wf.setMinLength(3); HttpSession session = request.getSession(true); OutputStream os = response.getOutputStream(); switch (r.nextInt(5)) { case 0: cs.setFilterFactory(crff); break; case 1: cs.setFilterFactory(mrff); break; case 2: cs.setFilterFactory(drff); break; case 3: cs.setFilterFactory(wrff); break; case 4: cs.setFilterFactory(dirff); break; } String captcha = EncoderHelper.getChallangeAndWriteImage(cs, "png", os); session.setAttribute("captcha", captcha); os.flush(); os.close(); }}
用户点评