手機(jī)驗(yàn)證碼java代碼 手機(jī)驗(yàn)證碼java代碼是多少

用java怎么制作驗(yàn)證碼

原理:

創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開發(fā),軟件開發(fā),小程序開發(fā),10余年建站對(duì)PE包裝袋等多個(gè)行業(yè),擁有豐富的網(wǎng)站制作經(jīng)驗(yàn)。

1.隨機(jī)生成4個(gè)數(shù)字 用到了Random類

2.對(duì)這4個(gè)數(shù)字設(shè)置字體格式 用 setFont方法

3.改變字體顏色用setColor 然后隨機(jī)生成顏色

代碼如下

package s1;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Random;

import javax.imageio.ImageIO;

import javax.jms.Session;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class GetImage extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 發(fā)送圖片不能夠添加這2行代碼

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

// request.setCharacterEncoding("UTF-8");

int width=100;

int height=50;

//獲得一張圖片

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

Graphics g=image.getGraphics();

g.setColor(Color.WHITE);

g.fillRect(1, 1, width-2, height-2);

g.setFont(new Font("宋體",Font.BOLD,30));

Random random=new Random();

// 填充的字符串

String str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

//緩存生成的驗(yàn)證碼

StringBuffer stringbuffer=new StringBuffer();

//隨機(jī)生成驗(yàn)證碼的顏色和字符

for(int i=0;i4;i++)

{ //設(shè)置隨機(jī)顏色

g.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)));

int index=random.nextInt(62);//這里的62就是從填充字符段中隨意選取一個(gè)位置

String str1=str.substring(index,index+1);

g.drawString(str1, 20*i, 30);//x,y數(shù)值設(shè)置太小會(huì)顯示不出來

stringbuffer.append(str1);

}

//將生成的驗(yàn)證碼存到服務(wù)器

request.getSession().setAttribute("checkcode", stringbuffer.toString());//key和value

//將圖片發(fā)送給瀏覽器

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

}

}

用戶登錄界面代碼

package s1;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class Login extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");// 設(shè)置服務(wù)器發(fā)送給瀏覽器的編碼方式

request.setCharacterEncoding("UTF-8"); // 客戶端向服務(wù)器提交的數(shù)據(jù)的解碼方式

// 獲得用戶提交的數(shù)據(jù)

String checkcode = request.getParameter("checkcode");

System.out.println(checkcode);

// 判斷輸入的驗(yàn)證碼是不是符合

HttpSession session = request.getSession();// session是存放數(shù)據(jù)的地方

String str = (String) session.getAttribute("checkcode");

if (str != null) {

if (checkcode.compareToIgnoreCase(str) == 0) // 驗(yàn)證碼忽略大小寫

response.getWriter().println("驗(yàn)證碼輸入正確");

else

response.getWriter().println("驗(yàn)證碼輸入錯(cuò)誤");

}

else response.getWriter().println("驗(yàn)證碼失效");

// 使用完的驗(yàn)證碼信息要?jiǎng)h除,返回原頁面再輸一次,驗(yàn)證碼就失效了

session.removeAttribute("checkcode");

}

}

怎么用Java代碼實(shí)現(xiàn)一個(gè)驗(yàn)證碼,求具體實(shí)現(xiàn)方法

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?{

//?驗(yàn)證碼字符集

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

//?字符數(shù)量

private?static?final?int?SIZE?=?4;

//?干擾線數(shù)量

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;

/**

*?生成隨機(jī)驗(yàn)證碼及圖片

*?返回的數(shù)組中,第1個(gè)值是驗(yàn)證碼,第2個(gè)值是圖片

*/

public?static?Object[]?createImage()?{

StringBuffer?sb?=?new?StringBuffer();

//?1.創(chuàng)建空白圖片

BufferedImage?image?=?new?BufferedImage(

WIDTH,?HEIGHT,?BufferedImage.TYPE_INT_RGB);

//?2.獲取圖片畫筆

Graphics?graphic?=?image.getGraphics();

//?3.設(shè)置畫筆顏色

graphic.setColor(Color.LIGHT_GRAY);

//?4.繪制矩形背景

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

//?5.畫隨機(jī)字符

Random?ran?=?new?Random();

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

//?取隨機(jī)字符索引

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

//?設(shè)置隨機(jī)顏色

graphic.setColor(getRandomColor());

//?設(shè)置字體大小

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++)?{

//?設(shè)置隨機(jī)顏色

graphic.setColor(getRandomColor());

//?隨機(jī)畫線

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

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

}

//?7.返回驗(yàn)證碼和圖片

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

}

