文档库 最新最全的文档下载
当前位置:文档库 › java登录验证码实现代码

java登录验证码实现代码

java登录验证码实现代码
java登录验证码实现代码

VerifyCodeServlet.java类:

复制代码代码如下:

package com.spring.controller;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.util.Random;

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;

@Controller

public class VerifyCodeServlet extends HttpServlet {

// 验证码图片的宽度。

private int width = 60;

// 验证码图片的高度。

private int height = 20;

// 验证码字符个数

private int codeCount = 4;

private int x = 0;

// 字体高度

private int fontHeight;

private int codeY;

char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',

'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

/**

* 初始化验证图片属性

*/

public void initxuan() throws ServletException {

// 从web.xml中获取初始信息

// 宽度

String strWidth ="80";

// 高度

String strHeight ="30";

// 字符个数

String strCodeCount = "4";

// 将配置的信息转换成数值

try {

if (strWidth != null && strWidth.length() != 0) {

width = Integer.parseInt(strWidth);

}

if (strHeight != null && strHeight.length() != 0) {

height = Integer.parseInt(strHeight);

}

if (strCodeCount != null && strCodeCount.length() != 0) { codeCount = Integer.parseInt(strCodeCount);

}

} catch (NumberFormatException e) {

}

x = width / (codeCount + 1);

fontHeight = height - 2;

codeY = height - 4;

}

@RequestMapping(value="xuan/verifyCode",method=RequestMethod.GET) public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException {

initxuan();

// 定义图像buffer

BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics2D g = buffImg.createGraphics();

// 创建一个随机数生成器类

Random random = new Random();

// 将图像填充为白色

g.setColor(Color.WHITE);

g.fillRect(0, 0, width, height);

// 创建字体,字体的大小应该根据图片的高度来定。

Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);

// 设置字体。

g.setFont(font);

// 画边框。

g.setColor(Color.BLACK);

g.drawRect(0, 0, width - 1, height - 1);

// 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。

g.setColor(Color.BLACK);

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

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(12);

int yl = random.nextInt(12);

g.drawLine(x, y, x + xl, y + yl);

}

// randomCode用于保存随机产生的验证码,以便用户登录后进行验证。

StringBuffer randomCode = new StringBuffer();

int red = 0, green = 0, blue = 0;

// 随机产生codeCount数字的验证码。

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

// 得到随机产生的验证码数字。

String strRand = String.valueOf(codeSequence[random.nextInt(36)]);

// 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。

red = random.nextInt(255);

green = random.nextInt(255);

blue = random.nextInt(255);

// 用随机产生的颜色将验证码绘制到图像中。

g.setColor(new Color(red, green, blue));

g.drawString(strRand, (i + 1) * x, codeY);

// 将产生的四个随机数组合在一起。

randomCode.append(strRand);

}

// 将四位数字的验证码保存到Session中。

HttpSession session = req.getSession();

session.setAttribute("validateCode", randomCode.toString());

// 禁止图像缓存。

resp.setHeader("Pragma", "no-cache");

resp.setHeader("Cache-Control", "no-cache");

resp.setDateHeader("Expires", 0);

resp.setContentType("image/jpeg");

// 将图像输出到Servlet输出流中。

ServletOutputStream sos = resp.getOutputStream();

ImageIO.write(buffImg, "jpeg", sos);

sos.close();

}

}

ResultServlet.java:

复制代码代码如下:

package com.spring.controller;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

@Controller

public class ResultServlet {

@RequestMapping(value="resultServlet/validateCode",method=RequestMethod.POST) public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

String validateC = (String) request.getSession().getAttribute("validateCode");

String veryCode = request.getParameter("c");

PrintWriter out = response.getWriter();

if(veryCode==null||"".equals(veryCode)){

out.println("验证码为空");

}else{

if(validateC.equals(veryCode)){

out.println("验证码正确");

}else{

out.println("验证码错误");

}

}

out.flush();

out.close();

}

}

