注册验证码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