真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JSP如何實現(xiàn)頁面驗證碼

這篇文章主要為大家展示了“JSP如何實現(xiàn)頁面驗證碼”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“JSP如何實現(xiàn)頁面驗證碼”這篇文章吧。

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的上街網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

JSP頁面驗證碼實現(xiàn)

首先在JSP頁面加上生成圖片的鏈接

,src需要我們自己實現(xiàn),實現(xiàn)邏輯如下

JSP如何實現(xiàn)頁面驗證碼

 JSP如何實現(xiàn)頁面驗證碼

 運行后,jsp頁面會發(fā)出"auth/code"請求生成驗證碼,并將驗證碼放置于session中用于驗證,運行效果如下

JSP如何實現(xiàn)頁面驗證碼

 我們在jsp頁面上加上輸入驗證碼的輸入框及提交按鈕,點擊按鈕后進行驗證碼判斷

JSP如何實現(xiàn)頁面驗證碼

 JSP如何實現(xiàn)頁面驗證碼

 JSP如何實現(xiàn)頁面驗證碼

 后臺會比將收入的驗證碼與放置于session中的驗證碼進行比對,并輸出結(jié)果給JSP頁面進行相應(yīng)處理,當(dāng)判斷為失敗,則刷新驗證碼

JSP如何實現(xiàn)頁面驗證碼

最后,相對完整的頁面和邏輯都已實現(xiàn),代碼如下

JSP頁面代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ page import="java.util.*" %>


    Title

<%----%>


    function submitForm() {
        var inputCode=$("#authCode").attr("value");
        var list={"inputCode":inputCode};
        $.ajax({
            //請求方式
            type : "POST",
            //請求的媒體類型
            contentType: "application/x-www-form-urlencoded",
            //請求地址
            url : "auth/checkCode",
            //數(shù)據(jù),json字符串
            data :list,
            dataType:"json",
            //請求成功
            success : function(result) {
                alert(result);
                if(result=="1"){
                    alert("驗證通過");
                }else{
                    alert("驗證失敗,重新刷新驗證碼");
                    flushAuthCode();
                }
            },
            //請求失敗,包含具體的錯誤信息
            error : function(e){
                alert(e.responseText);
            }
        });
    }
    function flushAuthCode() {
        //重新刷新驗證碼
        $("#codeImage").attr("src","auth/authCode?abc="+Math.random());
    }




    
        
        
        
    



后臺代碼
package com.founderit.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

@Controller
@RequestMapping("auth")
public class Auth {
    private char[] codeSequence = { 'A', '1','B', 'C', '2','D','3', 'E','4', 'F', '5','G','6', 'H', '7','I', '8','J',
            'K',   '9' ,'L', '1','M',  '2','N',  'P', '3', 'Q', '4', 'R', 'S', 'T', 'U', 'V', 'W',
            'X', 'Y', 'Z'};
    @RequestMapping("authCode")
    public void getCode(HttpServletResponse response, HttpSession session) throws IOException {
        int width = 63;
        int height = 37;
        Random random = new Random();
        //設(shè)置response頭信息
        //禁止緩存
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);

        //生成緩沖區(qū)image類
        BufferedImage image = new BufferedImage(width, height, 1);
        //產(chǎn)生image類的Graphics用于繪制操作
        Graphics g = image.getGraphics();
        //Graphics類的樣式
        g.setColor(this.getColor(200, 250));
        g.setFont(new Font("Times New Roman",0,28));
        g.fillRect(0, 0, width, height);
        //繪制干擾線
        for(int i=0;i<40;i++){
            g.setColor(this.getColor(130, 200));
            int x = random.nextInt(width);
            int y = random.nextInt(height);
            int x1 = random.nextInt(12);
            int y1 = random.nextInt(12);
            g.drawLine(x, y, x + x1, y + y1);
        }

        //繪制字符
        String strCode = "";
        for(int i=0;i<4;i++){
            String rand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]);
            strCode = strCode + rand;
            g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
            g.drawString(rand, 13*i+6, 28);
        }
        //將字符保存到session中用于前端的驗證
        session.setAttribute("authCode", strCode.toLowerCase());
        g.dispose();

        ImageIO.write(image, "JPEG", response.getOutputStream());
        response.getOutputStream().flush();
    }

    public  Color getColor(int fc,int bc){
        Random random = new Random();
        if(fc>255)
            fc = 255;
        if(bc>255)
            bc = 255;
        int r = fc + random.nextInt(bc - fc);
        int g = fc + random.nextInt(bc - fc);
        int b = fc + random.nextInt(bc - fc);
        return new Color(r,g,b);
    }

    @RequestMapping(value = "checkCode",method = RequestMethod.POST)
    @ResponseBody
    public String checkAuthCode(@RequestParam(value = "inputCode") String inputCode, HttpServletRequest request){
        String checkCode=(String) request.getSession().getAttribute("authCode");
        //返回1 代表判斷通過,0代表失敗
        String isCode=checkCode.equals(inputCode)?"1":"0";
        return isCode;
    }
}

以上是“JSP如何實現(xiàn)頁面驗證碼”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站欄目:JSP如何實現(xiàn)頁面驗證碼
地址分享:http://weahome.cn/article/jhiddj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部