手动制作java的验证码,具体内容如下

Web应用验证码的组成:

(1)输入框

(2)显示验证码的图片

验证码的制作流程:

生成验证码的容器使用 j2ee的servlet

生成图片需要的类:

(1) BufferedImage 图像数据缓冲区

(2)Graphic绘制图片

(3)Color获取颜色

(4)Random生成随机数

(5)ImageIO输入图片

具体实现流程:

(1)定义一个Servlet,用于生成验证码

(2)定已BufferedImage对象,主要作用就是制作一个图片缓冲区,作为图片的一个临时容器。

(3)获得Graphic对象,画图的“背景”,理解为"画布"

(4)通过Random生成随机数,来制作验证信息

(5)通过Graphic操作,进行具体画图

(6)信息存至session中

(7)使用ImageIO输出生成的图片,通过设置ImageIO的 write()方法中的out参数,response.getOutputStream(),将图片传至前台

(8)制作验证用的servlet,提取session中的数据进行验证(这里采用ajax异步方法)

具体代码实现(Web端验证码实例)

java验证码

验证码输入:

看不出清楚?

$(function(){

//ajax异步传验证码至后台

$("input[type=submit]").click(function(){

$.post("CheckCode",

{"code":$("input[name=checkcode]").val()},

function(data,textStatus)

{

console.log(textStatus);

$("#info").html(data);

},"text");

});

})

//js刷新,重新请求页面,获得新的验证码

function reloadCode(){

var time = new Date().getTime();//创建不同的时间

$("#codeimg").attr("src","ImageServlet?time="+time);//因为时间参数不同,请求重新

}

ImageServlet类(验证码生成部分)

@WebServlet("/ImageServlet")

public class ImageServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public ImageServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

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

// TODO Auto-generated method stub

BufferedImage bimg = new BufferedImage(68, 22, BufferedImage.TYPE_INT_RGB);

Graphics g = bimg.getGraphics();

Color color = new Color(200,151,255);//颜色生成

g.setColor(color);

g.fillRect(0, 0, 68, 22);

char[] ch="ABCDEFGHJIKLMNOPQRSTUVWXYZ0123456789".toCharArray();//获得一个含有字母和数字的数组,后续随机从中获取字符

Random random = new Random(); //创建随机数

int len = ch.length,index;

StringBuffer sBuffer = new StringBuffer();

//循环产生4个随机字符

for(int i = 0 ;i<4;i++)

{

index = random.nextInt(len);//产生随机字母与数字

g.setColor(new Color(random.nextInt(88),random.nextInt(120),random.nextInt(90)));//创建随机颜色

g.drawString(ch[index]+"", (i)*15+3, 18);

sBuffer.append(ch[index]);//将随机获取的字符放置缓冲串中

}

request.getSession().setAttribute("newCode", sBuffer.toString());//存至session便于后续验证

ImageIO.write(bimg, "JPG", response.getOutputStream());//通过ImageIO输出图片,并传至前台

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

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

// TODO Auto-generated method stub

doGet(request, response);

}

}

CheckCode(验证码验证servlet)

@WebServlet("/CheckCode")

public class CheckCode extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public CheckCode() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

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

// TODO Auto-generated method stub

response.setCharacterEncoding("utf-8");

String code = request.getParameter("code").toUpperCase();//获取传来验证码并进行大小写转换

String result=null;

if(request.getSession().getAttribute("newCode").equals(code))

{

result="验证成功!";

response.getWriter().append(result);

}

else {

result="验证码错误!";

response.getWriter().append(result);

}

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

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

// TODO Auto-generated method stub

doGet(request, response);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

