A. java怎麼生成驗證碼圖片
以下僅供參考:
這是jsp頁面,起個名字例如叫image.jsp:
<%@ page contentType="image/JPEG"
import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"
pageEncoding="GBK"%><%!Color getRandColor(int fc, int bc) {
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);
}%><%
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();
Random random = new Random();
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
g.setColor(getRandColor(160, 200));
for (int i = 0; i < 100; 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);
}
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
g.setColor(new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110)));
g.drawString(rand, 13 * i + 6, 16);
}
session.setAttribute("code", sRand);
g.dispose();
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
在你需要引入的地方:
<img border=0 src="image.jsp">
就可以了。。。
B. java 模擬登陸帶驗證碼的網頁,就想知道怎麼將驗證碼以圖片的形式下載到本地。。。。。
首先你要在前台獲取驗證信息 這點應該會吧 前台傳數據到後台
然後你要用swing 做一個圖片
然後你把數據寫進去
然後你保存到本地
是不是就等於下載了
C. 用java隨機生成四位驗證碼,只求編程代碼
不知道你問的是不是生成這種圖片驗證碼?
如果只要一個隨機四位數 那這行代碼就夠了(new Random().nextInt(9000) + 1000;),
如果是生成頁面圖片驗證碼就是下面的了:
//設定 響應模式
resp.setContentType("image/jpeg");
// 生成令牌環數據;
Integer token = new Random().nextInt(9000) + 1000;
// 保存令牌環數據到session中
req.getSession().setAttribute(IMAGE_TOKEN_NAME, token);
// 生成令牌環圖片
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();
D. java驗證碼的實現 需要知道嗎
一.什麼是驗證碼及它的作用
:驗證碼為全自動區分計算機和人類的圖靈測試的縮寫,是一種區分用戶是計算機的公共全自動程序,這個問題可以由計算機生成並評判,但是必須只有人類才能解答.可以防止惡意破解密碼、刷票、論壇灌水、有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登錄。
二.圖文驗證碼的原理
:在servlet中隨機生成一個指定位置的驗證碼,一般為四位,然後把該驗證碼保存到session中.在通過Java的繪圖類以圖片的形式輸出該驗證碼。為了增加驗證碼的安全級別,可以輸出圖片的同時輸出干擾線,最後在用戶提交數據的時候,在伺服器端將用戶提交的驗證碼和Session保存的驗證碼進行比較。
三.驗證碼所需的技術
:i.因為驗證碼中的文字,數字,應為都是可變的,故要用到隨機生成數技術。
ii.如果驗證碼中包含漢字,則要用到漢字生成技術.
iii.可以使用Ajax技術實現局部刷新
iv.可以使用圖片的縮放和旋轉技術,
vi.隨機繪制干擾線(可以是折現,直線等)
vii.如果考慮到驗證碼的安全性,可以使用MD5加密.
E. 求一個Java語言編寫的gif動態驗證碼 就是百度注冊用戶的那種
生成驗證碼代碼
package machine.action;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class ValidateCodeAction extends ActionSupport {
private ByteArrayInputStream inputStream;
public ByteArrayInputStream getInputStream() {
return inputStream;
}
public void setInputStream(ByteArrayInputStream inputStream) {
this.inputStream = inputStream;
}
public String execute() throws Exception {
this.setInputStream(generateImage());
return "success";
}
private ByteArrayInputStream generateImage() throws IOException {
BufferedImage image = new BufferedImage(100, 20,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, 100, 20);
drawbg(g);
drawValidateCode(g);
ByteArrayInputStream input = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(image, "JPEG", bos);
byte[] buf = bos.toByteArray();
input = new ByteArrayInputStream(buf);
return input;
}
private void drawbg(Graphics g) {
Random rand = new Random();
int randx;
int randy;
for (int i = 0; i < rand.nextInt(100) + 400; i++) {
randx = rand.nextInt(100);
randy = rand.nextInt(20);
g.drawLine(randx, randy, randx, randy);
}
}
private void drawValidateCode(Graphics g) {
String code = generateCode();
Random rand = new Random();
int x = 0;
Font font = new Font("Times New Roman", Font.PLAIN, 18);
g.setFont(font);
for (int i = 0; i < code.length(); i++) {
int y = 20 - rand.nextInt(4);
g.setColor(new Color(rand.nextInt(155), rand.nextInt(155), rand
.nextInt(155)));
g.drawString(code.substring(i, i + 1), x, y);
x += 20;
}
}
private String generateCode() {
Random rand = new Random();
StringBuffer sbr = new StringBuffer(
"");
int codeLen = 5;
StringBuffer codeSbr = new StringBuffer();
for (int i = 0; i < codeLen; i++) {
int select = rand.nextInt(sbr.length());
codeSbr.append(sbr.charAt(select));
sbr.deleteCharAt(select);
}
ServletActionContext.getRequest().getSession().setAttribute(
"validateCode", codeSbr.toString());
return codeSbr.toString();
}
}