zoukankan      html  css  js  c++  java
  • patchca整合Spring MVC生成超炫的验证码

    @Controller
    public class Login2Controller {
        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);
        }
        @RequestMapping("/pcrimg")
        public void crimg(HttpServletRequest request, HttpServletResponse response) throws 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("captchaToken", 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);
        }
    }
  • 相关阅读:
    iOS 关于字体根据不同屏幕尺寸等比适配的问题(zz)
    安卓开发:一种快速提取安卓app的UI图标资源的方法
    申请邓白氏编码的时候总是提示 Enter a valid Street Address 怎么办?
    利用日期、经纬度求日出日落时间 C语言程序代码(zz)
    JS导出Excel 代码笔记
    Bootstrap系列 -- 44. 分页导航
    Bootstrap系列 -- 43. 固定导航条
    Bootstrap系列 -- 42. 导航条中的按钮、文本和链接
    Bootstrap系列 -- 41. 带表单的导航条
    Bootstrap系列 -- 40. 导航条二级菜单
  • 原文地址:https://www.cnblogs.com/zxf330301/p/6210964.html
Copyright © 2011-2022 走看看