java获取验证码源代码 java验证码

java模拟登陆js动态生成的验证码怎么获取

登录页面login.jsp示例代码:

成都创新互联公司专注于洱源网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供洱源营销型网站建设,洱源网站制作、洱源网页设计、洱源网站官网定制、微信小程序服务,打造洱源网络公司原创品牌,更为您提供洱源网站排名全网营销落地服务。

%@ page language="java" import="java.util.*" pageEncoding="utf-8"%

%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

html

head

base href="%=basePath%"

titleMy JSP 'login.jsp' starting page/title

meta http-equiv="pragma" content="no-cache"

meta http-equiv="cache-control" content="no-cache"

meta http-equiv="expires" content="0"

meta http-equiv="keywords" content="keyword1,keyword2,keyword3"

meta http-equiv="description" content="This is my page"

!--

link rel="stylesheet" type="text/css" href="styles.css"

--

/head

%

String incode = (String)request.getParameter("code");

String rightcode = (String)session.getAttribute("rCode");

if(incode != null rightcode != null){

if(incode.equals(rightcode)){

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

}else{

out.println("验证码输入不正确,请重新输入!");

}

}

%

body

form action="login.jsp" method="post"

用户名:

input type="text" name="username"/br/

密码:

input type="password" name="password"/br/

验证码:

img src="number.jsp"/

input type="text" name="code"/

input type="submit" value="登录"/

/form

/body

/html

验证码页面number.jsp代码:

%@ page contentType="image/jpeg" language="java" import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" pageEncoding="utf-8"%

%!

Color getRandColor(int fc,int bc){

Random random = new Random();

if(fc 255){

fc = 255;

}

if(bc 255){

bc = 255;

}

int r = fc +random.nextInt(bc-fc);

int g = fc +random.nextInt(bc-fc);

int b = fc +random.nextInt(bc-fc);

return new Color(r,g,b);

}

%

%

//设置页面不缓存

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

response.setHeader("Cache-Control","no-catch");

response.setDateHeader("Expires",0);

//在内存中创建图象

int width = 60;

int height = 20;

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

//创建图象

Graphics g = image.getGraphics();

//生成随机对象

Random random = new Random();

//设置背景色

g.setColor(getRandColor(200,250));

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

//设置字体

g.setFont(new Font("Tines Nev Roman",Font.PLAIN,18));

//随机产生干扰线

g.setColor(getRandColor(160,200));

for(int i = 0; i 255; i++){

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(12);

int yl = random.nextInt(12);

}

//随机产生认证码,4位数字

String sRand = "";

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

String rand = String.valueOf(random.nextInt(10));

sRand += rand;

//将认证码显示到图象中

g.setColor(new Color(20 + random.nextInt(110),20 + random.nextInt(110),20 + random.nextInt(110)));

g.drawString(rand,13*i+6,16);

}

session.setAttribute("rCode",sRand);

//图像生效

g.dispose();

//输出图像到页面

ImageIO.write(image,"JPEG",response.getOutputStream());

out.clear();

out = pageContext.pushBody();

%

怎么用Java代码实现一个验证码,求具体实现方法

package util;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.util.Random;

import javax.imageio.ImageIO;

public final class ImageUtil {

// 验证码字符集

private static final char[] chars = { 

'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 

'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', 

'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'};

// 字符数量

private static final int SIZE = 4;

// 干扰线数量

private static final int LINES = 5;

// 宽度

private static final int WIDTH = 80;

// 高度

private static final int HEIGHT = 40;

// 字体大小

private static final int FONT_SIZE = 30;

/**

* 生成随机验证码及图片

* 返回的数组中,第1个值是验证码,第2个值是图片

*/

public static Object[] createImage() {

StringBuffer sb = new StringBuffer();

// 1.创建空白图片

BufferedImage image = new BufferedImage(

WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);

// 2.获取图片画笔

Graphics graphic = image.getGraphics();

// 3.设置画笔颜色

graphic.setColor(Color.LIGHT_GRAY);

// 4.绘制矩形背景

graphic.fillRect(0, 0, WIDTH, HEIGHT);

// 5.画随机字符

Random ran = new Random();

for (int i = 0; i SIZE; i++) {

// 取随机字符索引

int n = ran.nextInt(chars.length);

// 设置随机颜色

graphic.setColor(getRandomColor());

// 设置字体大小

graphic.setFont(new Font(

null, Font.BOLD + Font.ITALIC, FONT_SIZE));

// 画字符

graphic.drawString(

chars[n] + "", i * WIDTH / SIZE, HEIGHT / 2);

// 记录字符

sb.append(chars[n]);

}

// 6.画干扰线

for (int i = 0; i  LINES; i++) {

// 设置随机颜色

graphic.setColor(getRandomColor());

// 随机画线

graphic.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT),

ran.nextInt(WIDTH), ran.nextInt(HEIGHT));

}

// 7.返回验证码和图片

return new Object[]{sb.toString(), image};

}

/**

* 随机取色

*/

public static Color getRandomColor() {

Random ran = new Random();

Color color = new Color(ran.nextInt(256), 

ran.nextInt(256), ran.nextInt(256));

return color;

}

public static void main(String[] args) throws IOException {

Object[] objs = createImage();

BufferedImage image = (BufferedImage) objs[1];

OutputStream os = new FileOutputStream("d:/1.png");

ImageIO.write(image, "jpeg", os);

os.close();

}

}

怎么样通过java代码得到页面上的验证码

具体的倒没做过,不过原理应该差不多,不过不会简单,一句两句是将不清楚的,呵呵

基本原理是这样的,这个图片在IE的缓存文件夹Local Settings\Temporary Internet Files中一定会有一个对应的固定名称的图片,每次这个图片文件名称是一样的,只是里面的内容不一样,你可以找一下看看,呵呵,下面就简单了吧,不过,前提是这个页面你要在浏览器加载过,这样才能形成缓存文件。

你点这些分,我就说这么多了~

===================================================

呵呵,你这个不好解决,是不是想搞自动注册呢?

人家验证码明显是不会在客户端产生的,这个是保存在服务端的,那你如何得到呢?客户端得到的只是一个图片而已,方法也有,就是你把这个图片得到,动态解析,从这个图片的解析中获取它所表示的内容,这个难度有点大的,图片解析难度比较高的,如果再加一些干扰,呵呵,基本能解出来的不是高手也差不多了。

所以,你的这个问题本身比较难实现,验证码使用的目的就是为了防止自动注册,而且这个注册码本身是不会传递到客户端的,所以,你要获取的可能性很小。

用java实现:随机获取4位的验证码

验证码是指网页的验证码还是手机的验证码

下面是随机生成四位数的相关代码

import java.util.Random;

public class RandomTest {

public static void main(String[] args) {

System.out.println("Math.random得到小数");

System.out.println(Math.round(Math.random() * 10000));

System.out.println("Random");

System.out.println(new Random().nextInt(9999));

System.out.println("字符串前面补0的话就这样String.format");

System.out.println(String.format("%04d",new Random().nextInt(9999)));

}

}


网站名称:java获取验证码源代码 java验证码
URL分享:http://ybzwz.com/article/docoego.html