Java笔记-使用Kaptcha验证码框架

Java笔记-使用Kaptcha验证码框架使用Kaptcha这个验证码框架用起来,比自己写简单首先设置maven项目:<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId>…

大家好,又见面了,我是你们的朋友全栈君。

使用Kaptcha这个验证码框架用起来,比自己写简单

首先设置maven项目:

        <dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
        </dependency>

然后配置WEB-INF下的web.xml

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <servlet-mapping>
        <servlet-name>kaptchaDemo</servlet-name>
        <url-pattern>/kaptcha</url-pattern>
    </servlet-mapping>
    
    <servlet>
        <servlet-name>kaptchaDemo</servlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
        <init-param>
            <param-name>kaptcha.border</param-name>
            <param-value>no</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.font.color</param-name>
            <param-value>red</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.image.width</param-name>
            <param-value>80</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.image.height</param-name>
            <param-value>30</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.string</param-name>
            <param-value>0123456789</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.length</param-name>
            <param-value>4</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.space</param-name>
            <param-value>3</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.font.size</param-name>
            <param-value>24</param-value>
        </init-param>
<!--        <init-param>-->
<!--            <param-name>kaptcha.noise.impl</param-name>-->
<!--            <param-value>com.google.code.kaptcha.impl.NoNoise</param-value>-->
<!--        </init-param>-->
    </servlet>

</web-app>

其中对应的jsp页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">

    <title>kaptchaDemo</title>
    <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 = "kaptcha?"+Math.random();
        }
    </script>
</head>

<body>
<form action="login" method="post">
    <label>验证码:</label>
    <input type="text" id="inCode" name="inCode" />
    <img src="kaptcha" align="center" id="imgCode" onclick="changeCode()" />
    <a class="code_a" onclick="changeCode()">换一张</a><br />
    <input type="submit" value="登录"/>
</form>
</body>
</html>

这里src请求的是kaptcha的url。这里这个框架里面实现了一个Servlet,通过配置文件的方式,对某些属性进行设置(这里不用说了,肯定是反射)

程序运行截图如下:

Java笔记-使用Kaptcha验证码框架

输入错误时,依旧是这个界面,但输入正确后!

Java笔记-使用Kaptcha验证码框架

下面是关于他的验证方面的代码:

LoginServlet.java

import com.google.code.kaptcha.Constants;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(value = "/login")
public class LoginServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        this.doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String vailCode = request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY).toString().toLowerCase();
        String inCode = request.getParameter("inCode").toLowerCase();

        if(inCode.equals(vailCode)){

            response.sendRedirect("success.jsp");
        }
        else{

            String url = request.getHeader("Referer");
            response.sendRedirect(url);
        }
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150383.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html网站怎么注入_跨站脚本攻击原理

    html网站怎么注入_跨站脚本攻击原理跨站脚本攻击(XSS)是一种客户端代码注入攻击。攻击者通过在合法的网页中注入恶意代码,达到在受害者的浏览器中执行恶意代码的目的。当受害者访问执行恶意代码的网页时,攻击就开始了。这些网页成为了将恶意代码发送到用户浏览器的工具。通常受到跨站脚本攻击的网页包括论坛、留言板以及可以评论的网页。如果网页将用户的原始输入作为网页内容,那么它很容易受到XSS攻击,因为这类用户输入一定会被受害者的浏览器解析。…

    2022年10月29日
  • Fread函数的用法「建议收藏」

    Fread函数的用法「建议收藏」转载地址 https://www.cnblogs.com/melons/p/5791874.html 函数原型:size_t fread( void *buffer, size_t size, size_t count, FILE *stream )  buffer 是读取的数据存放的内存的指针(可以是数组,也可以是新开辟的空间,buffer就是…

    2022年9月13日
  • 个人微信号API接口,微信机器人

    个人微信号API接口,微信机器人前段时间公司需求开发一套自定义的微信机器人,需求是可以自己批量添加好友、批量打标签等进行好友管理,社群管理需要自动聊天,自动回复,发朋友圈,转发语音,以及定时群发等,还可以提取聊天内容,进行数据汇总,收藏快捷回复各种功能!一堆需求砸下来,调研开发了3个月,3个月啊!!!(主要被各种技术走偏路),终于成功了,都是走过的心酸泪,分享给大家,大家学习完,记得给我点个赞!!!大家一般需求点无非是以下几个需求:1.开发个人微信营销系统2.开发自定义的微信机器人,3.开发微信智能聊天客服系统

    2022年5月18日
  • 多指标评价方法-变异系数法的pathon实现

    多指标评价方法-变异系数法的pathon实现文章的目的我们经常需要对一些企业、部门、甚至某个城市进行评价,但是用一个指标不可能全面反映这些复杂单元,所以我们经常会用很多指标进行评价,这些指标单位不统一,大小数量级有时候相差很多,把这些复杂的指标最后综合起来成为一个指数,这就是综合评分的本质。综合评价的方法有很多,主要有三类:主观综合评价、客观综合评价、主客观混合评价。本文主要是讲述客观综合平台里的变异系数法。本文有两个目标:各个指标权重的确定多个单元的排序(竞争力排名、大学排名、发展水平、幸福排名、税负排名诸如此类)变异系数法的计算过程每

    2022年6月10日
  • 「从零单排canal 07」 parser模块源码解析

    「从零单排canal 07」 parser模块源码解析

    2020年11月19日
  • phpstorm激活码[最新免费获取]

    (phpstorm激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号