注册验证码java代码 Java生成验证码

发web网站中注册页面发送手机短信验证码功能的java代码实现

说个流程吧

我们提供的服务有:网站设计、网站建设、微信公众号开发、网站优化、网站认证、双峰ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的双峰网站制作公司

1.去移动或者电信申请一个web接口

2.客户填写请求输入手机号码提交

3.调申请的接口吧(注意给个对方(电信或者移动)的回调地址吧)

4.从回调地址里拿客户输入的数据了,判断数据了

5.返回数据给客户了

纯属个人理解

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

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

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

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

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

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

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

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

求一个Java语言编写的gif动态验证码 就是百度注册用户的那种

你好,

Servlet类:

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class ImageServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("image/gif");//设置相应类型,告诉浏览器输出的内容为图片

response.setHeader("Pragma", "No-cache");//设置响应头信息,告诉浏览器不要缓存此内容

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

response.setDateHeader("Expire", 0);

RandomValidateCode randomValidateCode = new RandomValidateCode();

try {

randomValidateCode.getRandcode(request, response);//输出图片方法

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

生成图片的类:

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.util.Random;

import javax.imageio.ImageIO;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class RandomValidateCode {

public static final String RANDOMCODEKEY = "RANDOMVALIDATECODEKEY";//放到session中的key

private Random random = new Random();

private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//随机产生的字符串

private int width = 80;//图片宽

private int height = 26;//图片高

private int lineSize = 25;//干扰线数量

private int stringNum = 4;//随机产生字符数量

/**

* 生成随机图片

*/

public void getRandcode(HttpServletRequest request,

HttpServletResponse response) {

HttpSession session = request.getSession();

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

Graphics g = image.getGraphics();

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

g.setFont(new Font("Times New Roman",Font.ROMAN_BASELINE,18));

g.setColor(getRandColor(180, 233));

//绘制干扰线

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

drowLine(g);

}

//绘制随机字符

String randomString = "";

for(int i=1;i=stringNum;i++){

randomString=drowString(g,randomString,i);

}

session.removeAttribute(RANDOMCODEKEY);

session.setAttribute(RANDOMCODEKEY, randomString);

g.dispose();

try {

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

} catch (Exception e) {

e.printStackTrace();

}

}

// ------------- private methods -------------

/*

* 获得字体

*/

private Font getFont(){

return new Font("Fixedsys",Font.CENTER_BASELINE,18);

}

/*

* 获得颜色

*/

private Color getRandColor(int fc,int bc){

if(fc  255)

fc = 255;

if(bc  255)

bc = 255;

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

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

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

return new Color(r,g,b);

}

/*

* 绘制字符串

*/

private String drowString(Graphics g,String randomString,int i){

g.setFont(getFont());

g.setColor(new Color(random.nextInt(101),random.nextInt(111),random.nextInt(121)));

String rand = String.valueOf(getRandomString(random.nextInt(randString.length())));

randomString +=rand;

g.translate(random.nextInt(3), random.nextInt(3));

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

return randomString;

}

/*

* 绘制干扰线

*/

private void drowLine(Graphics g){

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(13);

int yl = random.nextInt(15);

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

}

/*

* 获取随机的字符

*/

private String getRandomString(int num){

return String.valueOf(randString.charAt(num));

}

}


新闻名称:注册验证码java代码 Java生成验证码
URL分享:http://abwzjs.com/article/hhsjdo.html