jsp页面:

复制代码代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

"https://www.wendangku.net/doc/c810060903.html,/TR/html4/loose.dtd">

test verify code

换一张

运行效果:

Java登陆验证模块的实现及小结

登陆验证模块的实现 登陆页面验证首先是验证账号, 验证码是否填写,密码长度是否符合要求,验证码是否正确。这几个验证是通过自定义的几个$.fn扩展函数实现的($.fn.remote=Function(url,msg, msgCnt){})实现的,一般将这些自定义的函数放在一个js文件中,便于维护。 自定义函数一般包含相应的提示字符串,及节点对象$(“#id”)等参数。通过函数对节点的var value = this.val();value是否为空或空字符串的判断,相应的改变节点text属性的值。1验证码正确验证 1)验证码正确与否的验证是通过采用了Ajax技术的函数实现的。对应的action的result 的属性为json(result要配置ok的参数),action类要有布尔类型的名为ok的属性,通过返回值ok,更改相应的改变节点text属性的值。 如: $.fn.remote=function(url,msg,msgCnt){ var value=this.val();//获得表单提交的数据,如你所填入的验证码/资费名称 var name=this.attr("name");//获得表单名称,如验证码文本框的name:verifiCode var b=false; $.ajax({url:url+"?"+name+"="+value,dataTyp e:"json",async:false,success:function(data){ if(data){ $(msgCnt).text(""); b=true; }else{ $(msgCnt).text(msg); } } }); return b; }; 2)验证码的点击更新是利用了result=stream的属性(要配置name="inputName",name="contentType"的参数),点击发送请求,对应的action(该类必须有InputStream类的属性,且名字要和result相应参数的属性值相同)生成验证码并存入session。 2账户和密码的验证 当前面一系列的验证结果都满足条件时,才能提交表单。可定义一个函数实现:if(b1 && b2 && b4) {$("#loginForm").submit();} 相应action 接受到数据后,根据账户和密码调用DAO的相关方法,查询返回admin。 如果admin存在则转发到主页面(通过result在admin的不同状态下返回的字符串实现不同的type="redirectAction"),此时将admin存入session。为后面的登陆检查验证做准备。 session.put(KEY_ADMIN, admin); 如果不存在就,还是停留在登陆页面。 3检查登陆验证。 为了防止未登录而访问数据,通过struts2的自定义拦截器功能实现登陆检查验证。 可通过实现接口Interceptor或者抽象类AbstractInterceptor,我选择继承AbstractIntercepto,相对较简洁。在接口定义的方法intercept(ActionInvocation in)实现验证

《Java范例开发大全》

下面是377个Java的例子。如果你是牛人,看看你能做出多少? 如果有人不相信这些例子都是Java做的,可以看看清华大学的《Java范例开发大全》实例1开发第一个Java程序 实例2自动提升 实例3自动转换 实例4常用基础类型之强制转换 实例5算术运算符 实例6关系运算符 实例7逻辑运算符 实例8位运算符 实例9移位运算符 实例10转型运算符 实例11常量与变量 实例12各种进制的转换 实例13 Java中的进制与移位运算符 实例14判断输入的年份是否为闰年 实例15抽奖活动 实例16xx乘法表 实例17如何列出素数 实例18 Java中的递归 实例19男生女生各多少人

实例20求xx数 实例21求任意一个正数的阶乘 实例22求n的n次方 实例23利用for循环输出几何图形 实例24xx 实例25求1到100之间的和 实例26存上100元需要多少天 实例27输出100之间的所有偶数 实例28如何判断回文数字 实例29输出100之间的所有奇数 实例30求最大的随机数 实例31判断字母分类 实例32优良及差 实例33打印任意一年日历 实例34一年四季的划分 实例35除0发生的算术异常(ArithmeticException) 实例36数组下标越界异常(ArrayIndexOutOfBoundsException)实例37数组元素类型不匹配异常(ArrayStoreException) 实例38强制类型转换异常(ClassCastException) 实例39索引越界异常(IndexOutOfBoundsException) 实例40空指针异常(NullPointerException)

jsp页面验证码源代码

jsp页面验证码源代码 在java后台中生成验证码的ImageIO传到前端页面显示,同时把验证码的v alue值传入session 中用于与用户输入的验证码进行匹配,在用户验证中使用ajax技术,在不刷新页面的同时进行验证码验证。 程序结构图: VerifyCodeUtils程序主要内容为通过Java生成验证码的图片,以及验证码的value值,程序如下: package utils; import java.awt.Color; import java.awt.Font;

import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; publicclass VerifyCodeUtils { privatestatic BufferedImage image = null; privatestatic Random random = new Random(); //在自己定义的一些数中,生成4位随机数 publicstatic String getVerifyCode() { String str = ""; char[] code = newchar[]{'A','B','C','D','E','F','G','H','I ','J','K','L','M','N','P','Q','R','S','T','U', 'V','W','X','Y','Z','a','b','c','d','e','f','g','h','i',' j','k','m','n','p','q','r','s','t', 'u','v','w','x','y','z','2','3','4','5','6','7','8','9'}; Random random = new Random(); for(int i = 0; i <4; i++) { str += String.valueOf(code[random.nextInt(code.length)]); } return str; }

java日志与验证码

java日志: 日志的网上很多也: https://www.wendangku.net/doc/c810060903.html,/view/ccb3ce1efc4ffe473368abdf.html 你自己看看。我们的系统里面一般都是自己写了一个程序。将用户的操作信息,IP,时间,操作内容写入我们数据库里面。 Tomcat的日志一般我们用绿色版,它自带有日志功能。 java验证码: 1 根据一个随机值,生成一个模糊图片,然后将随机值封装到session中。 1.1 生成图片的类: package com.framework.security; import java.awt.*; import java.awt.image.BufferedImage; import java.io.Serializable; import java.util.Random; /** *随机验证码 *User: *Date:2006-11-2 *Time:11:31:00 *To change this template use File|Settings|File Templates. */ public class ImgCheckCode implements Serializable { private String charRandomCode = ""; private BufferedImage imageRandomCode; private int width; private int height; public ImgCheckCode(int width, int height) { this.width = width; this.height = height; create(4); } public ImgCheckCode(int width, int height, int length) { this.width = width; this.height = height;

javaWeb实现验证码

java web中验证码的实现 分类:JavaWeb编程2012-05-05 14:37 473人阅读评论(0) 收藏举报下面就利用Servlet +JSP+JavaBran实现一个验证码机制。 BufferedImage 可以操作缓冲区的内部Image,可以被ImageIO输出到输出流中,我们就是利用PrintWriter可以想浏览器输出信息的原理我们输出Image图片。 1、产生验证码的类MakePicture [java]view plaincopyprint? 1.package me.test; 2.import java.awt.Graphics; 3.import java.awt.Font; 4.import java.awt.Color; 5.import java.awt.image.BufferedImage; 6.import javax.imageio.ImageIO; 7.import java.util.Random; 8.import java.io.OutputStream; 9.import java.io.IOException; 10.public class MakePicture //产生识别验证图像 11.{ 12. private char charTable[]={ 13. 'a','A','b','B','c','C','d','D' ,'e','E' , 14. 'f','F','g','G','h','H','i','I','j','J' , 15. '0','1','2','3','4','5','6','7','8','9' 16. }; 17. public String drawPicture(int width,int height,OutputStream os) 18. { 19. if(width<=0) 20. width=100 ; 21. if(height<=0)

JS实现验证码

import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; 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 ImgServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1:声明图片大小 int width = 60; int height = 25; // 2:生成内存中的图片 BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 3:获取画笔 Graphics g = img.getGraphics(); g.setColor(new Color(226, 239, 247)); // 4:画背景 g.fillRect(0, 0, width, height); // 5:设置字体、大小 g.setFont(new Font("宋体", Font.BOLD, 18)); // 6:生成四个数 String sCode = ""; Random r = new Random(); for (int i = 0; i < 4; i++) { int a = r.nextInt(10); // 写出这个数 Color c = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)); g.setColor(c); g.drawString("" + a, i * 15, 24); sCode += a; } // 放到session中 request.getSession().setAttribute("scode", sCode);

Java版CRC16-ModBus校验码

package com.crc16.test; publicclass CRC16M { //定义常量 privatestaticfinal String HEXES = "0123456789ABCDEF"; privatebyte uchCRCHi = (byte) 0xFF; privatebyte uchCRCLo = (byte) 0xFF; privatestaticbyte[] auchCRCHi = { 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00,

NET和JAVA实现MOD37 36校验码计算

按照 MOD3736规则计算校验码: .NET版本: ///

/// 计算标识校验码 /// /// 标识码前段 /// private static string GetCertificateSourceIdCode(string ValueCode) { string Code = ValueCode.Replace("." string.Empty).ToUpper(); Dictionary dict = new Dictionary(); dict.Add("0" 0); dict.Add("1" 1); dict.Add("2" 2); dict.Add("3" 3); dict.Add("4" 4); dict.Add("5" 5); dict.Add("6" 6); dict.Add("7" 7); dict.Add("8" 8); dict.Add("9" 9); dict.Add("A" 10); dict.Add("B" 11); dict.Add("C" 12); dict.Add("D" 13); dict.Add("E" 14); dict.Add("F" 15); dict.Add("G" 16); dict.Add("H" 17); dict.Add("I" 18); dict.Add("J" 19); dict.Add("K" 20); dict.Add("L" 21); dict.Add("M" 22); dict.Add("N" 23); dict.Add("O" 24); dict.Add("P" 25); dict.Add("Q" 26); dict.Add("R" 27); dict.Add("S" 28); dict.Add("T" 29); dict.Add("U" 30); dict.Add("V" 31); dict.Add("W" 32); dict.Add("X" 33); dict.Add("Y" 34); dict.Add("Z" 35);

JAVA 写EAN 13商品校验码的算法

源代码如下: package zuoye3; import java.util.Scanner; import java.util.Random; /**商品校验码的算法 *ean-13条码算法 *前12位的奇数位的和c1 *前12位的偶数位的和c2 *将奇数和跟偶数和的三倍相加 *取结果的个位数,对十取余(如果个位数是0,那么校验码不是10,而是0)*@author6911989108806 * */ public class Ean13Check{ public static void main(String[]args){ Scanner console=new Scanner(System.in); System.out.println("请输入商品条码:"); String code=console.nextLine(); int c1=0; int c2=0; for(int i=0;i<12;i+=2){ char c=code.charAt(i);//字符串code中第i个位置上的字符 int n=c-'0'; c1+=n;//累加奇数位的数字和 } for(int i=1;i<12;i+=2){ char c=code.charAt(i);//字符串code中第i个位置上的字符 int n=c-'0'; c2+=n;//累加偶数位的数字和 } int cc=c1+c2*3; int check=cc%10; check=(10-cc%10)%10; if(check==code.charAt(12)-'0'){ System.out.println("校验码是:"+check+"行货!"); }else{

生成随机的5位登录验证码

生成随机的5位登录验证码 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; static String code=""; publicclass checkService { publicvoid checkCode(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ //绘制画布 BufferedImage bf=new BufferedImage(80,30,BufferedImage.TYPE_INT_BGR); //获得画笔 Graphics g=bf.getGraphics(); //给画笔设置颜色 g.setColor(new Color(255,255,255)); //填充背景色 g.fillRect(0, 0, 80, 30); //随机获得前景色 Random r=new Random(); g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255))); //设置字体 Font f=new Font("",Font.BOLD,22); //获得字体 g.setFont(f); //以当前颜色和字体绘制干扰线 checkService.code=checkService.getstr(); g.drawString(checkService.code,10,25); for(int i=0;i<10;i++){ g.drawLine(r.nextInt(80), r.nextInt(30), r.nextInt(80), r.nextInt(30));

基于JAVA的语音播报验证码api调用代码实例

基于JA V A的语音播报验证码api调用代码实例 代码描述:基于JA V A的语音播报验证码api调用代码实例 代码平台:聚合数据 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import https://www.wendangku.net/doc/c810060903.html,.HttpURLConnection; import https://www.wendangku.net/doc/c810060903.html,.URL; import https://www.wendangku.net/doc/c810060903.html,.URLEncoder; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; /** *语音验证码调用示例代码-聚合数据 *在线接口文档:https://www.wendangku.net/doc/c810060903.html,/docs/61 **/ public class JuheDemo { public static final String DEF_CHATSET = "UTF-8"; public static final int DEF_CONN_TIMEOUT = 30000; public static final int DEF_READ_TIMEOUT = 30000; public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) Appl eWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; //配置您申请的KEY public static final String APPKEY ="*************************"; //1.发送语音验证码 public static void getRequest1(){ String result =null; String url ="https://www.wendangku.net/doc/c810060903.html,/yuntongxun/voice";//请求接口地址 Map params = new HashMap();//请求参数 params.put("valicode","");//验证码内容,字母、数字 4-8位 params.put("to","");//接收手机号码 params.put("playtimes","");//验证码播放次数,默认3

GUI界面java验证码代码

package com.modle; import java.awt.Button; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import https://www.wendangku.net/doc/c810060903.html,bel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Random; import javax.swing.JOptionPane; public class YanModel extends Frame{ Button bt = new Button("核对"); TextField tf = new TextField(); Label lb = new Label(); Label lbRefresh = new Label("看不清"); public void lunchFrame(){ this.setBounds(0, 0, 250, 200); this.setLayout(null); this.add(tf); tf.setBounds(20, 50, 100, 50); this.add(lb); lb.setBounds(130, 50, 50, 50); lb.setText(makeYanZhengMa()); lb.setBackground(new Color(0).YELLOW); this.add(lbRefresh); lbRefresh.setFont(new Font("楷体 ",Font.HANGING_BASELINE,12)); lbRefresh.setForeground(new Color(0).BLUE); lbRefresh.setBounds(190, 50, 50, 50); lbRefresh.addMouseListener(new MouseAdapter(){ //刷新验证码 @Override public void mouseClicked(MouseEvent e) { lb.setText(makeYanZhengMa()); } }); this.add(bt); bt.setBounds(100, 120, 30, 30); bt.addActionListener(new ActionListener(){

验证码生成器

packagecom.lizhou.tools; importjava.awt.Color; importjava.awt.Font; importjava.awt.Graphics; import java.awt.Graphics2D; importjava.awt.image.BufferedImage; importjava.util.Random; /** * 验证码生成器 * * @author bojiangzhou */ public class VCodeGenerator { /** * 验证码来源 */ final private char[] code = { '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; /** * 字体 */ final private String[] fontNames = new String[]{ "黑体", "宋体", "Courier", "Arial", "Verdana", "Times", "Tahoma", "Georgia"}; /** * 字体样式 */ final private int[] fontStyles = new int[]{ Font.BOLD, Font.ITALIC|Font.BOLD }; /** * 验证码长度 * 默认4个字符 */

实验1_验证码的Java实现

南昌航空大学实验报告 2015年月日 课程名称:信息安全概论实验名称:验证码的Java实现 学号:姓名: 指导老师评定:签名: 一、实验目的 通过实验了解验证码的原理,掌握Java语言验证码的实现。 二、实验原理 1.验证码的定义 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。 2.验证码的作用: 可以防止恶意破解密码、刷票、论坛灌水,有效防止黑客对注册用户用特定程序暴力破解方式进行不断地登录尝试,实际上用验证码是现在很多网站通行的方式。利用比较简易的方式实现这个功能,虽然登录麻烦一点,但是对用户的密码安全来说这个功能还是很有必要,也很重要。 3.验证码的使用 大多数网站的验证码都是需要点击一下填写框,然后会自动弹出验证码图片。由于验证码是随机产生的,有很大几率会出现无法清楚识别的验证码图片,所以需要注意的是,一般网站都会有相应的提示,如“看不清,换一张”等,如果没有提示,则直接点击当前的验证码图片,可以完成验证码的更换。(1)登录时使用:防止暴力破解密码 (2)注册时使用:防止自动批量注册 (3)发帖时使用:防止自动灌水、发广告 三、实验环境 开发工具:JDK、Eclipse 参考资料:JDK API文档 java.awt包 java.awt.event包 javax.swing包

JAVA编写最简单的登录验证码

使用JAVA的awt包可以提供创建和修改图像的各种类。使用流框架来处理图像,该框架涉及图像生产者、可选的图像过滤器和图像使用者。 有了强大的awt包就可以做一个简单的登录验证码了,先看一下效果图: 废话不多说 其实登录验证码他不是一个固定的图片,他只是一个java代码向jsp页面输出的图片流而已。 首先需要在登录页面使用标签,在src中链接到编程好的jsp页面。 其中这个jsp页面是最重要的,以下是代码 Jsp代码 1<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2<%@ page language="java" import="java.awt.image.*"%> 3<%@ page language="java" import="java.awt.*"%> 4<%@ page language="java" import="javax.imageio.*"%> 5 6<% 7 //创建一个图像缓冲区对象相当于一张纸参数分别为宽、高、 图像类型 8 BufferedImage bi = new BufferedImage(60, 20,BufferedImage.TYPE_USHORT_555_RGB); 9 //得到制图对象相当于你得到了一支笔 10 Graphics g = bi.getGraphics(); 11 //设置上下文颜色相当于背景颜色 12 g.setColor(Color.GREEN); 13 //进行填充 x、y、width、height 14 g.fillRect(0, 0, 60, 20);

java+js实现验证码

我们经常在登陆一些网站的时候,要求输入显示的验证码,而且验证码是以图片形式提供,这是怎么实现的?HOHO,我也来实现一个。有兴趣的看看,也算做自己的笔记。 你可能也猜想过验证码的图片不至于是预先做好了放在某个文件夹里的吧?NO,NO,试想,真的如此做的话,如果是4位验证码,并且字母数字混杂的话,这样的工作量美工肯定不接受:)所以,唯一的解释就是这些图片都是程序生成的。也就是程序“画”出来的!如何画?请看一段代码: int width=40, height=20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); //以下填充背景颜色 g.setColor(Color.decode("#66CCCF")); g.fillRect(0, 0, width, height); g.setColor(Color.decode("#01556B")); g.drawString(req.getParameter("yzm"),5,15); g.dispose(); 这段代码摘自我要举的例子。我想玩过applet和swing的朋友应该不难理解。我们把页面传过来的(req.getParameter("yzm")“画”在一个40,20大小的矩形框内。这段代码当然要放一个servlet里面,这个servlet就是来负责画图的: import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.*; import javax.servlet.ServletContext; import java.io.OutputStream; import java.awt.*; import java.awt.image.*; import com.sun.image.codec.jpeg.*; /** * @version 1.0 * @author dennis */ public class Getshowimg extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse resp)

图片验证码生成Servlet源代码

图片验证码生成: 摆渡恋人 Web.xml文件配置: This is the description of my J2EE component This is the display name of my J2EE component ImageCheckServlet check.servlet.ImageCheckServlet width 800 height 400 codeCount 4 ImageCheckServlet /servlet/ImageCheckServlet Package check.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO;

相关文档