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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spss k-means聚类分析_K均值聚类及其应用

    spss k-means聚类分析_K均值聚类及其应用SPSS聚类分析:K均值聚类分析一、概念:(分析-分类-K均值聚类)1、此过程使用可以处理大量个案的算法,根据选定的特征尝试对相对均一的个案组进行标识。不过,该算法要求您指定聚类的个数。如果知道,您可以指定初始聚类中心。您可以选择对个案分类的两种方法之一,要么迭代地更新聚类中心,要么只进行分类。可以保存聚类成员、距离信息和最终聚类中心。还可以选择指定一个变量,使用该变量的值…

    2022年10月17日
    2
  • HTTP请求返回415错误码定位解决

    HTTP请求返回415错误码定位解决今天在工作中,发现我再调用外部API接口的时候,发现一个奇怪的问题,就是我Eclipse中写代码调用外部API接口时返回HTTP状态码是415,但是我将相同的报文放在HttpRequester里面请求的时候却又可以拿到正常返回结果,而不是415错误。不知道有没有人跟我一样遇到过这个问题,这里记录一下解决办法。首先我们还是看下HTTP的状态码关于415返回码的说明吧。41

    2022年6月14日
    46
  • pycharm中导入pandas_新电脑安装软件特别慢

    pycharm中导入pandas_新电脑安装软件特别慢pandas标红,导入库发现pandas库迟迟不能安装后网络寻找方法:进行换源找到ManageRepositories(如果找不到这个,可以查看我的《Pycharm2019安装第三方库》)点击“+”添加第二行点击OK若成功便会如下图会有两个url(注意pilapse只是个例子,你若没有也正常,重点是有pythontuna…)…

    2022年8月27日
    7
  • pycharm运行报错_pycharm failed to create virtual

    pycharm运行报错_pycharm failed to create virtual   

    2022年8月26日
    10
  • 奇点临近-人工智能的时代已经来了[通俗易懂]

    当人们看到太多相同的时候,也许我们很无知;当人们看到太多不同的时候,也许我们视野不够大;当人们同时看到不同和相同的时候,也许恰是我们智慧的原点。奇点临近奇点临近这本书,是一本预测人工智能和科技未来的奇书。目前人工智能处于快速发展的阶段,在很多领域中已经能够越来越多的看到人工智能产品的出现,改变着这个世界,改变着我们每一个人的生活。在谈人工智能之前,先聊聊什么是 “奇点” ,奇点 这个…

    2022年2月28日
    47
  • 两种方法上传本地文件到github

    两种方法上传本地文件到github

    2021年10月15日
    40

发表回复

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

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