日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

验证码2020最新最实用的验证码

發布時間:2024/3/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 验证码2020最新最实用的验证码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CodeServlet驗證碼servlet

package com.hr.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class CodeServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

// 定義寬度和高度int width = 80;int height = 25;// 定義當前圖片類型(設置高度和寬度)BufferedImage bi = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 設置一個畫板(空白面板)Graphics gp = bi.getGraphics();// 一.做一個背景色// a.設置一個顏色gp.setColor(Color.white);// b.填充顏色到畫板(背景色)gp.fillRect(0, 0, width, height);// 二.做一個邊框// a.設置一個顏色gp.setColor(Color.GRAY);// b.繪制邊框(描邊)gp.drawRect(0, 0, width - 1, height - 1);// 三.產生隨機的4位數的數字英文字母String codes = "";Random ran = new Random();// a.準備好數字和字母String str = "1234567890qwertyuiopasdfghjklzxcvbnm";// b.設置字體的大小gp.setFont(new Font("微軟雅黑", Font.BOLD, 25));// c.隨機產生四個字符for (int i = 1; i <= 4; i++) {// 只要產生的隨機下標不超過str字符串的長度即可int ran_index = ran.nextInt(str.length());// str.charAt(ran_index) 獲取隨機下標返回的字符// String.valueOf 將字符轉換字符串類型(方便處理)String temp = String.valueOf(str.charAt(ran_index));// 循環拼接四個字符codes += temp;// d.產生一個字符就寫入(畫在畫板上)一個字符// 顏色隨機產生,三原色的取值范圍0-255int r = ran.nextInt(256);int g = ran.nextInt(256);int b = ran.nextInt(256);// 通過三個不同顏色,產生一個新的顏色畫筆gp.setColor(new Color(r, g, b));// 將字符畫在面板上gp.drawString(temp, i * 13, 22);}for (int i = 1; i <= 8; i++) {// 顏色隨機產生,三原色的取值范圍0-255int r = ran.nextInt(256);int g = ran.nextInt(256);int b = ran.nextInt(256);// 通過三個不同顏色,產生一個新的顏色畫筆gp.setColor(new Color(r, g, b));// 畫入畫板上gp.drawLine(ran.nextInt(width), ran.nextInt(height), ran.nextInt(width), ran.nextInt(height));}//****************************將完整的驗證碼放入session****************************System.out.println("產生的驗證碼 : "+codes);HttpSession session = req.getSession();session.setAttribute("codes", codes);// 服務器響應字節流ServletOutputStream os = resp.getOutputStream();// 寫圖片流(畫板,文件類型,字節流)ImageIO.write(bi, "jpg", os); }

}

jsp頁面

<body><form action="LoginServlet" method="post"><table width="330px" border="0"><tr><td class="txt_right">用戶名 :</td><td><input type="text" name="name" /></td><td></td></tr><tr><td class="txt_right">密碼 :</td><td><input type="password" name="pwd" /></td><td></td></tr><tr><td class="txt_right">驗證碼 :</td><td><input type="text" name="code" /></td><td><!-- 圖片src直接填入一個servlet,該servlet會響應一張圖片response --><img src="CodeServlet" onclick="change_img(this)" style="cursor: pointer;"/></td></tr><tr><td></td><td colspan="2" style="color: red"><!-- 錯誤提示 --><input type="submit" value="登錄" /> ${msg}</td></tr></table></form><script type="text/javascript">function change_img(t){//緩存導致src的改變沒有效果,它認為此方法的CodeServlet和原src="CodeServlet"是同一個//欺騙瀏覽器,讓每一次src的路徑都不同,因為new Date().getTime();會讓每次產生的時間都不同t.src="CodeServlet?xxx="+new Date().getTime();}</script></body>

另外需要導入
standard.jar包,驗證碼注釋又不懂的加我微信15717500810溝通交流

總結

以上是生活随笔為你收集整理的验证码2020最新最实用的验证码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。