/**

*?隨機(jī)取色

*/

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代碼段生成四位數(shù)字加字母的驗(yàn)證碼?

不知道你問的是不是生成這種圖片驗(yàn)證碼?如果只要一個(gè)隨機(jī)四位數(shù) 那這行代碼就夠了(new Random().nextInt(9000) + 1000;),如果是生成頁面圖片驗(yàn)證碼就是下面的了: //設(shè)定 響應(yīng)模式 resp.setContentType("image/jpeg"); // 生成令牌環(huán)數(shù)據(jù); Integer token = new Random().nextInt(9000) + 1000; // 保存令牌環(huán)數(shù)據(jù)到session中 req.getSession().setAttribute(IMAGE_TOKEN_NAME, token); // 生成令牌環(huán)圖片 ServletOutputStream out = resp.getOutputStream(); BufferedImage img = new BufferedImage(60, 20, BufferedImage.TYPE_INT_RGB); Graphics g = img.getGraphics(); g.setColor(Color.YELLOW); g.fillRect(0, 0, img.getWidth(), img.getHeight()); g.setColor(Color.BLUE); g.setFont(new Font("", Font.BOLD, 18)); g.drawString(String.valueOf(token), 10, 16); ImageIO.write(img, "jpg", out); out.close();

下面簡(jiǎn)單的介紹他們的功能和用途,執(zhí)行效率等。每個(gè)都有各自的優(yōu)缺點(diǎn)看你是做甚什么方面的研究開發(fā)用。.net,是網(wǎng)站編程,現(xiàn)在很多都用這個(gè),但是這個(gè)語言編程都有統(tǒng)一思路,很好掌握。窒息那個(gè)效率不是很高;php 支持跨平臺(tái),很容易學(xué)會(huì),執(zhí)行的效率很高;asp是ASP.net的前身,它比較穩(wěn)定,比.net要弱一點(diǎn)。但是比.net好學(xué)。jsp 是網(wǎng)頁編程,這個(gè)學(xué)習(xí)大約一周就能搞定,不過這個(gè)得多實(shí)踐,不然的話,時(shí)間長(zhǎng)了,就容易忘記。

我自己做的系統(tǒng)里面用作驗(yàn)證碼的JSP的%@page contentType="image/jpeg;charset=utf-8"%%@page import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" %%@ page import="java.io.OutputStream" %html body %! Color getRandColor(int fc,int bc) { Random rd=new Random(); if(fc255) fc=255; if(bc255) bc=255; int red=fc+rd.nextInt(bc-fc); int green=fc+rd.nextInt(bc-fc); int blue=fc+rd.nextInt(bc-fc); return new Color(red,green,blue); } % % Random r=new Random(); response.addHeader("Pragma","No-cache"); response.addHeader("Cache-Control","no-cache"); response.addDateHeader("expires",0); int width=90; int height=23; BufferedImage pic=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics gc=pic.getGraphics(); gc.setColor(getRandColor(200,250)); gc.fillRect(0,0,width,height); String[] rNum ={"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"}; int[] style = {Font.PLAIN,Font.BOLD,Font.ITALIC,Font.PLAIN+Font.BOLD, Font.BOLD+Font.ITALIC,Font.PLAIN+Font.ITALIC,Font.PLAIN+Font.BOLD+Font.ITALIC}; gc.setColor(Color.WHITE); gc.drawLine(0,30,90,10); gc.setColor(getRandColor(160,200)); for (int i=0;i50;i++) { int x = r.nextInt(width); int y = r.nextInt(height); int xl = r.nextInt(10); int yl = r.nextInt(10); gc.drawLine(x,y,x+xl,y+yl); } gc.setColor(getRandColor(60,150)); String rt = ""; for(int i=0;i4;i++){ String temp = rNum[r.nextInt(62)]; rt = rt+temp; gc.setFont(new Font("Times New Roman",style[r.nextInt(7)],15)); gc.drawString(temp,5+i*15+r.nextInt(10),10+r.nextInt(10)); } gc.dispose(); session.setAttribute("randNum",rt); OutputStream os=response.getOutputStream(); ImageIO.write(pic,"JPEG",os); System.out.println("當(dāng)前驗(yàn)證碼為:"+session.getAttribute("randNum")); os.flush(); os.close(); os=null; response.flushBuffer(); out.clear(); out = pageContext.pushBody(); % /body/html

驗(yàn)證碼部分的java代碼怎么寫

package com.bbs.servlet;

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.io.PrintWriter;

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;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class Image extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("image/jpeg");

OutputStream out = response.getOutputStream();

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

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

response.setDateHeader("Expires", 0);

int width = 60, height = 20;

