登錄時候輸入驗證碼,驗證碼圖片從服務器獲取方法

登錄時候輸入驗證碼,驗證碼圖片從服務器獲取方法

小驗證碼圖片 源碼分享:http://pan.baidu.com/s/1skK7jRJ

展示效果:

登錄時候輸入驗證碼,驗證碼圖片從服務器獲取方法 - wangyue.123.com - moonstak

在這裏插入圖片描述

jsp頁面:

<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>

My JSP 'index.jsp' starting page 驗證碼: ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20191206111354505.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd5dWUyM2NvbQ==,size_16,color_FFFFFF,t_70)
${param.result eq 0 ?"驗證碼填寫錯誤":"驗證碼填寫正確"}

java後臺代碼:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//判斷類型是獲取驗證碼圖片 還是驗證提交的驗證碼
String type = request.getParameter(“type”);
int trueFlag = 0; //代表是否驗證通過 1驗證碼正確 0驗證碼錯誤
if(“form”.equals(type)){
String authCode = (String)request.getSession().getAttribute(“authCode”);
String code = request.getParameter(“code”);
if(authCode.equals(code)){
trueFlag = 1;
}else{
trueFlag = 0;
}
}else if(“generateAuthCode”.equals(type)){
response.setHeader(“Pragma”, “No-cache”);
response.setHeader(“Cache-Control”, “no-cache”);
response.setDateHeader(“Expires”, 0L);

  int width = 60; int height = 20;
  BufferedImage image = new BufferedImage(width, height, 1);

  Graphics g = image.getGraphics();

  Random random = new Random();

  g.setColor(getRandColor(200, 250));
  g.fillRect(0, 0, width, height);

  g.setFont(new Font("Times New Roman", 0, 18));

  g.setColor(getRandColor(160, 200));
  for (int i = 0; i < 155; i++)
  {
    int x = random.nextInt(width);
    int y = random.nextInt(height);
    int xl = random.nextInt(12);
    int yl = random.nextInt(12);
    g.drawLine(x, y, x + xl, y + yl);
  }

  String sRand = "";
  for (int i = 0; i < 4; i++) {
    String rand = String.valueOf(random.nextInt(10));
    sRand = sRand + rand;

    g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
    g.drawString(rand, 13 * i + 6, 16);
  }
  //將驗證碼保存服務器session中
  request.getSession().setAttribute("authCode", sRand);
 
  g.dispose();
  try
  {
   //將圖片寫入輸入流
    ImageIO.write(image, "JPEG", response.getOutputStream());
  }
  catch (Exception localException1)
  {
  }

}
try{
//跳轉回頁面
response.sendRedirect(request.getContextPath()+"/index.jsp?result="+trueFlag);
}catch(Exception e){

}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章