使用kaptcha验证码框架(代码方式)

2019-12-30  本文已影响0人  念念碎平安夜
一、编写kaptcha代码
@WebServlet("/newCode5")
public class NewCode5 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置属性集
        Properties pros = new Properties();
        pros.put("kaptcha.border", "no");
        pros.put("kaptcha.textproducer.font.color", "red");
        pros.put("kaptcha.image.width", "80");
        pros.put("kaptcha.image.height", "30");
        pros.put("kaptcha.textproducer.char.string", "0123456789");
        pros.put("kaptcha.textproducer.char.length", "4");
        pros.put("kaptcha.textproducer.char.space", "5");
        pros.put("kaptcha.textproducer.font.size", "24");
        pros.put("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
        pros.put("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");
        Config config = new Config(pros);
        // 创建kaptcha对象
        DefaultKaptcha kaptcha = new DefaultKaptcha();
        kaptcha.setConfig(config);
        // 生成验证码并保存到Session
        String code = kaptcha.createText();
        request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, code);
        // 生成图片
        BufferedImage img = kaptcha.createImage(code);
        // 返回图片
        ServletOutputStream sos = response.getOutputStream();
        ImageIO.write(img, "png", sos);
        sos.flush();
        sos.close();
    }
}
二、编写验证类
@WebServlet("/valiCode5")
public class ValiCode5 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String valiCode = request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY)
                .toString().toLowerCase();
        String inCode = request.getParameter("inCode").toLowerCase();
        if (inCode.equals(valiCode)) {
            response.sendRedirect("index.jsp");
        } else {
            request.getSession().setAttribute("err", "验证码输入错误!");
            String url = request.getHeader("Referer");
            response.sendRedirect(url);
        }
    }
}
三、前台页面调用并验证
<style type="text/css">
.code_a {
    color: #0000ff;
    font-size: 12px;
    text-decoration: none;
    cursor: pointer;
}

#imgCode {
    cursor: pointer;
}
</style>
<script type="text/javascript">
    function changeCode() {
        var imgCode = document.getElementById("imgCode");
        imgCode.src = "newCode5?" + Math.random();
    }
</script>
</head>
<body>
    <form action="valiCode5" method="post">
        <label>验证码:</label> <input type="text" id="inCode" name="inCode" /> <img
            alt="" src="newCode5" align="center" id="imgCode"
            onclick="changeCode()"> <a class="code_a"
            onclick="changeCode()">换一张</a><br /> <input type="submit" value="登录" />
    </form>
    <div style="color: red;">${err}</div>
</body>
上一篇 下一篇

猜你喜欢

热点阅读