JSP驗證碼,驗證碼
在JSP頁面上寫隨機的4位元驗證碼
執行個體化BufferedImage類 得到Graphics畫筆給圖片填充背景色 然後寫上隨機數和100個幹擾點
用scropt實現重新整理驗證碼
疑問:視頻和書上的DrawString 方法不能用 也不知道怎麼回事 把String轉成了char調用了另外一個drawChars的方法才對
<%@ page language="java" contentType="text/html; charset=GB2312"import = "java.awt.image.*"import = "java.util.*"import = "java.awt.*"import = "javax.imageio.*"import = "java.lang.*"%><html><head></head><body><% response.setHeader("Cache-Control", "no-cache");BufferedImage image = new BufferedImage(60, 20, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setColor(new Color(200, 200, 200));g.fillRect(0, 0, 60, 20);Random rd = new Random(); int r = rd.nextInt(8999) + 1000; String rand = String.valueOf(r); session.setAttribute("rand", rand); g.setColor(Color.BLACK); g.setFont(new Font("", Font.PLAIN, 20)); g.drawChars(rand.toCharArray(), 0, rand.length(), 10, 17); for(int i = 0; i < 100; i++){ int x = rd.nextInt(60); int y = rd.nextInt(20); g.drawOval(x, y, 1, 1); } ImageIO.write(image, "JPEG", response.getOutputStream()); %></body></html>
jsp中顯示驗證碼的代碼怎寫?
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.util.Random;import javax.imageio.ImageIO;/*產生驗證碼圖片*/public class MakeCertPic { //驗證碼圖片中可以出現的字元集,可以根據需要修改 private char mapTable[]={ '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','0','1','2','3', '4','5','6','7','8','9' };/* 功能:產生彩色驗證碼圖片 參數wedth為產生圖片的寬度,參數height為產生圖片的高度,參數os為頁面的輸出資料流*/ public String getCertPic(int width,int height,OutputStream os){ if(width<=0) width=60; if(height<=0) height=20; BufferedImage image= new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //擷取圖形上下文 Graphics g = image.getGraphics(); //設定背景顏色 g.setColor(new Color(0xDCDCDC)); g.fillRect(0,0,width,height); //畫邊框 g.setColor(Color.black); g.drawRect(0,0,width-1,height-1); //隨機產生的驗證碼 String strEnsure = ""; //4代表4為驗證碼,如果要產生更多位的驗證碼,則加大數值 for(int i = 0;i<4;++i){ strEnsure += mapTable[(int) (mapTable.length*Math.random())]; } //將認證碼顯示到映像中,如果要產生更多位的驗證碼,增加drawString語句 g.......餘下全文>>
用jsp做登入時的驗證碼重新整理問題
<img id="yanzheng" border="0" src="manage/yanzheng.jsp"/><a href="" onclick="document.getElementById('yanzheng').src='../admin/yanzheng.jsp?'+new Date().getTime()">看不清</a>