下载 captcha 包
</pre><pre name="code" class="java">public class RegistController extends Controller { @ClearInterceptor(ClearLayer.ALL) public void authImg() { render(new PatchcaRender()); } }
/** * * @author * 功能: 验证码图片渲染 * 版本:1 * 修改日期:2014-06-27 * 说明: * */ public class PatchcaRender extends Render{ @Override public void render() { MyCaptchaService cs = new MyCaptchaService(); response.setContentType(Resource.HttpHead.ImagePng); response.setHeader(Resource.HttpHead.Key_Cache,Resource.HttpHead.Key_Cache_Value); HttpSession session = request.getSession(true); try { OutputStream os = response.getOutputStream(); String patchca= EncoderHelper.getChallangeAndWriteImage(cs, "png", os); //写入验证码到session session.setAttribute(Resource.Patchca.SessionKey, patchca); os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); }finally{ } } public static boolean validCheckCode(Controller c,String validCode){ String validCodeSession = c.getSessionAttr(Resource.Patchca.SessionKey); if (validCodeSession == null || !validCodeSession.equals(validCode)) { return false; } else { return true; } } }
/** 验证码相关常量 **/ public class Patchca { public static final String SessionKey = "PATCHCA"; public static final String FormKey = "captcha"; } /** http 请求头相关常量 **/ public class HttpHead { public static final String ImagePng = "image/png"; public static final String ImageJPEG = "image/jpeg"; public static final String Key_Cache = "cache"; public static final String Key_Cache_Value = "no-cache"; }
/** * * @author * 功能: 验证码服务 * 版本:1 * 修改日期:2014-06-27 * 说明: * */ public class MyCaptchaService extends AbstractCaptchaService { public MyCaptchaService() { //文本内容 wordFactory = new MyWordFactory(); //字体 List<String> fonts = new ArrayList<String>(); fonts.add("Verdana"); fonts.add("Tahoma"); fontFactory = new RandomFontFactory(20,fonts); //效果 textRenderer = new BestFitTextRenderer(); //背景 backgroundFactory = new SingleColorBackgroundFactory(); //字体颜色 colorFactory = new SingleColorFactory(new Color(25, 60, 170)); //样式(曲线波纹加干扰线) filterFactory = new WobbleRippleFilterFactory (); //图片长宽 width = 119; height = 35; } }
/** * * @author * 功能: 验证码文字生成工厂 * 版本:1 * 修改日期:2014-06-27 * 说明: * */ public class MyWordFactory extends RandomWordFactory { public MyWordFactory() { //规定验证码出现的文字 characters = "0123456789"; minLength = 4; maxLength = 3; } }