不知道你問的是不是生成這種圖片驗(yàn)證碼?如果只要一個隨機(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();
輪臺網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),輪臺網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為輪臺上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的輪臺做網(wǎng)站的公司定做!
下面簡單的介紹他們的功能和用途,執(zhí)行效率等。每個都有各自的優(yōu)缺點(diǎn)看你是做甚什么方面的研究開發(fā)用。.net,是網(wǎng)站編程,現(xiàn)在很多都用這個,但是這個語言編程都有統(tǒng)一思路,很好掌握。窒息那個效率不是很高;php 支持跨平臺,很容易學(xué)會,執(zhí)行的效率很高;asp是ASP.net的前身,它比較穩(wěn)定,比.net要弱一點(diǎn)。但是比.net好學(xué)。jsp 是網(wǎng)頁編程,這個學(xué)習(xí)大約一周就能搞定,不過這個得多實(shí)踐,不然的話,時(shí)間長了,就容易忘記。
我自己做的系統(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
//題主估計(jì)想問產(chǎn)生一個四個不同數(shù)字的四位數(shù)//
//首先千位不為0
String number=String.valueOf((int)(Math.random()*9+1));
//再產(chǎn)生其它三位數(shù)
for(int i=0;i=2;){
String newnumber=String.valueOf((int)(Math.random()*9));
if(!number.contains(newnumber)){
number=number+newnumber;
i++;
}
}
System.out.println(number);
可以借助Math類里的random方法或者借助Random類來實(shí)現(xiàn)
1、使用Math類的random方法實(shí)現(xiàn)產(chǎn)生1000-9999的隨機(jī)數(shù)代碼如下:
int a = (int)(Math.random()*(9999-1000+1))+1000;//產(chǎn)生1000-9999的隨機(jī)數(shù)
2、使用Random類實(shí)現(xiàn)代碼:
import java.util.Random;//導(dǎo)入Random包
public class Ranadd {
public static void main(String[] args) {
int x;//定義兩變量
Random ne=new Random();//實(shí)例化一個random的對象ne
x=ne.nextInt(9999-1000+1)+1000;//為變量賦隨機(jī)值1000-9999
System.out.println("產(chǎn)生的隨機(jī)數(shù)是:"+x);//輸出
}
}
Math.random()產(chǎn)生一個0到1的浮點(diǎn)數(shù)(小數(shù))\x0d\x0a四位數(shù),1000到9999,所以\x0d\x0a(int)(Math.random()*9000+1000)\x0d\x0a這樣,最小是0*9000+1000是1000\x0d\x0a因?yàn)镸ath.random()不可能為1,所以最大數(shù)小于1*9000+1000=10000