验证码程序 java_java实现验证码小程序相关推荐

  1. 微信小程序授权_微信小程序授权验证码什么意思

    首先,最先要进行的便是运行微信软件,然后在软件的主界面中,找到"发现"这一功能项目.1.点击"发现"界面之后,会看到一个"游戏中心"的选项, ...

  2. 微信小程序之商用商城小程序

    微信小程序之商用商城小程序 https://pan.baidu.com/s/1CdxrlV7GeRRmsT9UWEMtJg 码cygy 2. 用户端需求列表 分类 主要功能点 功能特性描述 首页 搜索 ...

  3. php小程序地图处理,微信小程序 地图map详解及简单实例

    微信小程序 地图map 微信小程序map 地图属性名类型默认值说明longitudeNumber中心经度 latitudeNumber中心纬度 scaleNumber1缩放级别 markersArra ...

  4. 小程序 按需_小程序后台操作,新手需知道的几个要点

    这节课我们来讲一下小程序的基本知识及后台操作,对上一节课的内容做一个补充.相信大家对于小程序都有一定的了解,对于小程序无需安装,无需下载,即开即用,用完即走的使用方式也是非常熟悉的.那么对于我们想要搭 ...

  5. api 定位 微信小程序 精度_微信小程序开发知识点集锦

    一 小程序的生命周期 代码生命周期就是一个对象的生老病死,通常指程序从创建.开始.暂停.唤起.停止.卸载的过程.小程序的生命周期又可分为应用生命周期和页面的生命周期,先单独分析,在结合两者分析 应用生 ...

  6. 【微信小程序canvas】实现小程序手写板用户签名(附代码)

    [微信小程序canvas]实现小程序手写板用户签名(附代码) 工作中公司业务需要的微信小程序用户签字功能 先看效果图: wxml <view class="wrapper"& ...

  7. 微信门店小程序怎样创建 门店小程序创建方法简介

    微信门店小程序怎样创建 门店小程序创建方法简介 微信门店小程序是什么东西?门店小程序要怎样创建?还不清楚微信门店小程序详情的小伙伴们抓紧时间跟上小编一起来看一下吧!     门店小程序是什么? 微信发 ...

  8. 微信小程序点播插件_小程序云直播amp;云点播插件限时降价了!!!

    普惠音视频开发者 小程序·云直播&云点播插件降价啦! 买200TB流量包免1年插件授权费用 小程序直播插件流量费支持资源包抵扣 点播插件免收播放次数费用 限时降价 买赠活动时间:2020年10 ...

  9. 小程序获取form_id 与 小程序获取openid

    小程序获取form_id **介绍:**小程序的 from_id 要在用户发生操作的时候才能产生,所以我们可以用以下方法来做 直接上代码 wxml <form bindsubmit=" ...

  10. 一个C#程序员学习微信小程序的笔记

    一个C#程序员学习微信小程序的笔记 客户端打开小程序的时候,就将代码包下载到本地进行解析,首先找到了根目录的 app.json ,知道了小程序的所有页面. 在这个Index页面就是我们的首页,客户端在 ...

最新文章

  1. 一小时学会用 Opencv 做贪吃蛇游戏(Python版)
  2. 修改Kali Linux 2020.1主题颜色
  3. 正态分布的峰度和偏度分别为_ML中的正态分布
  4. python中函数定义可以不包括什么_Python 中,函数定义可以不包括以下_______。
  5. 通用滤波器设计----东南大学的
  6. edtext 从右边开始输入 安卓_转换iOS和安卓的视频至任何格式
  7. 期刊投稿状态_这些SCI期刊的投稿显示状态是什么意思?
  8. Golang中unsafe.Sizeof()的问题
  9. puppeteer中如何复用启动中的浏览器
  10. Android 打造RxBus2.x的全面详解
  11. 干货|TPM管理系列之六源改善
  12. 【Codeforces Round #476 (Div. 2) [Thanks, Telegram!] B】Battleship
  13. oppo r5 android 7.1,OPPO R5的手机系统是什么?OPPO R5能升级安卓4.4吗?
  14. 《剑指offer》NO34 二叉树中和为某一值的路径 详解 <Java实现>
  15. 软件测试行业能干的多少岁?是不是真的只能干到35.....
  16. 为什么宝宝本来发高烧却手脚冰凉呢?
  17. “元宇宙”虚拟世界的营销法则 “品牌元宇宙空间”算什么?
  18. process lasso 优化原理
  19. C#委托实现信用卡用户定时还款功能
  20. 如何分辨云主机的真假以及一些常用安装软件

热门文章

  1. DBCO-PEG-Casein/Ovalbumin/Lectins点击化学DBCO偶联络蛋白/卵清蛋白/凝集素
  2. 一文读懂数据库(精华)!!!耗时36小时!!万字长文,吊打监考老师!!!
  3. 前端页面图片加载优化
  4. 猿创征文|Android 11.0 12.0默认开启无障碍服务权限和打开默认apk无障碍服务
  5. 根据IP地址计算网络号,主机号,子网号
  6. C语言程序里全局变量、局部变量、堆、栈内存地址分配
  7. Matlab利用scatter函数绘制散点图
  8. Pycharm使用Anaconda环境
  9. python利用selenium/requests/bs4/xpath爬虫知网8516本学术期刊具体概要
  10. 美丽与魅力,只是因为我做到了