java實現(xiàn)圖形驗證碼

首先img的src可以使用遠(yuǎn)程圖片,也就是說他同樣是可以請求后端的,這也就是實現(xiàn)圖形驗證碼隨機(jī)顯示的原理似扔。

配置html頁面

  • 使用img組件逛尚,src請求一個后臺地址垄惧。
  • 點擊圖片,傳遞隨機(jī)數(shù)绰寞,獲取隨機(jī)驗證碼到逊。
  • 下面代碼基于Thymeleaf,因此使用了th:src屬性滤钱。普通的頁面的話觉壶,可以直接使用src屬性。
 <span class="yzm-pic">
<img th:src="@{/ran/random}" th-alt="驗證碼件缸,點擊圖片更換" onclick="this.src='/ran/random?random='+Math.random();" />
</span>

注意:
其實铜靶,onclick是一個難點,點擊之后傳遞一個隨機(jī)數(shù)他炊。使用this.src重新給該圖片賦值争剿。

實現(xiàn)后臺控制方法

最終是使用ImageIO方法進(jìn)行驗證碼的繪制。

@RequestMapping({"/ran/random"})
    public void genericRandomCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setHeader("Cache-Control", "private,no-cache,no-store");
        response.setContentType("image/png");
        byte width = 85;
        byte height = 28;
        BufferedImage image = new BufferedImage(width, height, 2);
        Graphics2D g = image.createGraphics();
        g.setComposite(AlphaComposite.getInstance(3, 1.0F));
        Random random = new Random();
        g.setColor(new Color(231, 231, 231));
        g.fillRect(0, 0, width, height);
        g.setFont(new Font("Microsoft YaHei", 2, 24));
        String sRand = "";
        for(int responseOutputStream = 0; responseOutputStream < 4; ++responseOutputStream) {
            String rand = String.valueOf(random.nextInt(10));
            sRand = sRand + rand;
            g.setColor(new Color(121, 143, 96));
            g.drawString(rand, 13 * responseOutputStream + 16, 23);
        }
        g.dispose();
        ServletOutputStream var12 = response.getOutputStream();
        ImageIO.write(image, "png", var12);
        var12.close();
    }
  • for循環(huán)里面控制了一下隨機(jī)數(shù)的位數(shù)痊末,這里為4位蚕苇。

通過以上方法,實現(xiàn)了隨機(jī)校驗碼舌胶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捆蜀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子幔嫂,更是在濱河造成了極大的恐慌辆它,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件履恩,死亡現(xiàn)場離奇詭異锰茉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)切心,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門飒筑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绽昏,你說我怎么就攤上這事协屡。” “怎么了全谤?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵肤晓,是天一觀的道長。 經(jīng)常有香客問我,道長补憾,這世上最難降的妖魔是什么漫萄? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮盈匾,結(jié)果婚禮上腾务,老公的妹妹穿的比我還像新娘。我一直安慰自己削饵,他們只是感情好岩瘦,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葵孤,像睡著了一般担钮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尤仍,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音狭姨,去河邊找鬼宰啦。 笑死,一個胖子當(dāng)著我的面吹牛饼拍,可吹牛的內(nèi)容都是我干的赡模。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼师抄,長吁一口氣:“原來是場噩夢啊……” “哼漓柑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叨吮,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤辆布,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后茶鉴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锋玲,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年涵叮,在試婚紗的時候發(fā)現(xiàn)自己被綠了惭蹂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡割粮,死狀恐怖盾碗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舀瓢,我是刑警寧澤廷雅,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響榜轿,放射性物質(zhì)發(fā)生泄漏幽歼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一谬盐、第九天 我趴在偏房一處隱蔽的房頂上張望甸私。 院中可真熱鬧,春花似錦飞傀、人聲如沸皇型。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弃鸦。三九已至,卻和暖如春幢痘,著一層夾襖步出監(jiān)牢的瞬間唬格,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工颜说, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留购岗,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓门粪,卻偏偏與公主長得像喊积,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子玄妈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring mvc之java實現(xiàn)登陸時驗證碼邏輯 摘要 一個優(yōu)良的web系統(tǒng)的登陸模塊或者功能乾吻,為了防止機(jī)器暴力...
    森森不熄閱讀 3,035評論 1 1
  • 已經(jīng)好久好久好久好久好久好久好久好久 沒有認(rèn)真和自己對話了 好像20歲的人生,一下子變得無比艱辛起來拟蜻,身邊的朋友準(zhǔn)...
  • 人總是趨向于少勞動绎签、少走路、少付出而收獲更多瞭郑。碰到復(fù)雜的事辜御,人總是嫌麻煩。思維也是勞動屈张,人們無意識地逃避勞動擒权,碰到...
    AA閆現(xiàn)召閱讀 263評論 0 1
  • 頹廢久了,都不知道努力的感覺是什么樣的了阁谆,今天沒有完成任務(wù)碳抄,沒有進(jìn)度可以記錄,跟自己說快點振作起來吧场绿,找回曾經(jīng)自己...
    灰褲子白襯衫閱讀 251評論 0 0