亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

jsp頁面驗證碼demo

2024-09-05 00:22:44
字體:
來源:轉載
供稿:網友

在java后臺中生成驗證碼的ImageIO傳到前端頁面顯示,同時把驗證碼的value值傳入session 中用于與用戶輸入的驗證碼進行匹配,在用戶驗證中使用ajax技術,在不刷新頁面的同時進行驗證碼驗證。

程序結構圖:

jsp頁面驗證碼,jsp頁面驗證,jsp驗證碼

VerifyCodeUtils程序主要內容為通過java生成驗證碼的圖片,以及驗證碼的value值,程序如下:

 

package utils;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.util.HashMap;import java.util.Map;import java.util.Random;public class VerifyCodeUtils {private static BufferedImage image = null;  private static Random random = new Random();  //在自己定義的一些數中,生成4位隨機數  public static String getVerifyCode() {    String str = "";    char[] code = new char[]{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','P','Q','R','S','T','U',      'V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','m','n','p','q','r','s','t',      'u','v','w','x','y','z','2','3','4','5','6','7','8','9'};    Random random = new Random();    for(int i = 0; i < 4; i++) {      str += String.valueOf(code[random.nextInt(code.length)]);    }    return str;  }  //生成驗證碼圖像  public static Map getVerifyCode(int width, int heigth) {    VerifyCodeUtils.image = new BufferedImage(width, heigth, BufferedImage.TYPE_INT_RGB);    Graphics2D g = (Graphics2D) VerifyCodeUtils.image.getGraphics();    String verifyCode = getVerifyCode();    Map map = new HashMap();    map.put("verifyCode", verifyCode);    //將圖像填充為白色    g.setColor(Color.WHITE);    g.fillRect(0, 0, width, heigth);    //設置字體    g.setFont(new Font("宋體", Font.BOLD + Font.ITALIC, heigth-10));    //畫邊框。     g.setColor(VerifyCodeUtils.getColor());      g.drawRect(0, 0, width, heigth);     //隨機產生干擾線,使圖象中的認證碼不易被其它程序探測到    g.setColor(Color.BLACK);      for (int i = 0; i < 50; i++) {        int x = VerifyCodeUtils.random.nextInt(width);        int y = VerifyCodeUtils.random.nextInt(heigth);        int xl = VerifyCodeUtils.random.nextInt(5);        int yl = VerifyCodeUtils.random.nextInt(5);       g.setColor(getColor());      g.drawLine(x, y, x + xl, y + yl);      }     char c;    for(int i = 0; i < 4; i++) {      c = verifyCode.charAt(i);      g.drawString(c+"", i*20+40, heigth-10);    }    map.put("image", VerifyCodeUtils.image);    return map;  }  //隨機化顏色  public static Color getColor() {    int red = 0, green = 0, blue = 0;      // 產生隨機的顏色分量來構造顏色值,這樣輸出的每位數字的顏色值都將不同。      red = VerifyCodeUtils.random.nextInt(255);      green = VerifyCodeUtils.random.nextInt(255);      blue = VerifyCodeUtils.random.nextInt(255);     return new Color(red,green,blue);  }}

VerifyCodeServlet把VerifyCodeUtils生成的驗證碼圖片通過io流傳入前端顯示,代碼如下:

 

package Servlet;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Map;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 utils.VerifyCodeUtils;/** * Servlet implementation class VerifyCodeServlet */@WebServlet("/")public class VerifyCodeServlet extends HttpServlet {  private static final long serialVersionUID = 1L;  /**   * @see HttpServlet#HttpServlet()   */  public VerifyCodeServlet() {    super();    // TODO Auto-generated constructor stub  }  /**   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)   */  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    response.setHeader("Expires", "-1");    response.setHeader("Cache-Control", "no-cache");    response.setHeader("Pragma", "no-cache");    response.setHeader("Content-type", "image/jpeg");    Map map = VerifyCodeUtils.getVerifyCode(223, 50);    //把verifyCode的數值傳入session中用于驗證用戶輸入的驗證碼是否正確    request.getSession().setAttribute("verifyCode", map.get("verifyCode").toString().toUpperCase());    //通過IO流傳入前端顯示    ImageIO.write((BufferedImage) map.get("image"), "jpg", response.getOutputStream());   }  /**   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)   */  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    doGet(request, response);  }}

頁面jsp代碼如下:

 

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><base id="base" href="${pageContext.request.contextPath}"><title>驗證碼測試界面</title><style>div{float:left;}input{width:223px;height:31px;margin-right:20px;}img{width:223px;height:35px;}p{margin:10px;}</style></head> <body> <script src="${pageContext.request.contextPath}/JS/demo.js"></script> <div>  <input type="text" name="verifyCode" id="verifyCode" placeholder="驗證碼" onblur="check_verifyCode()">  </div>  <div>    <img src="${pageContext.request.contextPath}/servlet/VerifyCodeServlet" style="width: 100%" onclick="this.src=this.src + '?' + Math.random()"/>  </div>  <div>    <p id = "tip"></p>  </div></body></html>

js 實現ajax代碼如下:

 

/** *  */function check_verifyCode(){  var XMLHttpReqVerifyCode = null;  var url =document.getElementById("base").href +"/servlet/TestVerifyCodeServlet";  var verifyCode = document.getElementById("verifyCode").value;  var tip = document.getElementById("tip");  var errorTip = "輸入的驗證碼不正確";  var successTip = "輸入的驗證碼正確";  tip.innerHTML=errorTip;  if(verifyCode==null || verifyCode==""){    tip.innerHTML=errorTip;    tip.style.color = "red";  }else{    if(window.XMLHttpRequest) {      //DOM2瀏覽器      XMLHttpReqVerifyCode = new XMLHttpRequest();    } else if(window.ActiveXObject) {        //使用json語法創建數組      var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];      for(var i = 0; i < MSXML.length; i++) {        try{          XMLHttpReqVerifyCode = new ActiveXObject(MSXML[i]);        } catch(e) {        }      }    }    XMLHttpReqVerifyCode.open("POST",url, true);    XMLHttpReqVerifyCode.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    XMLHttpReqVerifyCode.onreadystatechange = function testVerifyCodeServletResponse(){      if(XMLHttpReqVerifyCode.readyState == 4 && (XMLHttpReqVerifyCode.status == 200 || XMLHttpReqVerifyCode.status == 304)) {        if(XMLHttpReqVerifyCode.responseText == 1){          tip.innerHTML = successTip;          tip.style.color = "green";        }else if(XMLHttpReqVerifyCode.responseText == 0){          tip.innerHTML = errorTip;          tip.style.color = "red";        }      }    }    XMLHttpReqVerifyCode.send("code="+verifyCode);  }    //ajax前后臺交互function createXMLHttpRequest(XMLHttpReq) {  if(window.XMLHttpRequest) {    //DOM2瀏覽器      XMLHttpReq = new XMLHttpRequest();  } else if(window.ActiveXObject) {    //使用json語法創建數組    var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];    for(var i = 0; i < MSXML.length; i++) {      try{        XMLHttpReq = new ActiveXObject(MSXML[i]);      } catch(e) {      }    }    return XMLHttpReq;  }}}

TestVerifyCodeServlet與js交互代碼為:

 

package Servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class TestVerifyCodeServlet */@WebServlet("/TestVerifyCodeServlet")public class TestVerifyCodeServlet extends HttpServlet {  private static final long serialVersionUID = 1L;  /**   * @see HttpServlet#HttpServlet()   */  public TestVerifyCodeServlet() {    super();    // TODO Auto-generated constructor stub  }  /**   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)   */  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    String codeTrue = (String) request.getSession().getAttribute("verifyCode");    String codeInput = request.getParameter("code");    System.out.println(codeInput);    response.setContentType("text/html;charset=utf-8");    PrintWriter out = response.getWriter();//打印流    if(codeInput!=null){      if(codeInput.toUpperCase().equals(codeTrue)){        out.println("1");      }else{        out.println("0");      }    }  }  /**   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)   */  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    doGet(request, response);  }}

xml代碼為

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name></display-name> <welcome-file-list>  <welcome-file>demo.jsp</welcome-file> </welcome-file-list> <servlet>  <servlet-name>VerifyCodeServlet</servlet-name>  <servlet-class>Servlet.VerifyCodeServlet</servlet-class> </servlet> <servlet-mapping>  <servlet-name>VerifyCodeServlet</servlet-name>  <url-pattern>/servlet/VerifyCodeServlet</url-pattern> </servlet-mapping>  <servlet>  <servlet-name>TestVerifyCodeServlet</servlet-name>  <servlet-class>Servlet.TestVerifyCodeServlet</servlet-class> </servlet> <servlet-mapping>  <servlet-name>TestVerifyCodeServlet</servlet-name>  <url-pattern>/servlet/TestVerifyCodeServlet</url-pattern> </servlet-mapping></web-app>

結果顯示:

jsp頁面驗證碼,jsp頁面驗證,jsp驗證碼

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青在线视频一区二区三区| 久久久久国产视频| 91成人天堂久久成人| 欧美日韩国产精品专区| 亚洲人永久免费| 亚洲亚裔videos黑人hd| 日韩资源在线观看| 国产91热爆ts人妖在线| 精品国产乱码久久久久久婷婷| 欧美专区第一页| 国产精品久久久久久久9999| 久久最新资源网| 国产精品男人爽免费视频1| 欧美国产精品日韩| 色偷偷av亚洲男人的天堂| 日韩免费观看网站| 都市激情亚洲色图| 91久久久久久国产精品| 国产成人精品免费久久久久| 欧美xxxx做受欧美| 精品久久久久久久久久久久| 精品国产一区二区三区四区在线观看| 色悠久久久久综合先锋影音下载| 日韩国产欧美精品一区二区三区| 精品人伦一区二区三区蜜桃免费| 中日韩美女免费视频网站在线观看| 亚洲欧美日韩国产中文| 日韩中文第一页| 亚洲精品色婷婷福利天堂| 日韩av影片在线观看| 精品久久久久久久久久国产| 91青草视频久久| 亚洲精品成人久久久| 国产精品久久久久久久久免费看| 欧美体内谢she精2性欧美| 精品露脸国产偷人在视频| 国产精品偷伦一区二区| 精品国产一区二区三区久久狼5月| 久久影院资源网| 奇米四色中文综合久久| 成人性生交大片免费看小说| 97成人精品区在线播放| 97色在线播放视频| 国产精品久久久久免费a∨| 亚洲欧美一区二区精品久久久| 久久久欧美一区二区| 色综合老司机第九色激情| 国语自产偷拍精品视频偷| 日韩在线视频国产| 欧美野外猛男的大粗鳮| 中文字幕精品一区久久久久| 国产91九色视频| 国产精品日本精品| 久久人人爽人人爽人人片av高请| 久久99精品久久久久久噜噜| 青青草原一区二区| 这里只有精品在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 色婷婷综合成人| 国产亚洲综合久久| 成人在线播放av| 日韩av中文字幕在线播放| 欧美日韩一区二区三区| 亚洲一区二区三区香蕉| 久久露脸国产精品| 欧美精品videosex极品1| 久久免费视频在线| 日韩av在线免播放器| 欧美性黄网官网| 久久精视频免费在线久久完整在线看| 欧美视频国产精品| 韩剧1988在线观看免费完整版| 91麻豆国产精品| 91视频免费网站| 欧美在线激情视频| 欧美成人免费在线观看| 久久夜精品va视频免费观看| 国产美女精品免费电影| 精品成人av一区| 国产欧美va欧美va香蕉在| 中文字幕不卡av| 久久久久成人精品| 国产精品久久77777| 国产91精品不卡视频| 欧美日韩国产专区| 日韩精品视频免费专区在线播放| 色悠久久久久综合先锋影音下载| 亚洲一区二区久久久久久| www.xxxx精品| 日韩欧美a级成人黄色| 色七七影院综合| 亚洲一区二区中文| 亚洲人成网站999久久久综合| 亚洲sss综合天堂久久| 日韩有码在线视频| 国产午夜精品全部视频在线播放| 国产精品久久久久久久天堂| 欧美极品少妇与黑人| 欧美日韩性生活视频| 粉嫩老牛aⅴ一区二区三区| 69视频在线播放| 国产精品丝袜一区二区三区| 丝袜美腿亚洲一区二区| 91福利视频网| 久久综合五月天| 国产精品爽爽ⅴa在线观看| 日本欧美在线视频| 激情av一区二区| 国产精品自拍视频| 国产精品你懂得| 最近更新的2019中文字幕| 国产91网红主播在线观看| 欧美国产亚洲精品久久久8v| 在线视频日本亚洲性| 日韩电影在线观看免费| 亚洲欧美日韩直播| 欧美xxxx18国产| 国产精品永久免费| 亚洲va久久久噜噜噜久久天堂| 青青青国产精品一区二区| 91精品国产99| 久久香蕉国产线看观看av| 国产91精品高潮白浆喷水| 美女啪啪无遮挡免费久久网站| 日韩欧美国产视频| 91在线观看免费高清| 欧美成人免费播放| 海角国产乱辈乱精品视频| 亚洲香蕉av在线一区二区三区| 国产91色在线|| 亚洲国产成人一区| 国产精品一区二区久久| www亚洲欧美| 欧美限制级电影在线观看| 国产网站欧美日韩免费精品在线观看| 亚洲综合自拍一区| 在线日韩日本国产亚洲| 在线观看成人黄色| 国产午夜精品一区理论片飘花| 57pao成人国产永久免费| 欧美日韩国产一区中文午夜| 亚洲欧美在线免费| 亚洲国产福利在线| 91在线网站视频| 亚洲人成在线一二| 色综合视频一区中文字幕| 国产一区二区三区在线播放免费观看| 美女av一区二区三区| 中文字幕精品久久久久| 欧美电影免费观看电视剧大全| 操日韩av在线电影| 色吧影院999| 性色av一区二区三区免费| 亚洲国模精品一区| 亚洲精品小视频在线观看| 亚洲国产精品一区二区三区| 久久人人爽人人爽爽久久| 日韩在线观看免费av| 亚洲免费av电影| 欧美极品在线视频| 亚洲免费福利视频| 亚洲韩国欧洲国产日产av| 欧美日本啪啪无遮挡网站| 日韩国产精品亚洲а∨天堂免|