婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > jsp頁面驗證碼demo

jsp頁面驗證碼demo

熱門標簽:百度地圖添加標注圖標樣式 地圖標注市場怎么樣 企業怎么在聯通申請400電話 泰州泰興400電話 怎么申請 南昌市地圖標注app 如何用中國地圖標注數字點 南京新思維電話機器人 聊城智能電銷機器人外呼 好操作的電話機器人廠家

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

程序結構圖:

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實現登錄功能之添加驗證碼
  • JSP驗證碼動態生成方法
  • jsp+Servlet編程實現驗證碼的方法
  • jsp+ajax實現的局部刷新較驗驗證碼(onblur事件觸發較驗)
  • jsp實現簡單驗證碼的方法
  • JSP 制作驗證碼的實例詳解

標簽:自貢 銅川 開封 臨汾 吉林 白銀 山南 烏蘭察布

巨人網絡通訊聲明:本文標題《jsp頁面驗證碼demo》,本文關鍵詞  jsp,頁面,驗證,碼,demo,jsp,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《jsp頁面驗證碼demo》相關的同類信息!
  • 本頁收集關于jsp頁面驗證碼demo的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91在线porny国产在线看| 91福利社在线观看| 91啪九色porn原创视频在线观看| 91精品视频网| 成人免费av资源| 97国产精品videossex| 国产成人日日夜夜| 精品欧美一区二区在线观看| 亚洲123区在线观看| 精品视频在线视频| 日日摸夜夜添夜夜添精品视频| 99久久综合国产精品| 日本一区二区电影| 成人午夜av影视| 国产精品久久免费看| 99久久伊人精品| 亚洲美女视频一区| 色乱码一区二区三区88| 亚洲欧美一区二区久久| 欧美色图天堂网| 日本一不卡视频| 久久精品亚洲精品国产欧美| 成人国产精品免费观看动漫| 亚洲成a人v欧美综合天堂| 日韩精品一区二区三区视频播放 | 欧美精品一区二区三区一线天视频| 日本欧美一区二区| 亚洲国产电影在线观看| 91免费版在线| 国产成人在线免费观看| 亚洲成av人片在www色猫咪| 欧美国产丝袜视频| 91精品国产综合久久久久久漫画| 国产91丝袜在线观看| 亚洲一级二级在线| 欧美国产欧美综合| 亚洲人成亚洲人成在线观看图片| 欧美日韩亚州综合| 色婷婷久久综合| 国产美女精品一区二区三区| 日韩精品欧美精品| 一区二区三区在线视频观看58 | 蜜臀精品一区二区三区在线观看| 日韩欧美中文字幕一区| 在线免费观看日本欧美| 99久久综合色| 91亚洲国产成人精品一区二三| 国产一区二区在线免费观看| 美女视频黄 久久| 日本午夜精品一区二区三区电影| 同产精品九九九| 日韩电影免费在线看| 亚洲精品日韩一| 日日骚欧美日韩| 国产美女在线观看一区| 成人丝袜高跟foot| 欧美体内she精视频| 7777精品久久久大香线蕉| 日韩亚洲欧美高清| 久久精品在线免费观看| 国产精品久久午夜| 性欧美大战久久久久久久久| 青青国产91久久久久久| 国产一区二区视频在线| caoporm超碰国产精品| 亚洲大片在线观看| 欧美在线不卡一区| 色综合久久66| 欧美一级欧美三级| 国产精品视频看| 亚洲午夜久久久| 国内精品久久久久影院薰衣草 | 国产成人精品免费在线| 久久久久久亚洲综合| 亚洲免费色视频| 国产福利91精品| 在线电影一区二区三区| 欧美国产日韩一二三区| 日产精品久久久久久久性色| 国产美女在线精品| 欧美电视剧免费观看| 国产精品免费免费| 久久精品国产免费| 欧美喷水一区二区| 尤物视频一区二区| av电影在线不卡| 国产精品美女一区二区在线观看| 国产综合色视频| 国产日韩欧美一区二区三区乱码| 免费观看30秒视频久久| 欧美天天综合网| 午夜电影久久久| 精品久久久久久久久久久久包黑料| 丝袜诱惑制服诱惑色一区在线观看 | 欧美影院午夜播放| 一区二区在线观看免费视频播放| 99久久久精品| 亚洲一区欧美一区| 欧美一区二区在线不卡| 日韩av网站在线观看| 欧美电影免费观看高清完整版在 | 一本久道中文字幕精品亚洲嫩 | 国产精品家庭影院| 91在线观看免费视频| 亚洲精品videosex极品| 欧美视频在线观看一区二区| 日本视频一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 久久精品免视看| 一本久道中文字幕精品亚洲嫩| 日韩av中文在线观看| 精品少妇一区二区三区| 91精品福利在线| 国产91在线|亚洲| 日本成人在线网站| 亚洲一区二区视频在线观看| 精品久久一区二区三区| 欧美日本在线一区| 99久久精品免费看| 国产精品原创巨作av| 欧美aaaaa成人免费观看视频| 亚洲免费在线观看视频| 欧美激情综合网| 久久综合色天天久久综合图片| 在线观看免费亚洲| 99精品视频一区| 99久久免费精品| 99r国产精品| 欧美在线一区二区| 欧美亚洲国产一区在线观看网站| 99综合电影在线视频| 蜜臀久久99精品久久久久久9| 国产精品一级片| 欧美成人激情免费网| 欧美精品久久一区| 欧美精品乱码久久久久久| 欧美日韩国产首页在线观看| 欧洲国产伦久久久久久久| 在线免费一区三区| 在线观看一区日韩| 欧美亚洲动漫另类| 91麻豆精品91久久久久久清纯 | 精品国产一区二区在线观看| 99久久久无码国产精品| 欧美无砖砖区免费| 日韩三级电影网址| 国产精品视频第一区| 亚洲一区二区三区精品在线| 午夜视频在线观看一区| 国产精品中文有码| 欧美一a一片一级一片| 7878成人国产在线观看| 国产欧美精品国产国产专区| 成人短视频下载| 欧美日韩卡一卡二| 久久久一区二区三区| 亚洲欧美激情一区二区| 麻豆精品一区二区av白丝在线| 国产成人精品在线看| 884aa四虎影成人精品一区| 国产精品久久久久永久免费观看| 一级特黄大欧美久久久| 国产综合久久久久影院| 欧美日韩国产小视频| 亚洲乱码中文字幕| 国产suv一区二区三区88区| 5566中文字幕一区二区电影| 中文字幕一区二区三区色视频| 视频一区二区三区入口| 成人综合在线观看| 欧美成人乱码一区二区三区| 亚洲国产精品久久人人爱蜜臀| gogogo免费视频观看亚洲一| 久久一区二区三区国产精品| 轻轻草成人在线| 日韩欧美国产wwwww| 久久精品国产亚洲a| 日韩精品在线一区二区| 日韩精品国产精品| 欧美电影免费提供在线观看| 日韩电影一区二区三区| 日韩欧美电影一区| 久久99久久精品欧美| 久久久久久一级片| 成人黄色免费短视频| 亚洲激情图片小说视频| 欧洲精品中文字幕| 青草国产精品久久久久久| xnxx国产精品| 99久久综合99久久综合网站| 亚洲午夜一二三区视频| 日韩亚洲欧美在线| www.亚洲在线| 亚洲va韩国va欧美va精品| 精品国产乱码久久久久久影片| 国产一区二区三区久久悠悠色av| 中文字幕亚洲视频| 日韩视频中午一区| 91玉足脚交白嫩脚丫在线播放| 日韩影视精彩在线|