欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

驗證碼生成java代碼 驗證碼識別java

用java怎么制作驗證碼

原理:

創(chuàng)新互聯(lián)服務緊隨時代發(fā)展步伐,進行技術(shù)革新和技術(shù)進步,經(jīng)過10年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設計師、專業(yè)的網(wǎng)站實施團隊以及高素質(zhì)售后服務人員,并且完全形成了一套成熟的業(yè)務流程,能夠完全依照客戶要求對網(wǎng)站進行成都網(wǎng)站設計、成都網(wǎng)站建設、建設、維護、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。

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

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

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

代碼如下

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

//緩存生成的驗證碼

StringBuffer stringbuffer=new StringBuffer();

//隨機生成驗證碼的顏色和字符

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

{ //設置隨機顏色

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

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

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

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

stringbuffer.append(str1);

}

//將生成的驗證碼存到服務器

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");// 設置服務器發(fā)送給瀏覽器的編碼方式

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

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

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

System.out.println(checkcode);

// 判斷輸入的驗證碼是不是符合

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

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

if (str != null) {

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

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

else

response.getWriter().println("驗證碼輸入錯誤");

}

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

// 使用完的驗證碼信息要刪除,返回原頁面再輸一次,驗證碼就失效了

session.removeAttribute("checkcode");

}

}

怎么用Java代碼實現(xiàn)一個驗證碼,求具體實現(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?{

//?驗證碼字符集

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;

/**

*?生成隨機驗證碼及圖片

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

*/

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.設置畫筆顏色

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

不知道你問的是不是生成這種圖片驗證碼?如果只要一個隨機四位數(shù) 那這行代碼就夠了(new Random().nextInt(9000) + 1000;),如果是生成頁面圖片驗證碼就是下面的了: //設定 響應模式 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();

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

我自己做的系統(tǒng)里面用作驗證碼的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("當前驗證碼為:"+session.getAttribute("randNum")); os.flush(); os.close(); os=null; response.flushBuffer(); out.clear(); out = pageContext.pushBody(); % /body/html

怎樣用java實現(xiàn)驗證碼

現(xiàn)在許多系統(tǒng)的注冊 登錄或者發(fā)布信息模塊都添加的隨機驗證碼功能 就是為了避免自動注冊程序或者自動發(fā)布程序的使用

驗證碼實際上就是隨機選擇一些字符以圖片的形式展現(xiàn)在頁面上 如果進行提交操作的同時需要將圖片上的字符同時提交 如果提交的字符與服務器session保存的不同 則認為提交信息無效 為了避免自動程序分析解析圖片 通常會在圖片上隨機生成一些干擾線或者將字符進行扭曲 增加自動識別驗證碼的難度

在這里 我們使用java實現(xiàn)驗證碼

%@ page contentType= image/jpeg import= java awt * java awt image * java util * javax imageio * %

%!

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

Random random = new Random();

if(fc ) fc= ;

if(bc ) bc= ;

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

response setDateHeader( Expires );

// 在內(nèi)存中創(chuàng)建圖象

int width= height= ;

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

// 獲取圖形上下文

Graphics g = image getGraphics();

//生成隨機類

Random random = new Random();

// 設定背景色

g setColor(getRandColor( ));

g fillRect( width height);

//設定字體

g setFont(new Font( Times New Roman Font PLAIN ));

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

g setColor(getRandColor( ));

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

{

int x = random nextInt(width);

int y = random nextInt(height);

int xl = random nextInt( );

int yl = random nextInt( );

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

}

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

String codeList = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ;

String sRand= ;

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

int a=random nextInt(codeList length() );

String rand=codeList substring(a a+ );

sRand+=rand;

// 將認證碼顯示到圖象中

g setColor(new Color( +random nextInt( ) +random nextInt( ) +random nextInt( )));//調(diào)用函數(shù)出來的顏色相同 可能是因為種子太接近 所以只能直接生成

g drawString(rand *i+ );

}

// 將認證碼存入SESSION

session setAttribute( rand sRand);

// 圖象生效

g dispose();

// 輸出圖象到頁面

ImageIO write(image JPEG response getOutputStream());

out clear();

out = pageContext pushBody();

lishixinzhi/Article/program/Java/hx/201311/25536

當前標題:驗證碼生成java代碼 驗證碼識別java
URL標題:http://chinadenli.net/article48/dogcjep.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站定制開發(fā)品牌網(wǎng)站設計網(wǎng)站維護虛擬主機搜索引擎優(yōu)化

廣告

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

小程序開發(fā)