简单Maven的Web项目之验证码(jcaptcha组件篇)

一:JCaptcha简介

jcaptcha是一个开源的用来生成图形验证码的Java开源组件,使用起来也是非常的简单方便。

jcapthca是非常强大的,不光是可以生成图片式的验证码,还可以生成声音式的(新浪就使用了双重验证码)。

Jcaptcha是CAPTCHA里面的一个比较著名的项目。

二:切换使用JCaptcha生成验证码

1:首先添加需要用到的jar包

注:由于部分jar包maven中央库中没有需要自行添加到本地库,稍后给出jar包的下载地址

下面是jar包在pom.xml文件中的配置

<dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.0</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.3</version>
    </dependency>
    <dependency>
      <groupId>com.octo.captcha</groupId>
      <artifactId>filters</artifactId>
      <version>2.0.235</version>
    </dependency>
    <dependency>
      <groupId>com.octo.captcha</groupId>
      <artifactId>jcaptcha-api</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>com.octo.captcha</groupId>
      <artifactId>jcaptcha</artifactId>
      <version>2.0-alpha-1-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>com.octo.captcha</groupId>
      <artifactId>jcaptcha-integration-simple-servlet</artifactId>
      <version>2.0-alpha-1-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.4</version>
      <scope>provided</scope>
    </dependency>

web.xml文件中servlet的配置,参考下面地址

https://jcaptcha.atlassian.net/wiki/display/general/Simple+Servlet+Integration+documentation

<!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>VerifyCode</display-name>
    <servlet>
        <servlet-name>verifyCode</servlet-name>
        <servlet-class>com.niu.gao.VerifyCodeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>verifyCode</servlet-name>
        <url-pattern>/verifyCode/submit.do</url-pattern>
    </servlet-mapping>
    <!-- jcaptcha配置 https://jcaptcha.atlassian.net/wiki/display/general/Simple+Servlet+Integration+documentation -->
    <servlet>
        <servlet-name>jcaptcha</servlet-name>
        <servlet-class>com.octo.captcha.module.servlet.image.SimpleImageCaptchaServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>jcaptcha</servlet-name>
        <url-pattern>/jcaptcha.jpg</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

index.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>VerifyCode</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <script type="text/javascript" src="jquery-1.9.1.js"></script>
    <script type="text/javascript">
        var path="<%=path%>";
        $( document ).ready(function() {
            $("#codeImg").on("click",function(){
                $(‘#codeImg‘).prop(‘src‘,path+‘/jcaptcha.jpg?nocache=‘+new Date().getTime());
            });
        });
    </script>
  </head>
<body style="text-align: center;">
<h2>Hello World!</h2>
<span style="margin: 10px 0 0 10px;vertical-align: baseline;">请输入验证码:<input name="verifyCode" type="text" /></span><img id="codeImg" style="vertical-align: bottom;margin: 10px 0 0 10px;cursor: pointer;"  alt="验证码" src="<%=path%>/jcaptcha.jpg">
</body>
</html>

验证的servlet类

package com.niu.gao;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.octo.captcha.module.servlet.image.SimpleImageCaptchaServlet;
/**
 * @Description: (验证验证码Servlet)
 * @author:relieved
 * @date:2015-7-25
 */
public class VerifyCodeServlet extends HttpServlet {
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String codeValue = req.getParameter("verifyCode");
        boolean checkRs = SimpleImageCaptchaServlet.validateResponse(req, codeValue);

        resp.setCharacterEncoding("GBK");
        resp.setContentType("text/html");
        resp.getWriter().write("<html><body>");
        if(checkRs){
            resp.getWriter().write("验证成功!");
        }else{
            resp.getWriter().write("验证失败!");
        }
        resp.getWriter().write("<br/><a href=‘javascript:history.go(-1);‘>再试一次</a>");
        resp.getWriter().write("</body></html>");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        this.doGet(req, resp);
    }

}

效果图

验证失败图

验证通过图

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-11 10:09:16

简单Maven的Web项目之验证码(jcaptcha组件篇)的相关文章

简单Maven的Web项目之验证码

一:用Maven命令创建一个Web项目 创建命令如下: mvn archetype:create -DgroupId=com.gao.web -DartifactId= VerifyCode -DarchetypeArtifactId=maven-archetype-webapp 首先配置好maven环境,之前的博客有说环境配置问题,然后在命令行运行上述命令,成功后截图如下 然后运行下面命令将生成的maven项目转化为elipse能识别的项目 mvn -Dwtpversion=1.0 eclip

