java web中圖片驗(yàn)證碼功能的簡(jiǎn)單實(shí)現(xiàn)方法
用戶在注冊(cè)網(wǎng)站信息的時(shí)候基本上都要數(shù)據(jù)驗(yàn)證碼驗(yàn)證。那么圖片驗(yàn)證碼功能該如何實(shí)現(xiàn)呢?
大概步驟是:
1.在內(nèi)存中創(chuàng)建緩存圖片
2.設(shè)置背景色
3.畫邊框
4.寫字母
5.繪制干擾信息
6.圖片輸出
廢話不多說,直接上代碼
package com.lsgjzhuwei.servlet.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class VerificationCode */ @WebServlet(asyncSupported = true, urlPatterns = { "/VerificationCode" }) public class VerificationCode extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public VerificationCode() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub int width = 120; int height = 30; //創(chuàng)建一張內(nèi)存中的緩存圖片 BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); ///背景色 //通過graphics繪制圖像 Graphics graphics = bufferedImage.getGraphics(); //設(shè)置顏色 graphics.setColor(Color.yellow); //填充 graphics.fillRect(0, 0, width, height); ///畫邊框 graphics.setColor(Color.blue); graphics.drawRect(0, 0, width-1, height-1); //寫字母 String content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcedfghijklmnopqrstuvwxyz1234567890"; Random random = new Random(); //設(shè)置字體顏色 graphics.setColor(Color.red); //設(shè)置字體及大小 graphics.setFont(new Font("宋體", Font.BOLD, 20)); int x=20; int y=20; for(int i = 0; i < 4; i++) { int index = random.nextInt(content.length()); char letter = content.charAt(index); graphics.drawString(letter+" ", x, y); x = x+20; } //繪制干擾線 int x1; int x2; int y1; int y2; graphics.setColor(Color.LIGHT_GRAY); for(int i = 0;i <50;i++) { x1=random.nextInt(width); x2=random.nextInt(width); y1=random.nextInt(height); y2=random.nextInt(height); graphics.drawLine(x1, y1, x2, y2); } //將圖片輸出到瀏覽器 //將內(nèi)存的圖片通過瀏覽器輸出流輸出成jpg圖片 ImageIO.write(bufferedImage, "jpg", response.getOutputStream()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
以上這篇java web中圖片驗(yàn)證碼功能的簡(jiǎn)單實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Idea中如何查看SpringSecurity各Filter信息
這篇文章主要介紹了Idea中如何查看SpringSecurity各Filter信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01swing jtextArea滾動(dòng)條和文字縮放效果
這篇文章主要為大家詳細(xì)介紹了swing jtextArea滾動(dòng)條和文字縮放效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12SpringBoot在項(xiàng)目停止(服務(wù)停止/關(guān)閉退出)之后執(zhí)行的方法
這篇文章主要給大家介紹了SpringBoot在項(xiàng)目停止(服務(wù)停止/關(guān)閉退出)之后執(zhí)行的兩種方法,實(shí)現(xiàn)DisposableBean接口和使用@PreDestroy注解,文中有詳細(xì)的代碼講解,具有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12springboot自動(dòng)配置沒有生效的問題定位(條件斷點(diǎn))
這篇文章主要介紹了springboot自動(dòng)配置未生效問題定位,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來學(xué)習(xí)一下吧2019-06-06基于java實(shí)現(xiàn)websocket協(xié)議過程詳解
這篇文章主要介紹了基于java實(shí)現(xiàn)websocket協(xié)議過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09IDEA:Error running,Command line is too&n
這篇文章主要介紹了IDEA:Error running,Command line is too long.解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07