java验证码制作思路_Java实现验证码制作之一自己动手
以前弄验证码都是现找现用,下面是自己跟着敲代码弄好的,记录一下,分享给大家。
我这里用的是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实现验证码制作之一自己动手相关推荐
- java验证码源码_Java通用验证码程序及应用示例(提供源码下载)
评论 # re: Java通用验证码程序及应用示例(提供源码下载) 2009-11-27 17:09 零全零美 多谢博主写出这么好的总结,如果能加上汉字验证码,会更完美! 回复 更多评论 # re ...
- java验证码的代码_java实用验证码的实现代码
本文为大家分享了java实用验证码的实现代码,供大家参考,具体内容如下 1.ValidCode package validImg; import java.awt.Color; import java ...
- java生成的可执行文件_java生成可执行文件(制作可执行文件)
我的eclipse工程文件目录: bin | images(放图片目录) | Lottery.class 目的:打包后class文件访问images中的图片 URL path=Lottery.clas ...
- java集合学生信息_java 使用 集合 制作学生管理系统
以上是文件组织结构 下面是个.java的具体代码: 1 packagecom.collection.students.pojo;2 3 public classStudent {4 privateSt ...
- java计算器取余_Java计算器的制作与完善
一.Java计算器v1.0 要求:完成整数的加减乘除以及取余运算. 代码: package com.neusoft.homework; import java.util.Scanner; public ...
- java扫雷源代码思路_java实现扫雷游戏
初学Java,写了一个扫雷代码来锻炼一下自己的代码能力. 一.代码思路 代码思路很重要,如果事先就想好了代码思路,那么写这一个代码肯定是事半功倍,比在哪里瞎打要强不知道多少. 经过思考,觉得可以创建一 ...
- java仿qq思路_java仿QQ聊天软件OIM艰辛之路(开源项目)
既然QQ能仿ICQ, 咱java也来个仿QQ. 在我刚学完java后,就想做点什么项目锻炼下自己的技能.凑巧的是,我一个同样学java的朋友在做一个仿qq的项目,不过他做的实在太丑了. 然后他想让我也 ...
- java 审核流程思路_java中的工作流流程管理和流转思路
在做某个管理项目时,被要求实现一套流程管理,比如请假的申请审批流程等,在参考了很多资料,并和同事讨论后,得到了一个自主实现的流程管理. 以下提供我的设计思路,知道了思路,实现起来就简单很多了. 首先我 ...
- java龟兔赛跑设计思路_JAVA程序设计(09)-----面对对象设计初级应用 龟兔赛跑
1.乌龟和兔子共有属性和方法 做成父类 避免重复代码 package com.lovo; /** * 类: 动物 * @author Abe * 属性: 名字 步距 总距离 睡觉的日子 */ publ ...
最新文章
- [scala-spark]11. RDD控制操作
- Redis分布式快速入门
- Leet Code OJ 219. Contains Duplicate II [Difficulty: Easy]
- 电话圈(floyd)
- java调用 solr集群_Solr集群安装Version5.5.2(cloud模式)
- 8. GD32F103C8T6 定时器-输入捕获测频率
- unity+vuforia无法识别图片的解决方法
- android设置ip地址连接网络打印机,如何使用IP地址的方式连接网络打印机
- 阿里国际站P4P直通车玩法
- mysql error 1677_MySQL slave error 1677
- oracle序列号查询最大值,Oracle sequence值到了最大值的处理
- 最易懂得 鸿蒙 实战 - 真机调试 原子服务
- 【MOS】如何利用RMAN可传输表空间迁移数据库到不同字节序的平台(文档 ID 1983639.1)...
- SUMO(五)—— TraCI练习
- 一分钟了解“#include命令是干啥的”
- Java中特殊字符处理(转义字符)
- 你是弱者,又有什么了不起
- 最新彩虹易支付二次开发的系统源码+PHP内核
- STM8 STM8S208MB 入门
- linux dhcp 4.3编译,关于在嵌入式Linux下编译dhcp报错“cannot check for file existence when cross compiling”的初步研究...
热门文章
- 计算机表格中如何计算数据透视表,在数据透视表中计算值
- python生成日志文件_Python 日志生成器
- mysql前两个月_MySQL数据库表始终保持最近两个月的记录
- mysql meb安装_用meb搭建MySQL Master/Slave
- html5 字母单词拖拽,HTML5拖拽
- c语言学习-有一12个元素的整型数组b,从键盘输入数据,请以每行4个数据各个数据之间空两格的形式输出b数组的12个元素
- python中weekday_[转载] Python日历模块| 使用示例的weekday()方法
- socket编程持续交流java_socket编程的简单问题
- NumPy 1.19.3 发布,Python 科学计算包
- 使用Web API和React创建用户注册和登录