Maven发布web项目到tomcat

在java开发中经常要引入很多第三方jar包:然而无论是java web开发还是其他java项目的开发经常会由于缺少依赖包引来一些不必要的异常.常常也是因为这样的原因导致许多简单的缺包和版本问题耗费大量的精力.然而,开源世界并没有让java开发人员在这方面耗费过多的精力. Apache提供了Maven工具,对项目进行自动化的构建和发布.只需要在Maven的pom.xml文件中加入相应的配置项,剩余的工作交给maven就可以了.然而去喝杯茶做个安安静静的美男子.然而除了Maven外还有Gradle

IDEA下使用maven构建web项目(SpringMVC+Mybatis整合)

需求背景:由于最近总是接到一些需求,需要配合前端团队快速建设移动端UI应用或web应用及后台业务逻辑支撑的需求,若每次都复用之前复杂业务应用的项目代码,总会携带很多暂时不会用到的功能或组件,这样的初始工程就存在冗余代码. 在本文中,我们将使用Java语言开发集成环境IntelliJ IDEA(其倡言是智能编码?),应用maven构建SpringMVC整合Mybatis+MySQL5.7(流行框架)的web项目:目的在于快速构建一个简洁纯净版的web应用工程,将其作为一个基础web-demo,以便

Maven的学习资料收集--(四)使用Maven构建Web项目-测试

2014-08-04 23:21 2人阅读 评论(0) 收藏 编辑 删除 目录(?)[+] [-] 在srcmainjava下新建一个Servlet 修改webxml 新建JSP 测试 在上一篇博客里,我们使用Maven构建了一个Web项目,我们在这里写一个简单的Servlet,测试一下. 1.在src/main/java下,新建一个Servlet [java] view plaincopyprint? <span style="font-weight: normal;">

Maven的学习资料收集--(三)使用Maven构建Web项目

新建Maven项目 File - New - Other 选择Maven Project 单击Next 保持默认即可单击Next 选择Archetype为 web app单击Next 输入一些必要信息单击Finish 项目结构如下图 配置项目 在项目上右键单击添加Source Folder 修改Build Path 配置 将项目转换为Dynamic Web Project 设置部署程序集Web Deployment Assembly 从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Ma

eclipse 用maven创建web项目

Eclipse 用maven构建web项目 (2013-01-27 11:05:31) 转载▼ 标签: it eclipse maven spring web 杂谈   一.背景介绍 对于初学者,用maven构建项目并不是一件容易的事,springmvc并不是MVC中的主流,但是本人觉得springmvc比struts要好用,真正做到了零配置.一次使用,就放不下了. 二.准备工作 1.Eclipse 3.7 2.maven 3.Eclipse 需要安装maven插件.url:maven - ht

Maven学习(三)- 使用Maven构建Web项目

从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Maven构建一个Web项目,找到一篇文档,主要都是从这里学到的: 下载地址:使用Eclipse构建Maven的Web项目.docx 现自己在重新操作一下:(使用的是Eclipse JavaEE版 ps:eclipse-jee-indigo-SR1-win32,已经安装好了m2eclipse插件) 1.新建Maven项目 1.1 File -> New -> Other 1.2 选择Maven Project ,单击Next 1.3 保

4.使用Maven搭建Web项目

# 0.写在前面 回忆一下之前我们的工作,我们发现之前我们使用Maven创建的项目全部都是基于一般Java SE的项目 换句话说就是:之前的项目都是单机项目 但是从目前情况来看,学习如何使用Maven框架搭建一个Java Web项目才是当务之急 那么这一篇章我们主要的目的如下: 1.学习如何通过Java EE版本Eclipse搭建一个Maven项目并且部署运行: 为了方便学习,本着工欲善其事必先利其器的思想(实际上就是为了偷懒) 我们推荐大家使用最新版本的Eclipse工具. 因为在老版本的Ec

IDEA+springMVC+mybatis构建maven的web项目

应用maven构建SpringMVC整合Mybatis+MySQL8.0.15(流行框架)的web项目 目的:快速构建一个简洁纯净版的web应用工程,将其作为一个基础web-demo,便于复用 一.IDEA下构建maven的web项目 1.新建工程New-->Project,创建maven的web项目,选择maven-archetype-webapp,并配置Project SDK,本次选用的是本机已安装的jdk1.8,如下图所示: 2.填写自己项目的GroupId,ArtifactId,如下图: