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中的配置
<servlet>
<servlet-name>ImageServlet</servlet-name>
<servlet-class>com.test.servlet.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/image.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
//index.jsp页面代码
<form action="<%=request.getContextPath()%>/login.do" method="get" >
<center>
<div>
验证码:<input type="text" name="code1" />
<img alt="验证码" src="<%=request.getContextPath()%>/image.do" id="code1" onclick="relodCode(this,'image.do')"/>
</div>
<input type="submit" value="提交"/>
</center>
</form>
<script type="text/javascript">
function relodCode(obj,url){
var time=new Date();
obj.src="<%=request.getContextPath()%>/"+url+"?time="+time;
}
</script>
效果图(点击验证码刷新)
上面介绍的是自己来写,但是我们一般用要用的验证码的时候一般都会用一些插件,下一篇来介绍一下 kaptcha验证码的使用
Java实现验证码制作之一自己动手的更多相关文章
- Java实现验证码制作之一Kaptcha验证码
Kaptcha验证码 是google提供的验证码插件,使用起来相对简单,设置的干扰线以及字体扭曲不易让其他人读取破解. 这里我们需要 导入一个 kaptcha-2.3.jar 下载地址:http:/ ...
- webform 图片验证码制作
界面:1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.as ...
- java识别验证码
所需资源下载链接(资源免费,重在分享) Tesseract:http://download.csdn.net/detail/chenyangqi/9190667 jai_imageio-1.1-alp ...
- Webcast / 技术小视频制作方法——自己动手录制video轻松搞定
Webcast / 技术小视频制作方法——自己动手录制video轻松搞定 http://blog.sina.com.cn/s/blog_67d387490100wdnh.html 最近申请加入MSP的 ...
- Java第四次上课博文动手动脑
Java第四次上课博文动手动脑 1. 查看String.equals()方法 public class StringEquals { /** * @param args the command ...
- 【开发技术】Java生成验证码
Java生成验证码 为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下; ...
- 使用Java设计验证码生成程序
我们来设计一个简单的验证码生成程序:验证码一个由4位的数字.字母随机组合而成图像,为了避免被光学字元识别(OCR,Optical Character Recognition)之类的程序识别出图片中的数 ...
- java图形验证码
用java实现验证码的生成,以下代码是一个controller,可以直接使用 package org.jxnd.tongxuelu.controller; import java.awt.Color; ...
- java实现验证码功能
java实现验证码功能 通过java代码实现验证码功能的一般思路: 一.通过java代码生成一张验证码的图片,将验证码的图片保存到项目中的指定文件中去,代码如下: package com.util; ...
随机推荐
- IT 外包中的甲方乙方,德国人,美国人,印度人和日本人印象杂谈
开篇介绍 最近经常和朋友聚会,三十而立的年龄自然讨论最多的就是各自的小家庭,如何赚钱,工作,未来的就业发展,职业转型等话题.还有各种跳槽,机会选择,甲方乙方以及外包中的各种趣事,外企与国内私企的发展机 ...
- PAT mooc DataStructure 4-2 SetCollection
数据结构习题集-4-2 集合的运用 1.题目: We have a network of computers and a list of bi-directional connections. Eac ...
- C和指针 第五章 警告总结
1.有符号的值得右移位操作是不可移植的 2.移位操作的位数是个负数,是未定义的 3.连续赋值的各个变量的长度 不一,导致变量值截断. #include <stdio.h> int main ...
- linux 最近使用的命令
vi 文件名 >> 按 i 键,进行编辑,编辑完,按ESC键,再按:q代表不保存退出,按:wq代表保存退出. ps aux|grep java >> 搜索目前启动的ja ...
- JQuery实现图片轮播效果源码
======================整体结构======================== <div class="banner"> <ul class ...
- 01 java开发前小知识
1.常见的dos命令 盘符: 进入指定的盘符下. dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 注意:rd不能删除非空的文件夹,而且只能用于删除文件夹. c ...
- Java、JVM模型
程序计数器:记录当前线程的执行位置(便于CPU切换线程的时候执行) 虚拟机栈:Java方法,方法从调用到执行完成对应一个栈帧从虚拟机栈入栈到出栈的过程. 本地方法区:Native方法(C++) 方法区 ...
- js遮罩效果
function ShowLoadingMaskLayer(text) { var htmlContent = '<div id=\"masklayer\">' + ' ...
- WinForm 与WPF 窗体之间的想到调用
先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...
- [译]:Orchard入门——部件管理
原文链接:Managing Widgets 在Orchard中,部件是可以加入到当前当前主题任何位置或区域(如侧栏sidebar或底部区域footer)的UI块(如:HTML)或代码部分(如:内容部分 ...