精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺談用jQuery實現無刷新驗證碼

開發 后端
本文將介紹如何用jQuery實現無刷新驗證碼,這也是網頁設計過程中比較重要的環節,主要是遏制自動發帖機對網站的惡意損害。

1.思路:

頁面上的驗證碼圖片是servlet,采用jquery實現異步校驗信息

2.所用到的文件

VerifyCodeServlet.java   --用于生成圖片的servlet

ResultServlet.java          --用于校驗驗證碼正確性的servlet

verifyCode.js                  --校驗的js文件

jquery.js                         --jquery包里的源文件

verifyCode.jsp                --頁面

3.代碼

  1. VerifyCodeServlet.java   
  2.  
  3. Java代碼   
  4. import java.awt.Color;         
  5. import java.awt.Font;         
  6. import java.awt.Graphics2D;         
  7. import java.awt.image.BufferedImage;         
  8. import java.util.Random;         
  9.         
  10. import javax.imageio.ImageIO;         
  11. import javax.servlet.ServletException;         
  12. import javax.servlet.ServletOutputStream;         
  13. import javax.servlet.http.HttpServlet;         
  14. import javax.servlet.http.HttpServletRequest;         
  15. import javax.servlet.http.HttpServletResponse;         
  16. import javax.servlet.http.HttpSession;         
  17.         
  18. public class VerifyCodeServlet extends HttpServlet {         
  19.         
  20.     // 驗證碼圖片的寬度。         
  21.     private int width = 60;         
  22.         
  23.     // 驗證碼圖片的高度。         
  24.     private int height = 20;         
  25.         
  26.     // 驗證碼字符個數         
  27.     private int codeCount = 4;         
  28.         
  29.     private int x = 0;         
  30.         
  31.     // 字體高度         
  32.     private int fontHeight;         
  33.         
  34.     private int codeY;         
  35.         
  36.     char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',         
  37.             'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',         
  38.             'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };         
  39.         
  40.     /**       
  41.      * 初始化驗證圖片屬性       
  42.      */        
  43.     public void init() throws ServletException {         
  44.         // 從web.xml中獲取初始信息         
  45.         // 寬度         
  46.         String strWidth = this.getInitParameter("width");         
  47.         // 高度         
  48.         String strHeight = this.getInitParameter("height");         
  49.         // 字符個數         
  50.         String strCodeCount = this.getInitParameter("codeCount");         
  51.         
  52.         // 將配置的信息轉換成數值         
  53.         try {         
  54.             if (strWidth != null && strWidth.length() != 0) {         
  55.                 width = Integer.parseInt(strWidth);         
  56.             }         
  57.             if (strHeight != null && strHeight.length() != 0) {         
  58.                 height = Integer.parseInt(strHeight);         
  59.             }         
  60.             if (strCodeCount != null && strCodeCount.length() != 0) {         
  61.                 codeCount = Integer.parseInt(strCodeCount);         
  62.             }         
  63.         } catch (NumberFormatException e) {         
  64.         }         
  65.         
  66.         x = width / (codeCount + 1);         
  67.         fontHeight = height - 2;         
  68.         codeY = height - 4;         
  69.         
  70.     }         
  71.         
  72.     protected void service(HttpServletRequest req, HttpServletResponse resp)         
  73.             throws ServletException, java.io.IOException {         
  74.         
  75.         // 定義圖像buffer         
  76.         BufferedImage buffImg = new BufferedImage(width, height,         
  77.                 BufferedImage.TYPE_INT_RGB);         
  78.         Graphics2D g = buffImg.createGraphics();         
  79.         
  80.         // 創建一個隨機數生成器類         
  81.         Random random = new Random();         
  82.         
  83.         // 將圖像填充為白色         
  84.         g.setColor(Color.WHITE);         
  85.         g.fillRect(0, 0, width, height);         
  86.         
  87.         // 創建字體,字體的大小應該根據圖片的高度來定。         
  88.         Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);         
  89.         // 設置字體。         
  90.         g.setFont(font);         
  91.         
  92.         // 畫邊框。         
  93.         g.setColor(Color.BLACK);         
  94.         g.drawRect(0, 0, width - 1, height - 1);         
  95.         
  96.         // 隨機產生160條干擾線,使圖象中的認證碼不易被其它程序探測到。         
  97.         g.setColor(Color.BLACK);         
  98.         for (int i = 0; i < 160; i++) {         
  99.             int x = random.nextInt(width);         
  100.             int y = random.nextInt(height);         
  101.             int xl = random.nextInt(12);         
  102.             int yl = random.nextInt(12);         
  103.             g.drawLine(x, y, x + xl, y + yl);         
  104.         }         
  105.         
  106.         // randomCode用于保存隨機產生的驗證碼,以便用戶登錄后進行驗證。         
  107.         StringBuffer randomCode = new StringBuffer();         
  108.         int red = 0green = 0blue = 0;         
  109.         
  110.         // 隨機產生codeCount數字的驗證碼。         
  111.         for (int i = 0; i < codeCount; i++) {         
  112.             // 得到隨機產生的驗證碼數字。         
  113.             String strRand = String.valueOf(codeSequence[random.nextInt(36)]);         
  114.             // 產生隨機的顏色分量來構造顏色值,這樣輸出的每位數字的顏色值都將不同。         
  115.             red = random.nextInt(255);         
  116.             green = random.nextInt(255);         
  117.             blue = random.nextInt(255);         
  118.         
  119.             // 用隨機產生的顏色將驗證碼繪制到圖像中。         
  120.             g.setColor(new Color(red, green, blue));         
  121.             g.drawString(strRand, (i + 1) * x, codeY);         
  122.         
  123.             // 將產生的四個隨機數組合在一起。         
  124.             randomCode.append(strRand);         
  125.         }         
  126.         // 將四位數字的驗證碼保存到Session中。         
  127.         HttpSession session = req.getSession();         
  128.         session.setAttribute("validateCode", randomCode.toString());         
  129.         
  130.         // 禁止圖像緩存。         
  131.         resp.setHeader("Pragma", "no-cache");         
  132.         resp.setHeader("Cache-Control", "no-cache");         
  133.         resp.setDateHeader("Expires", 0);         
  134.         
  135.         resp.setContentType("image/jpeg");         
  136.         
  137.         // 將圖像輸出到Servlet輸出流中。         
  138.         ServletOutputStream sos = resp.getOutputStream();         
  139.         ImageIO.write(buffImg, "jpeg", sos);         
  140.         sos.close();         
  141.     }         
  142.         
  143. }      
  144. import java.awt.Color;      
  145. import java.awt.Font;      
  146. import java.awt.Graphics2D;      
  147. import java.awt.image.BufferedImage;      
  148. import java.util.Random;      
  149.      
  150. import javax.imageio.ImageIO;      
  151. import javax.servlet.ServletException;      
  152. import javax.servlet.ServletOutputStream;      
  153. import javax.servlet.http.HttpServlet;      
  154. import javax.servlet.http.HttpServletRequest;      
  155. import javax.servlet.http.HttpServletResponse;      
  156. import javax.servlet.http.HttpSession;      
  157.      
  158. public class VerifyCodeServlet extends HttpServlet {      
  159.      
  160.     // 驗證碼圖片的寬度。      
  161.     private int width = 60;      
  162.      
  163.     // 驗證碼圖片的高度。      
  164.     private int height = 20;      
  165.      
  166.     // 驗證碼字符個數      
  167.     private int codeCount = 4;      
  168.      
  169.     private int x = 0;      
  170.      
  171.     // 字體高度      
  172.     private int fontHeight;      
  173.      
  174.     private int codeY;      
  175.      
  176.     char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',      
  177.             'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',      
  178.             'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };      
  179.      
  180.     /**     
  181.      * 初始化驗證圖片屬性     
  182.      */     
  183.     public void init() throws ServletException {      
  184.         // 從web.xml中獲取初始信息      
  185.         // 寬度      
  186.         String strWidth = this.getInitParameter("width");      
  187.         // 高度      
  188.         String strHeight = this.getInitParameter("height");      
  189.         // 字符個數      
  190.         String strCodeCount = this.getInitParameter("codeCount");      
  191.      
  192.         // 將配置的信息轉換成數值      
  193.         try {      
  194.             if (strWidth != null && strWidth.length() != 0) {      
  195.                 width = Integer.parseInt(strWidth);      
  196.             }      
  197.             if (strHeight != null && strHeight.length() != 0) {      
  198.                 height = Integer.parseInt(strHeight);      
  199.             }      
  200.             if (strCodeCount != null && strCodeCount.length() != 0) {      
  201.                 codeCount = Integer.parseInt(strCodeCount);      
  202.             }      
  203.         } catch (NumberFormatException e) {      
  204.         }      
  205.      
  206.         x = width / (codeCount + 1);      
  207.         fontHeight = height - 2;      
  208.         codeY = height - 4;      
  209.      
  210.     }      
  211.      
  212.     protected void service(HttpServletRequest req, HttpServletResponse resp)      
  213.             throws ServletException, java.io.IOException {      
  214.      
  215.         // 定義圖像buffer      
  216.         BufferedImage buffImg = new BufferedImage(width, height,      
  217.                 BufferedImage.TYPE_INT_RGB);      
  218.         Graphics2D g = buffImg.createGraphics();      
  219.      
  220.         // 創建一個隨機數生成器類      
  221.         Random random = new Random();      
  222.      
  223.         // 將圖像填充為白色      
  224.         g.setColor(Color.WHITE);      
  225.         g.fillRect(0, 0, width, height);      
  226.      
  227.         // 創建字體,字體的大小應該根據圖片的高度來定。      
  228.         Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);      
  229.         // 設置字體。      
  230.         g.setFont(font);      
  231.      
  232.         // 畫邊框。      
  233.         g.setColor(Color.BLACK);      
  234.         g.drawRect(0, 0, width - 1, height - 1);      
  235.      
  236.         // 隨機產生160條干擾線,使圖象中的認證碼不易被其它程序探測到。      
  237.         g.setColor(Color.BLACK);      
  238.         for (int i = 0; i < 160; i++) {      
  239.             int x = random.nextInt(width);      
  240.             int y = random.nextInt(height);      
  241.             int xl = random.nextInt(12);      
  242.             int yl = random.nextInt(12);      
  243.             g.drawLine(x, y, x + xl, y + yl);      
  244.         }      
  245.      
  246.         // randomCode用于保存隨機產生的驗證碼,以便用戶登錄后進行驗證。      
  247.         StringBuffer randomCode = new StringBuffer();      
  248.         int red = 0green = 0blue = 0;      
  249.      
  250.         // 隨機產生codeCount數字的驗證碼。      
  251.         for (int i = 0; i < codeCount; i++) {      
  252.             // 得到隨機產生的驗證碼數字。      
  253.             String strRand = String.valueOf(codeSequence[random.nextInt(36)]);      
  254.             // 產生隨機的顏色分量來構造顏色值,這樣輸出的每位數字的顏色值都將不同。      
  255.             red = random.nextInt(255);      
  256.             green = random.nextInt(255);      
  257.             blue = random.nextInt(255);      
  258.      
  259.             // 用隨機產生的顏色將驗證碼繪制到圖像中。      
  260.             g.setColor(new Color(red, green, blue));      
  261.             g.drawString(strRand, (i + 1) * x, codeY);      
  262.      
  263.             // 將產生的四個隨機數組合在一起。      
  264.             randomCode.append(strRand);      
  265.         }      
  266.         // 將四位數字的驗證碼保存到Session中。      
  267.         HttpSession session = req.getSession();      
  268.         session.setAttribute("validateCode", randomCode.toString());      
  269.      
  270.         // 禁止圖像緩存。      
  271.         resp.setHeader("Pragma", "no-cache");      
  272.         resp.setHeader("Cache-Control", "no-cache");      
  273.         resp.setDateHeader("Expires", 0);      
  274.      
  275.         resp.setContentType("image/jpeg");      
  276.      
  277.         // 將圖像輸出到Servlet輸出流中。      
  278.         ServletOutputStream sos = resp.getOutputStream();      
  279.         ImageIO.write(buffImg, "jpeg", sos);      
  280.         sos.close();      
  281.     }      
  282.      
  283. }    
  284.  
  285.  
  286.  
  287.  
  288.  
  289. ResultServlet.java   
  290.  
  291.  
  292. Java代碼   
  293. import java.io.IOException;         
  294. import java.io.PrintWriter;         
  295.         
  296. import javax.servlet.ServletException;         
  297. import javax.servlet.http.HttpServlet;         
  298. import javax.servlet.http.HttpServletRequest;         
  299. import javax.servlet.http.HttpServletResponse;         
  300.         
  301. public class ResultServlet extends HttpServlet {         
  302.         
  303.     /**       
  304.      * The doGet method of the servlet. <br>       
  305.      *       
  306.      * This method is called when a form has its tag value method equals to get.       
  307.      *        
  308.      * @param request the request send by the client to the server       
  309.      * @param response the response send by the server to the client       
  310.      * @throws ServletException if an error occurred       
  311.      * @throws IOException if an error occurred       
  312.      */        
  313.     public void doGet(HttpServletRequest request, HttpServletResponse response)         
  314.             throws ServletException, IOException {         
  315.         
  316.         doPost(request, response);         
  317.     }         
  318.         
  319.     /**       
  320.      * The doPost method of the servlet. <br>       
  321.      *       
  322.      * This method is called when a form has its tag value method equals to post.       
  323.      *        
  324.      * @param request the request send by the client to the server       
  325.      * @param response the response send by the server to the client       
  326.      * @throws ServletException if an error occurred       
  327.      * @throws IOException if an error occurred       
  328.      */        
  329.     public void doPost(HttpServletRequest request, HttpServletResponse response)         
  330.             throws ServletException, IOException {         
  331.         
  332.         response.setContentType("text/html;charset=utf-8");         
  333.         String validateC = (String) request.getSession().getAttribute("validateCode");         
  334.         String veryCode = request.getParameter("c");         
  335.         PrintWriter out = response.getWriter();         
  336.         if(veryCode==null||"".equals(veryCode)){         
  337.             out.println("驗證碼為空");         
  338.         }else{         
  339.             if(validateC.equals(veryCode)){         
  340.                 out.println("驗證碼正確");         
  341.             }else{         
  342.                 out.println("驗證碼錯誤");         
  343.             }         
  344.         }         
  345.         out.flush();         
  346.         out.close();         
  347.     }         
  348.         
  349. }      
  350. import java.io.IOException;      
  351. import java.io.PrintWriter;      
  352.      
  353. import javax.servlet.ServletException;      
  354. import javax.servlet.http.HttpServlet;      
  355. import javax.servlet.http.HttpServletRequest;      
  356. import javax.servlet.http.HttpServletResponse;      
  357.      
  358. public class ResultServlet extends HttpServlet {      
  359.      
  360.     /**     
  361.      * The doGet method of the servlet. <br>     
  362.      *     
  363.      * This method is called when a form has its tag value method equals to get.     
  364.      *      
  365.      * @param request the request send by the client to the server     
  366.      * @param response the response send by the server to the client     
  367.      * @throws ServletException if an error occurred     
  368.      * @throws IOException if an error occurred     
  369.      */     
  370.     public void doGet(HttpServletRequest request, HttpServletResponse response)      
  371.             throws ServletException, IOException {      
  372.      
  373.         doPost(request, response);      
  374.     }      
  375.      
  376.     /**     
  377.      * The doPost method of the servlet. <br>     
  378.      *     
  379.      * This method is called when a form has its tag value method equals to post.     
  380.      *      
  381.      * @param request the request send by the client to the server     
  382.      * @param response the response send by the server to the client     
  383.      * @throws ServletException if an error occurred     
  384.      * @throws IOException if an error occurred     
  385.      */     
  386.     public void doPost(HttpServletRequest request, HttpServletResponse response)      
  387.             throws ServletException, IOException {      
  388.      
  389.         response.setContentType("text/html;charset=utf-8");      
  390.         String validateC = (String) request.getSession().getAttribute("validateCode");      
  391.         String veryCode = request.getParameter("c");      
  392.         PrintWriter out = response.getWriter();      
  393.         if(veryCode==null||"".equals(veryCode)){      
  394.             out.println("驗證碼為空");      
  395.         }else{      
  396.             if(validateC.equals(veryCode)){      
  397.                 out.println("驗證碼正確");      
  398.             }else{      
  399.                 out.println("驗證碼錯誤");      
  400.             }      
  401.         }      
  402.         out.flush();      
  403.         out.close();      
  404.     }      
  405.      
  406. }    
  407.  
  408.  
  409.  
  410.  
  411.  
  412. verifyCode.js   
  413.  
  414. Java代碼   
  415. function changeImg(){     
  416.     var imgSrc = $("#imgObj");     
  417.     var src = imgSrc.attr("src");     
  418.     imgSrc.attr("src",chgUrl(src));     
  419. }     
  420. //時間戳     
  421. //為了使每次生成圖片不一致,即不讓瀏覽器讀緩存,所以需要加上時間戳     
  422. function chgUrl(url){     
  423.     var timestamp = (new Date()).valueOf();     
  424.     urlurl = url.substring(0,17);     
  425.     if((url.indexOf("&")>=0)){     
  426.         urlurl = url + "×tamp=" + timestamp;     
  427.     }else{     
  428.         urlurl = url + "?timestamp=" + timestamp;     
  429.     }     
  430.     return url;     
  431. }     
  432.     
  433. function isRightCode(){     
  434.     var code = $("#veryCode").attr("value");     
  435.     code = "c=" + code;     
  436.     $.ajax({     
  437.         type:"POST",     
  438.         url:"resultServlet",     
  439.         data:code,     
  440.         success:callback     
  441.     });     
  442. }     
  443.     
  444. function callback(data){     
  445.     $("#info").html(data);     
  446. }    
  447. function changeImg(){  
  448.  var imgSrc = $("#imgObj");  
  449.  var src = imgSrc.attr("src");  
  450.  imgSrc.attr("src",chgUrl(src));  
  451. }  
  452. //時間戳  
  453. //為了使每次生成圖片不一致,即不讓瀏覽器讀緩存,所以需要加上時間戳  
  454. function chgUrl(url){  
  455.  var timestamp = (new Date()).valueOf();  
  456.  urlurl = url.substring(0,17);  
  457.  if((url.indexOf("&")>=0)){  
  458.   urlurl = url + "×tamp=" + timestamp;  
  459.  }else{  
  460.   urlurl = url + "?timestamp=" + timestamp;  
  461.  }  
  462.  return url;  
  463. }  
  464.  
  465. function isRightCode(){  
  466.  var code = $("#veryCode").attr("value");  
  467.  code = "c=" + code;  
  468.  $.ajax({  
  469.   type:"POST",  
  470.   url:"resultServlet",  
  471.   data:code,  
  472.   success:callback  
  473.  });  
  474. }  
  475.  
  476. function callback(data){  
  477.  $("#info").html(data);  
  478. }  
  479.  
  480.  
  481.  
  482. verifyCode.jsp   
  483.  
  484. Java代碼   
  485. <%@ page language="java" contentType="text/html; charset=UTF-8"       
  486.     pageEncoding="UTF-8"%>       
  487. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">       
  488. <html>       
  489.     <head>       
  490.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">       
  491.         <script type="text/javascript" src="js/verifyCode.js"></script>       
  492.         <script type="text/javascript" src="js/jquery.js"></script>       
  493.         <title>test verify code</title>       
  494.     </head>       
  495.     <body>       
  496.         <input id="veryCode" name="veryCode" type="text"/>       
  497.         <img id="imgObj" alt="" src="verifyCodeServlet"/>       
  498.         <a href="#" onclick="changeImg()">換一張</a>       
  499.         <input type="button" value="驗證" onclick="isRightCode()"/>       
  500.         <div id="info"></div>       
  501.     </body>       
  502. </html>      
  503. [url]http://www.javaeye.com/post/608953#[/url]   

【編輯推薦】

  1. jQuery調用WCF服務傳遞JSON對象
  2. 學習jQuery必須知道的幾種常用方法
  3. 用XML+XSLT+CSS+JQuery組建ASP.NET網站
  4. 使用jQuery和PHP構建一個受Ajax驅動的Web頁面
  5. 使用 jQuery 簡化 Ajax 開發
責任編輯:彭凡 來源: javaeye
相關推薦

2017-12-21 07:38:19

2015-09-21 15:31:05

php實現驗證碼

2021-07-22 10:25:07

JS驗證碼前端

2009-12-16 15:46:41

Ruby on rai

2013-12-02 15:25:38

jQuery插件

2024-01-29 08:32:10

Python驗證碼識別

2013-06-19 10:19:59

2020-09-29 06:43:12

Java

2009-11-23 16:59:23

PHP圖形驗證碼

2020-11-16 07:28:53

驗證碼

2009-02-09 14:17:36

2009-08-11 14:05:28

JSP驗證碼

2021-01-19 10:29:34

短信驗證碼密碼

2022-02-11 07:10:15

驗證碼

2015-03-23 17:58:04

驗證碼倒計時并行

2025-04-01 00:44:04

2022-02-02 20:21:24

短信驗證碼登錄

2021-09-02 07:26:27

Django 驗證碼Framework

2015-03-17 09:28:04

點贊
收藏

51CTO技術棧公眾號

亚洲欧美国产精品va在线观看| 一区二区三区四区激情| 91精品国产高清久久久久久| 中文字幕第20页| 欧美亚洲福利| 夜夜嗨av一区二区三区| 日韩毛片中文字幕| 亚洲成人av免费看| 色呦呦视频在线观看| 99精品在线观看视频| 国产日韩欧美综合| 69精品久久久| 欧美一区二区三区高清视频| 日韩免费观看高清完整版在线观看| 国产毛片视频网站| 三级外国片在线观看视频| 从欧美一区二区三区| 中文字幕国内精品| 极品人妻一区二区| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲天堂网中文字| 欧美一卡2卡3卡4卡无卡免费观看水多多| 粉嫩av性色av蜜臀av网站| 老牛国内精品亚洲成av人片| 亚洲欧洲成人精品av97| 精品视频一区二区| a在线观看视频| 老**午夜毛片一区二区三区 | 久久国产免费视频| 丁香婷婷久久| 欧美性xxxx极品hd欧美风情| 欧美人与动牲交xxxxbbbb| 成人77777| 91亚洲精品久久久蜜桃| av蓝导航精品导航| 91资源在线视频| 日韩精品色哟哟| 136fldh精品导航福利| 久久久久成人精品无码| 国产精品88久久久久久| 在线精品国产欧美| 国产精品亚洲无码| 欧美一区 二区| 精品乱人伦小说| 日本77777| 欧美成人毛片| 精品视频999| 黄色三级视频片| 成人va天堂| 日韩欧美在线看| 毛片在线视频播放| 91桃色在线观看| 亚洲成人黄色影院| 一卡二卡三卡视频| 久久99亚洲网美利坚合众国| 亚洲精品成a人| 成人黄色片免费| a级网站在线播放| 亚洲日本在线观看| 性生活免费观看视频| 日本成a人片在线观看| 国产精品久久久久久久久久久免费看| 天堂av一区二区| 9色在线视频| 国产精品国产馆在线真实露脸| 日本免费一区二区三区| 搞黄视频在线观看| 中文字幕在线观看不卡| 国产欧美自拍视频| 免费毛片在线看片免费丝瓜视频 | 日韩av免费网址| 99国产精品| 日韩大片在线观看视频| 2一3sex性hd| 先锋影音国产精品| 一区二区三区视频观看| 五月天色婷婷丁香| 国产精品va| 欧美性视频精品| 最近中文字幕在线观看视频| 美国十次了思思久久精品导航| 成人夜晚看av| 亚洲成人精品女人久久久| a亚洲天堂av| 成人午夜在线视频一区| 国产成人精品av在线观| eeuss鲁片一区二区三区在线观看 eeuss影院一区二区三区 | 黄视频网站免费看| 极品中文字幕一区| 国产成人精品午夜| 999久久久久| 久久精品一区二区三区中文字幕| 国产精品91一区| 国产三级伦理片| 99久久99久久精品免费看蜜桃| 色99中文字幕| 97超碰资源站在线观看| 欧美日韩亚洲91| 色一情一区二区| 国产精品白丝一区二区三区 | 黄色av网站在线播放| 亚洲综合网站在线观看| 88av.com| 超碰精品在线观看| 欧美二区在线观看| 免费无码av片在线观看| 欧美爱爱视频| 日韩成人av网址| 免费在线观看黄色小视频| 亚洲美女一区| 91免费高清视频| 一级特黄aa大片| 波多野结衣亚洲一区| 亚洲欧美久久234| 久草在线中文最新视频| 在线成人av网站| 30一40一50老女人毛片| 青青草91久久久久久久久| 午夜精品久久久久久久久久久久 | 日韩欧美不卡在线观看视频| 国产毛片久久久久久久| 欧美私人啪啪vps| 国产精品美女免费| 欧洲精品久久一区二区| 最新热久久免费视频| 欧美激情成人网| 中文字幕在线视频久| 欧美一区二区成人| 美国黄色特级片| 裸体一区二区| 国产高清一区二区三区| 久久日韩视频| 欧美色图一区二区三区| 免费黄色在线视频| 伊人久久亚洲美女图片| 99精品国产高清在线观看| 在线观看美女网站大全免费| 色偷偷88欧美精品久久久| 最新版天堂资源在线| 欧美国产免费| 91九色蝌蚪国产| 欧美日韩欧美| 欧美日韩高清一区二区不卡| 中文字幕黄色网址| 日韩激情av在线| 奇米视频888战线精品播放| 特黄毛片在线观看| 精品中文字幕久久久久久| 91精品国产乱码久久久张津瑜| 成人av资源站| 人妻少妇精品久久| 国产主播性色av福利精品一区| 久久久久国色av免费观看性色| 国产wwwxxx| 亚洲一区二区三区四区中文字幕| 久久久久久无码精品人妻一区二区| 中文精品电影| 91久久精品国产91久久性色tv| 亚洲夜夜综合| 精品精品国产高清一毛片一天堂| 久久久久久国产精品视频 | 成人手机在线免费视频| 国产亚洲午夜| 日本一区二区精品视频| 91综合国产| 日韩在线播放av| 国产av无码专区亚洲av| 亚洲专区一二三| 黄色av网址在线观看| 久久精品盗摄| 一区二区视频在线免费| 久久久久毛片免费观看| 欧美激情视频一区二区| 美女又爽又黄免费视频| 久久久精品一品道一区| 91激情视频在线| 久久精品影视| 国产伦理一区二区三区| 国产v综合v| 久久久99久久精品女同性| 精品国产亚洲一区二区麻豆| 久久久久久久久久久久久女国产乱| 中文字幕无码不卡免费视频| 日韩理论在线| αv一区二区三区| 美女一区网站| 欧美精品一区二区免费| 天堂在线中文| 91精品在线一区二区| 免费在线观看污| 久久99精品视频| 日本一区视频在线观看| 亚洲图片小说区| 91精品国产91久久久久久| 五月天婷婷在线视频| 精品国产三级电影在线观看| 久草热在线观看| 一区二区三区在线影院| b站大片免费直播| 国产精品一区二区黑丝| 国产自偷自偷免费一区 | 日本免费一区二区视频| 热久久99这里有精品| 超碰在线观看免费版| 亚洲女人天堂色在线7777| 国产精品系列视频| 亚洲欧洲国产日韩| 久久精品国产亚洲av麻豆| 国产激情一区二区三区桃花岛亚洲| 黄在线观看网站| 国内视频精品| 中文字幕一区二区中文字幕| 亚洲丁香日韩| 成人毛片网站| 在线视频成人| 国产精品成久久久久三级| 91精品国产黑色瑜伽裤| 久久激情五月丁香伊人| 国内精品一区视频| 亚洲国产欧美久久| 午夜精品久久久久久久第一页按摩| 欧美色偷偷大香| 999这里只有精品| 亚洲国产综合视频在线观看| 国产日韩精品中文字无码| 久久亚洲欧美国产精品乐播 | 国产亚洲制服色| 久久久久亚洲AV成人无码国产| 国产高清久久久久| 波多野结衣国产精品| 秋霞国产午夜精品免费视频| 欧美 激情 在线| 国产亚洲在线| 欧美丰满熟妇bbbbbb百度| 亚洲国产高清一区二区三区| 黄黄视频在线观看| **女人18毛片一区二区| 一区二区免费在线观看| 日韩电影免费网站| 日韩精品av一区二区三区| 九九视频免费观看视频精品| 久久99精品久久久久久三级| 理论片一区二区在线| 国产69精品久久久久9999apgf| 人人九九精品视频| 成人毛片网站| 国产成人精品亚洲线观看| 俄罗斯精品一区二区| 最新国产精品精品视频| 成人看片视频| 国产精品任我爽爆在线播放| 国产精品一区二区你懂得| 极品尤物一区| 麻豆av一区二区三区| 亚洲最好看的视频| 欧美一区免费视频| 成人精品影院| 国产福利片一区二区| 欧美激情 亚洲a∨综合| 国产在线视频在线| 亚洲人成免费| 成人观看免费完整观看| 日本欧美一区二区三区| 国产探花在线看| 国产一区二区三区精品欧美日韩一区二区三区| 不卡的在线视频| 国产精品88av| 极品粉嫩小仙女高潮喷水久久| 久久久综合视频| 懂色av粉嫩av浪潮av| 亚洲免费视频中文字幕| 国产一级一片免费播放| 激情成人在线视频| 91香蕉国产视频| 亚洲日本丝袜连裤袜办公室| 久久中文字幕无码| 欧美性猛xxx| 91精品视频免费在线观看| 日韩一级免费观看| 无码精品在线观看| 自拍偷拍亚洲在线| 最新超碰在线| 日韩av手机在线观看| 性欧美videos高清hd4k| 国语自产精品视频在线看| 偷拍精品精品一区二区三区| 91欧美激情另类亚洲| 看全色黄大色大片免费久久久| 日韩中文字幕av在线| 欧美精品啪啪| 国产精彩免费视频| 国产乱人伦偷精品视频免下载| 中文字幕一区二区人妻电影丶| 国产亚洲婷婷免费| 久久久久亚洲av无码专区体验| 亚洲国产成人午夜在线一区| 欧美色图一区二区| 色婷婷久久久亚洲一区二区三区| 国产精品自拍电影| 国产手机视频精品| aaa大片在线观看| 日韩免费观看在线观看| 天堂av一区| 视频一区亚洲| 亚洲清纯自拍| 91aaa精品| 久久久精品tv| 日本少妇性高潮| 6080午夜不卡| 国产乱视频在线观看| 久久久亚洲影院| 91精品福利观看| 日本高清不卡三区| 伊人精品视频| 国产精品一香蕉国产线看观看| 欧美高清性xxxx| 国产成人综合亚洲网站| 日本免费www| 福利微拍一区二区| 亚洲国产精品久久久久久6q| 色偷偷噜噜噜亚洲男人| 黑人巨大精品欧美一区二区桃花岛| 国产99视频精品免费视频36| 97久久视频| 日韩电影天堂视频一区二区| 欧美日韩国产高清| 亚洲精品国产一区二区三区| 日本一区二区三区四区| 人妻 日韩精品 中文字幕| 亚洲成人激情在线| 天天操天天操天天操| 久久久精品久久久| 欧美a一级片| 亚洲精品中文综合第一页| 日韩高清不卡一区二区| 久久丫精品国产亚洲av不卡| 亚洲成人福利片| 免费观看a视频| 欧美精品电影免费在线观看| 日韩在线观看中文字幕| 日韩不卡视频一区二区| 狠狠色丁香婷婷综合| 亚洲精品一区二区三区在线播放| 欧美三级电影一区| 日本在线视频网| 成人性教育视频在线观看| 色综合咪咪久久网| 五月天激情播播| 亚洲免费在线播放| 亚洲精品字幕在线观看| 欧美黑人性猛交| 加勒比视频一区| 免费无码国产v片在线观看| 91丨九色丨蝌蚪富婆spa| 五月天激情四射| 一色桃子一区二区| 日本午夜免费一区二区| 国产又爽又黄ai换脸| 国产精品77777竹菊影视小说| 激情五月婷婷小说| 亚洲高清免费观看高清完整版| а√天堂8资源在线| 牛人盗摄一区二区三区视频| 丝袜诱惑亚洲看片| 五月天婷婷丁香网| 欧美一级片免费看| www.综合网.com| 欧美日韩一区综合| 免费美女久久99| 日本xxxx裸体xxxx| 日韩欧美国产成人| yw在线观看| 91成人伦理在线电影| 一道本一区二区| 国产精品美女高潮无套| 欧美丰满少妇xxxxx高潮对白| 欧美24videosex性欧美| 美日韩精品免费| 久久精品国产精品亚洲综合| 综合五月激情网| 亚洲精品久久久久久下一站 | 亚洲成人精品一区| 黄色av网址在线免费观看| 91久久精品国产91久久| 亚洲精品专区| 久久免费手机视频| 欧美α欧美αv大片| 久久野战av| 看一级黄色录像| 91免费看视频| 国产欧美日韩成人| 清纯唯美日韩制服另类| 亚洲人metart人体| 国产精品300页| 91精品国产综合久久福利| 人在线成免费视频| 四虎免费在线观看视频| 91欧美一区二区| 国产哺乳奶水91在线播放| 国产a∨精品一区二区三区不卡|