日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

java生成圖片驗(yàn)證碼

 印度阿三17 2020-02-24

最近在用ssm框架做一個(gè)管理系統(tǒng),做到登錄驗(yàn)證時(shí),使用了下面的代碼生成圖片驗(yàn)證碼,最終的效果如下圖。

Java類
[AppleScript]?純文本查看?復(fù)制代碼 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 public class RandomValidateCode { ????public static final String RANDOMCODEKEY = "randomcode_key";//放到session中的key ????private Random random = new Random(); ????private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//隨機(jī)產(chǎn)生的字符串 ? ????private int width = 80;//圖片寬 ????private int height = 26;//圖片高 ????private int lineSize = 40;//干擾線數(shù)量 ????private int stringNum = 4;//隨機(jī)產(chǎn)生字符數(shù)量 ? ????/** ?????* 生成隨機(jī)圖片 ?????*/ ????public void getRandcode(HttpServletRequest request, ????????????????????????????HttpServletResponse response) { ????????HttpSession session = request.getSession(); ????????//BufferedImage類是具有緩沖區(qū)的Image類,Image類是用于描述圖像信息的類 ????????BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR); ????????//產(chǎn)生Image對(duì)象的Graphics對(duì)象,改對(duì)象可以在圖像上進(jìn)行各種繪制操作 ????????Graphics g = image.getGraphics(); ????????g.fillRect(0, 0, width, height); ????????g.setFont(new Font("Times New Roman",Font.ROMAN_BASELINE,18)); ????????g.setColor(getRandColor(160, 200)); ????????//繪制干擾線 ????????for(int i=0;i<=lineSize;i ){ ????????????drowLine(g); ????????} ????????//繪制隨機(jī)字符 ????????String randomString = ""; ????????for(int i=1;i<=stringNum;i ){ ????????????randomString=drowString(g,randomString,i); ????????} ????????session.removeAttribute(RANDOMCODEKEY); ????????session.setAttribute(RANDOMCODEKEY, randomString); ????????g.dispose(); ????????try { ????????????//將內(nèi)存中的圖片通過流動(dòng)形式輸出到客戶端 ????????????ImageIO.write(image, "JPEG", response.getOutputStream()); ????????} catch (Exception e) { ????????????e.printStackTrace(); ????????} ????} ????/* ?????* 獲得字體 ?????*/ ????private Font getFont(){ ????????return new Font("Fixedsys",Font.CENTER_BASELINE,18); ????} ????/* ?????* 獲得顏色 ?????*/ ????private Color getRandColor(int fc,int bc){ ????????if(fc > 255) ????????????fc = 255; ????????if(bc > 255) ????????????bc = 255; ????????int r = fc random.nextInt(bc-fc-16); ????????int g = fc random.nextInt(bc-fc-14); ????????int b = fc random.nextInt(bc-fc-18); ????????return new Color(r,g,b); ????} ? ????/* ?????* 繪制字符串 ?????*/ ????private String drowString(Graphics g,String randomString,int i){ ????????g.setFont(getFont()); ????????g.setColor(new Color(random.nextInt(101),random.nextInt(111),random.nextInt(121))); ????????String rand = String.valueOf(getRandomString(random.nextInt(randString.length()))); ????????randomString =rand; ????????g.translate(random.nextInt(3), random.nextInt(3)); ????????g.drawString(rand, 13*i, 16); ????????return randomString; ????} ????/* ?????* 繪制干擾線 ?????*/ ????private void drowLine(Graphics g){ ????????int x = random.nextInt(width); ????????int y = random.nextInt(height); ????????int xl = random.nextInt(13); ????????int yl = random.nextInt(15); ????????g.drawLine(x, y, x xl, y yl); ????} ????/* ?????* 獲取隨機(jī)的字符 ?????*/ ????public String getRandomString(int num){ ????????return String.valueOf(randString.charAt(num)); ????} }

Controller
[AppleScript]?純文本查看?復(fù)制代碼 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 @RequestMapping(value="/checkCode") ???public void checkCode(HttpServletRequest request, HttpServletResponse response) ???????????throws ServletException, IOException { ???????//設(shè)置相應(yīng)類型,告訴瀏覽器輸出的內(nèi)容為圖片 ???????response.setContentType("image/jpeg"); ? ???????//設(shè)置響應(yīng)頭信息,告訴瀏覽器不要緩存此內(nèi)容 ???????response.setHeader("pragma", "no-cache"); ???????response.setHeader("Cache-Control", "no-cache"); ???????response.setDateHeader("Expire", 0); ? ???????RandomValidateCode randomValidateCode = new RandomValidateCode(); ???????try { ???????????randomValidateCode.getRandcode(request, response);//輸出圖片方法 ???????} catch (Exception e) { ???????????e.printStackTrace(); ???????} ???}

前端jsp頁(yè)面表單,顯示驗(yàn)證碼
[HTML]?純文本查看?復(fù)制代碼 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 <div class="layui-form-item"> ??????????????<div class="layui-row"> ??????????????????<div class="layui-col-xs7"> ??????????????????????<label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="LAY-user-login-vercode"></label> ??????????????????????<input type="text" name="code" id="LAY-user-login-vercode" lay-verify="required" placeholder="圖形驗(yàn)證碼" class="layui-input"> ??????????????????</div> ??????????????????<div class="layui-col-xs5"> ??????????????????????<div style="margin-left: 10px;"> ??????????????????????????<img src="${pageContext.request.contextPath}checkCode" class="layadmin-user-login-codeimg" id="LAY-user-get-vercode" alt=""> ??????????????????????</div> ??????????????????</div> ??????????????</div> ??????????</div>
來(lái)源:https://www./content-1-639201.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多