以前弄验证码都是现找现用,下面是自己跟着敲代码弄好的,记录一下,分享给大家。

我这里用的是Servlet ,Servlet代码如下

import java.awt.Color;

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;

public class ImageServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

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

Graphics g=bi.getGraphics();

Color c=new Color(200,150,255);

g.setColor(c);

g.fillRect(0, 0, 68, 22);//宽高

//设定验证码的字符

char[] ch="QWERTYUIOPASDFGHJKLZXCVBNM0123456789".toCharArray();

Random r=new Random();

int len=ch.length,index;

StringBuffer sb=new StringBuffer();

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

index=r.nextInt(len);

//设置每个字体的颜色都不一样

g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255)));

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

sb.append(ch[index]);//记录验证码

}

req.getSession().setAttribute("piccode", sb.toString());//保存到session作用域当中

ImageIO.write(bi, "JPG", resp.getOutputStream()); //写入到对应的页面

super.doGet(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGet(req, resp);

}

}

//上面servlet 中把每次生成的验证码都保存在session中

// req.getSession().setAttribute("piccode", sb.toString());

//当用户提交的我们就可以通过

//String code=req.getSession().getAttribute("piccode");

//来取得生成的验证码和用户填写的验证码来对比

//web.xml中的配置

ImageServlet

com.test.servlet.ImageServlet

ImageServlet

/image.do

index.jsp

//index.jsp页面代码

验证码:

function relodCode(obj,url){

var time=new Date();

obj.src="/"+url+"?time="+time;

}

效果图(点击验证码刷新)

上面介绍的是自己来写,但是我们一般用要用的验证码的时候一般都会用一些插件,下一篇来介绍一下 kaptcha验证码的使用

java验证码制作思路_Java实现验证码制作之一自己动手相关推荐

  1. java验证码源码_Java通用验证码程序及应用示例(提供源码下载)

    评论 # re: Java通用验证码程序及应用示例(提供源码下载) 2009-11-27 17:09 零全零美 多谢博主写出这么好的总结,如果能加上汉字验证码,会更完美!  回复  更多评论 # re ...

  2. java验证码的代码_java实用验证码的实现代码

    本文为大家分享了java实用验证码的实现代码,供大家参考,具体内容如下 1.ValidCode package validImg; import java.awt.Color; import java ...

  3. java生成的可执行文件_java生成可执行文件(制作可执行文件)

    我的eclipse工程文件目录: bin | images(放图片目录) | Lottery.class 目的:打包后class文件访问images中的图片 URL path=Lottery.clas ...

  4. java集合学生信息_java 使用 集合 制作学生管理系统

    以上是文件组织结构 下面是个.java的具体代码: 1 packagecom.collection.students.pojo;2 3 public classStudent {4 privateSt ...

  5. java计算器取余_Java计算器的制作与完善

    一.Java计算器v1.0 要求:完成整数的加减乘除以及取余运算. 代码: package com.neusoft.homework; import java.util.Scanner; public ...

  6. java扫雷源代码思路_java实现扫雷游戏

    初学Java,写了一个扫雷代码来锻炼一下自己的代码能力. 一.代码思路 代码思路很重要,如果事先就想好了代码思路,那么写这一个代码肯定是事半功倍,比在哪里瞎打要强不知道多少. 经过思考,觉得可以创建一 ...

  7. java仿qq思路_java仿QQ聊天软件OIM艰辛之路(开源项目)

    既然QQ能仿ICQ, 咱java也来个仿QQ. 在我刚学完java后,就想做点什么项目锻炼下自己的技能.凑巧的是,我一个同样学java的朋友在做一个仿qq的项目,不过他做的实在太丑了. 然后他想让我也 ...

  8. java 审核流程思路_java中的工作流流程管理和流转思路

    在做某个管理项目时,被要求实现一套流程管理,比如请假的申请审批流程等,在参考了很多资料,并和同事讨论后,得到了一个自主实现的流程管理. 以下提供我的设计思路,知道了思路,实现起来就简单很多了. 首先我 ...

  9. java龟兔赛跑设计思路_JAVA程序设计(09)-----面对对象设计初级应用 龟兔赛跑

    1.乌龟和兔子共有属性和方法 做成父类 避免重复代码 package com.lovo; /** * 类: 动物 * @author Abe * 属性: 名字 步距 总距离 睡觉的日子 */ publ ...

最新文章

  1. [scala-spark]11. RDD控制操作
  2. Redis分布式快速入门
  3. Leet Code OJ 219. Contains Duplicate II [Difficulty: Easy]
  4. 电话圈(floyd)
  5. java调用 solr集群_Solr集群安装Version5.5.2(cloud模式)
  6. 8. GD32F103C8T6 定时器-输入捕获测频率
  7. unity+vuforia无法识别图片的解决方法
  8. android设置ip地址连接网络打印机,如何使用IP地址的方式连接网络打印机
  9. 阿里国际站P4P直通车玩法
  10. mysql error 1677_MySQL slave error 1677
  11. oracle序列号查询最大值,Oracle sequence值到了最大值的处理
  12. 最易懂得 鸿蒙 实战 - 真机调试 原子服务
  13. 【MOS】如何利用RMAN可传输表空间迁移数据库到不同字节序的平台(文档 ID 1983639.1)...
  14. SUMO(五)—— TraCI练习
  15. 一分钟了解“#include命令是干啥的”
  16. Java中特殊字符处理(转义字符)
  17. 你是弱者,又有什么了不起
  18. 最新彩虹易支付二次开发的系统源码+PHP内核
  19. STM8 STM8S208MB 入门
  20. linux dhcp 4.3编译,关于在嵌入式Linux下编译dhcp报错“cannot check for file existence when cross compiling”的初步研究...

热门文章

  1. 计算机表格中如何计算数据透视表,在数据透视表中计算值
  2. python生成日志文件_Python 日志生成器
  3. mysql前两个月_MySQL数据库表始终保持最近两个月的记录
  4. mysql meb安装_用meb搭建MySQL Master/Slave
  5. html5 字母单词拖拽,HTML5拖拽
  6. c语言学习-有一12个元素的整型数组b,从键盘输入数据,请以每行4个数据各个数据之间空两格的形式输出b数组的12个元素
  7. python中weekday_[转载] Python日历模块| 使用示例的weekday()方法
  8. socket编程持续交流java_socket编程的简单问题
  9. NumPy 1.19.3 发布,Python 科学计算包
  10. 使用Web API和React创建用户注册和登录