BufferedImage image = new BufferedImage(width, height,

BufferedImage.TYPE_INT_RGB);

// 獲取圖形上下文

Graphics g = image.getGraphics();

// 生成隨機(jī)類

Random random = new Random();

// 設(shè)定背景色

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

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

// 設(shè)定字體

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

// 隨機(jī)產(chǎn)生155條干擾線,使圖象中的認(rèn)證碼不易被其它程序探測(cè)到

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

for (int i = 0; i 155; 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);

}

// 取隨機(jī)產(chǎn)生的認(rèn)證碼(4位數(shù)字)

String sRand =setRandValue(request);

if(sRand!=null)

for (int i = 0; i sRand.length(); i++) {

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

.nextInt(200), 20 + random.nextInt(200)));

// 調(diào)用函數(shù)出來的顏色相同,可能是因?yàn)榉N子太接近,所以只能直接生成

g.drawString(sRand.charAt(i) + "", 13 * i + 6, 16);

}

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

// 圖象生效

g.dispose();

// 輸出圖象到頁面

// ImageIO.write(image, "JPG", response.getOutputStream());

out.flush();

out.close();

}

Color getRandColor(int fc, int bc) {// 給定范圍獲得隨機(jī)顏色

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);

}

//48-57對(duì)應(yīng)0-9;65-90對(duì)應(yīng)A-Z;97-122對(duì)應(yīng)a-z;

String setRandValue(HttpServletRequest request) {

Random random = new Random();

String sRand = "";

//這里是生成驗(yàn)證碼的位數(shù)

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

char c = 0;

int k = random.nextInt(3);

switch (k) {

case 0:

c = (char) (random.nextInt(10) + 48);

break;

case 1:

c = (char) (random.nextInt(26) + 65);

break;

case 2:

c = (char) (random.nextInt(26) + 97);

}

sRand += c;

}

request.getSession().setAttribute("rands", sRand);

return sRand;

}

}

手機(jī)短信驗(yàn)證碼java接口怎么寫

這個(gè)首先你要確定一下短信平臺(tái),他們會(huì)給你提供短信實(shí)現(xiàn)的接口文檔。

比如:

public static String doPost(String reqUrl, Map parameters, String recvEncoding)

{

HttpURLConnection url_con = null;

String responseContent = null;

try

{

StringBuffer params = new StringBuffer();

Iterator iter = parameters.entrySet().iterator();

while (iter

.hasNext())

{

Map.Entry element = (Map.Entry)iter.next();

params.append(element.getKey().toString());

params.append("=");

params.append(URLEncoder.encode(element.getValue().toString(),

requestEncoding));

params.append("");

}

if (params.length() 0)

{

params = params.deleteCharAt(params.length() - 1);

}

URL url = new URL(reqUrl);

url_con = (HttpURLConnection)url.openConnection();

url_con.setRequestMethod("POST");

System.setProperty("sun.net.client.defaultConnectTimeout",

String.valueOf(connectTimeOut));

System.setProperty("sun.net.client.defaultReadTimeout",

String.valueOf(readTimeOut));

url_con.setDoOutput(true);

byte[] b = params.toString().getBytes();

url_con.getOutputStream().write(b, 0, b.length);

url_con.getOutputStream().flush();

url_con.getOutputStream().close();

InputStream in = url_con.getInputStream();

BufferedReader rd = new BufferedReader(

new InputStreamReader(in,

recvEncoding));

String tempLine = rd.readLine();

StringBuffer tempStr = new StringBuffer();

String crlf = System.getProperty("line.separator");

while (tempLine != null)

{

tempStr.append(tempLine);

tempStr.append(crlf);

tempLine = rd.readLine();

}

responseContent = tempStr.toString();

rd.close();

in.close();

}

catch (IOException localIOException)

{

}

finally

{

if (url_con != null)

{

url_con.disconnect();

}

}

return responseContent;

}

public static String sendTelCode(String mobile,String telcode){

MapString ,String map = new HashMapString ,String();

map.put("account", "Babo");

map.put("mobile", mobile);

map.put("pswd", "D3dddD");

try {

map.put("msg", java.net.URLEncoder.encode("您的驗(yàn)證碼是"+telcode+",若非本人操作請(qǐng)忽略","utf-8"));

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

String getValue = doPost("", map, "UTF-8");

System.out.println(getValue);

return getValue;

}

分享名稱:手機(jī)驗(yàn)證碼java代碼 手機(jī)驗(yàn)證碼java代碼是多少
文章分享:http://muchs.cn/article46/dodhheg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、云服務(wù)器、網(wǎng)站收錄、軟件開發(fā)、App設(shè)計(jì)、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)