黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 實(shí)現(xiàn)Java驗(yàn)證碼驗(yàn)證功能

實(shí)現(xiàn)Java驗(yàn)證碼驗(yàn)證功能

更新時(shí)間:2022-05-09 10:43:55 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2356次

動(dòng)力節(jié)點(diǎn)小編來(lái)告訴大家驗(yàn)證碼的校驗(yàn)功能如何實(shí)現(xiàn),在平時(shí)總會(huì)有一些閑雜人等,會(huì)找一些網(wǎng)站進(jìn)行暴力注冊(cè)。而驗(yàn)證碼就是防止惡意注冊(cè)的一種方式。

首先在前臺(tái)導(dǎo)入驗(yàn)證碼圖片

jsp方式

<label for="img">驗(yàn)證碼:</label>
<input type="text" name="verifycode" id="verifycode"/>
<img id="img" src="${pageContext.request.contextPath}/checkCode" title="看不清點(diǎn)擊刷新"/>
然后用原生js加一個(gè)點(diǎn)擊時(shí)刷新的效果
 <script type="text/javascript">
window.οnlοad=function () {
         document.getElementById("img").οnclick=function () {
              this.src="${pageContext.request.contextPath}/checkCode?time="+new Date().getTime();
   }
}
  </script>

后臺(tái)Servlet

//獲取用戶傳遞的驗(yàn)證碼參數(shù)和Session中的驗(yàn)證碼參數(shù)

//用戶傳遞參數(shù)

String checkcode=request.getParameter("verifycode");
 HttpSession session=request.getSession();

//Session中的驗(yàn)證碼 該參數(shù)是通過(guò)工具類(lèi)在Session中賦的參數(shù)

String checkcode_server= (String) session.getAttribute("CHECKCODE_SERVER");

//刪除session中的驗(yàn)證碼,確保驗(yàn)證碼的一次性

//參數(shù)為工具類(lèi)中session存儲(chǔ)的name值

session.removeAttribute(“CHECKCODE_SERVER”);

//判斷驗(yàn)證碼

if (checkcode_server==null&&!checkcode_server.equalsIgnoreCase(checkcode)){

//驗(yàn)證碼不正確

//提示信息

 request.setAttribute("login_msg","驗(yàn)證碼錯(cuò)誤!");
//跳轉(zhuǎn)登陸頁(yè)面
request.getRequestDispatcher("/login.jsp").forward(request,response);
return;
  }

Servlet方式驗(yàn)證

//驗(yàn)證碼校驗(yàn)
    String check=request.getParameter("check");
    //從session中獲取驗(yàn)證碼
    HttpSession session=request.getSession();
    String checkcode_server= (String) session.getAttribute("CHECKCODE_SERVER");
    //保證驗(yàn)證碼唯一 參數(shù)為工具類(lèi)中session存儲(chǔ)的name值
    session.removeAttribute("CHECKCODE_SERVER");
    //比較
    if (checkcode_server==null||!checkcode_server.equalsIgnoreCase(check)){
        //驗(yàn)證碼錯(cuò)誤
        ResultInfo info=new ResultInfo();
        //注冊(cè)失敗
        info.setFlag(false);
        info.setErrorMsg("驗(yàn)證碼錯(cuò)誤!");
        //將info對(duì)象序列化為json
        ObjectMapper mapper=new ObjectMapper();
        String json=mapper.writeValueAsString(info);
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(json);
        return ;
    }

//驗(yàn)證碼工具類(lèi)

package cn.easyArch.web.Servlet;
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;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
/**
驗(yàn)證碼
*/
@WebServlet("/checkCode")
public class CheckCodeServlet extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
//服務(wù)器通知瀏覽器不要緩存
response.setHeader(“pragma”,“no-cache”);
response.setHeader(“cache-control”,“no-cache”);
response.setHeader(“expires”,“0”);
//在內(nèi)存中創(chuàng)建一個(gè)長(zhǎng)80,寬30的圖片,默認(rèn)黑色背景
//參數(shù)一:長(zhǎng)
//參數(shù)二:寬
//參數(shù)三:顏色
int width = 80;
int height = 30;
BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
//獲取畫(huà)筆
Graphics g = image.getGraphics();
//設(shè)置畫(huà)筆顏色為灰色
g.setColor(Color.GRAY);
//填充圖片
g.fillRect(0,0, width,height);
//產(chǎn)生4個(gè)隨機(jī)驗(yàn)證碼,12Ey
String checkCode = getCheckCode();
//將驗(yàn)證碼放入HttpSession中
request.getSession().setAttribute(“CHECKCODE_SERVER”,checkCode);
//設(shè)置畫(huà)筆顏色為黃色
g.setColor(Color.YELLOW);
//設(shè)置字體的小大
g.setFont(new Font(“黑體”, Font.BOLD,24));
//向圖片上寫(xiě)入驗(yàn)證碼
g.drawString(checkCode,15,25);
//將內(nèi)存中的圖片輸出到瀏覽器
//參數(shù)一:圖片對(duì)象
//參數(shù)二:圖片的格式,如PNG,JPG,GIF
//參數(shù)三:圖片輸出到哪里去
ImageIO.write(image,“PNG”,response.getOutputStream());
}
/**
* 產(chǎn)生4位隨機(jī)字符串
*/
private String getCheckCode() {
String base = “0123456789ABCDEFGabcdefg”;
int size = base.length();
Random r = new Random();
StringBuffer sb = new StringBuffer();
for(int i=1;i<=4;i++){
//產(chǎn)生0到size-1的隨機(jī)值
int index = r.nextInt(size);
//在base字符串中獲取下標(biāo)為index的字符
char c = base.charAt(index);
//將c放入到StringBuffer中去
sb.append?;
}
return sb.toString();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
}

以上就是關(guān)于“實(shí)現(xiàn)Java驗(yàn)證碼驗(yàn)證功能”的介紹,大家如果想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程從入門(mén)到精通,細(xì)致全面,通俗易懂,適合小白學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 手机在线免费观看毛片 | 亚洲伊人久久综合影院2021 | 夜色福利视频 | 国内精品久久久久久西瓜色吧 | 亚洲图片欧美日韩 | 国产高清在线精品一区二区三区 | 精品亚洲综合久久中文字幕 | 最近中文日本字幕免费完整 | 中国女与老外在线精品 | 欧美一区精品 | 成人欧美精品一区二区不卡 | 久久激情综合色丁香 | 久久久网 | 国产人成在线视频 | 国产亚洲欧美日韩在线看片 | 性欧美videos喷水 | 成人黄色在线观看视频 | 欧美二区在线观看 | 精品中文字幕一区在线 | 欧美精品xxx | 色天天综合久久久久综合片 | 成人资源在线观看 | 国产综合欧美 | 成人免费网站 | 羞羞视频免费网站含羞草 | 久久99视频 | 道日本一本草久 | 最近2019中文字幕无吗 | 精品中文字幕制服中文 | 欧美极度另类极品 | 欧美成人免费tv在线播放 | 特级淫片日本高清视频 | 97porm自拍视频区原创 | 99精品视频在线观看免费 | 成人在线影视 | 欧美日韩一区二区中文字幕视频 | free性欧美极度另类性性欧美 | 国产一区二区在线观看麻豆 | 精品在线播放 | 丁香六月激情 | 国产一在线 |