欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java驗證碼完整源代碼 驗證碼識別 java

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

package?util;

臨翔ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

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;

/**

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

*?返回的數(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.設(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.返回驗證碼和圖片

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 web中驗證碼代碼??

生成code.jsp文件的完整代碼如下:

%@ page language="java" contentType="image/jpeg; charset=gb2312"

pageEncoding="gb2312"%

%@ page import="java.awt.*,java.awt.image.*" %

%@ page import="java.util.*,javax.imageio.*" %

%!

Color getRandColor(int fc,int bc){

Random r=new Random();

if(fc255) fc=255;

if(bc200) bc=255;

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

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

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

return new Color(red,green,blue);

}%

% //設(shè)置頁面不緩存

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

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

response.setDateHeader("Expires",0);

//創(chuàng)建隨機(jī)類

Random r=new Random();

//在內(nèi)存中創(chuàng)建圖像,寬度,高度

int width=80,height=30;

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

//獲取圖形上下文環(huán)境

Graphics gc=pic.getGraphics();

//設(shè)定背景顏色并進(jìn)行填充

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

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

//設(shè)定圖形上下文環(huán)境字體

gc.setFont(new Font("Times New Roman",Font.PLAIN,20));

//畫邊框

//gc.setColor(new Color(1));

//gc.drawRect(0,0,width-1,height-1);

//隨機(jī)產(chǎn)生200條干擾直線,使圖像中的認(rèn)證碼不易被其他分析程序探測

gc.setColor(getRandColor(160,200));

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

{

int x1=r.nextInt(width);

int y1=r.nextInt(height);

int x2=r.nextInt(15);

int y2=r.nextInt(15);

gc.drawLine(x1,y1,x1+x2,y1+y2);

}

//隨即產(chǎn)生100個干擾點

gc.setColor(getRandColor(120,240));

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

int x=r.nextInt(width);

int y=r.nextInt(height);

gc.drawOval(x,y,0,0);

}

//隨機(jī)產(chǎn)生四位數(shù)字的驗證碼

String RS="";

String rn="";

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

{

//產(chǎn)生十以內(nèi)隨機(jī)數(shù)字

rn=String.valueOf(r.nextInt(10));

RS+=rn;

//將認(rèn)證碼用drawString函數(shù)顯示到圖像里

gc.setColor(new Color(20+r.nextInt(110),20+r.nextInt(110),20+r.nextInt(110)));//使字體顏色效果明顯

gc.drawString(rn,13*i+16,16);

}

//釋放圖形上下文環(huán)境

gc.dispose();

//將認(rèn)證碼RS存入session中共享

session.setAttribute("random",RS);

//輸出生成后的圖象到頁面

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

out.clear();

out = pageContext.pushBody();

%

使用隨即碼的jsp文件中加入下面一句即可

image src="code.jsp"

驗證碼部分的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)證碼不易被其它程序探測到

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ù)出來的顏色相同,可能是因為種子太接近,所以只能直接生成

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對應(yīng)0-9;65-90對應(yīng)A-Z;97-122對應(yīng)a-z;

String setRandValue(HttpServletRequest request) {

Random random = new Random();

String sRand = "";

//這里是生成驗證碼的位數(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;

}

}

用java怎么制作驗證碼

原理:

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

2.對這4個數(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";

//緩存生成的驗證碼

StringBuffer stringbuffer=new StringBuffer();

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

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就是從填充字符段中隨意選取一個位置

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

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

stringbuffer.append(str1);

}

//將生成的驗證碼存到服務(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);

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

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

}

}

標(biāo)題名稱:java驗證碼完整源代碼 驗證碼識別 java
URL分享:http://aaarwkj.com/article24/doodije.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)建站公司、外貿(mào)建站、小程序開發(fā)、網(wǎng)站維護(hù)

廣告

聲明:本網(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)

網(wǎng)站優(yōu)化排名
中文字幕有码av海量| 丁香六月五月色婷婷网| 日韩高清av一区二区| 不卡av免费在线网址| 99热视频这里只有精品| 激情综合五月激情综合| 中文字慕日韩精品欧美一区| 日本午夜免费在线视频| 日韩新片一区二区三区| 亚洲最大av在线精品国产| 91伊人激情综合久久| 国产91高清免费视频| 欧美老熟妇一区三区精品| 亚洲熟女少妇淫语高潮| 亚洲乱码一区二区在线| 国产l精品国产亚洲区久久| 国产精品一二三在线看| 国产一区二区三区午夜视频| 日本一区二区三级在线观看| 亚洲情色精品国产一区| 久久中文人妻丝袜不卡| 在线蜜臀av中文字幕| 九色91成人在线视频| 亚洲ve中文字幕久久一区二区| 精品久久久久久蜜臀av| 日韩中文字幕综合不卡| 国产精品伦一区二区三级| 国产亚洲精品国产福利久久| 日本亚洲精品在线观看| 成人在线观看一区二区三区| 日韩高清精品一区二区| 久国产精品久久久极品| 国产一级内射麻豆91| 日韩欧美中文字幕区| 人妻操人人妻中出av| 剧情av一区二区在线| 少妇视频资源一区二区三区| 国产大神91一区二区三区| 亚洲中文字幕av每天更新| 给我搜一个一级黄色片| 国产欧美日韩精品国产|