精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品白浆一区二小说| 亚洲天堂一区二区在线观看| 麻豆app在线观看| 日韩国产在线一| 欧美成人午夜激情| 成年人网站免费看| 日本黄色成人| 欧美日韩性视频| 9l视频自拍9l视频自拍| 视频三区在线观看| 久久er99精品| 26uuu久久噜噜噜噜| 国产免费久久久久| 夜夜春成人影院| 欧美一区二区女人| 免费日韩视频在线观看| caopon在线免费视频| 久久久久久亚洲综合| 97久久天天综合色天天综合色hd| 免费黄色片视频| 在线国产精品一区| www.xxxx精品| 久久精品国产亚洲av麻豆| 精品视频一二| 欧美老女人在线| 欧美日韩激情视频在线观看 | 亚洲欧美日韩另类| a级大片免费看| 中韩乱幕日产无线码一区| 午夜欧美一区二区三区在线播放| 国产精品久久成人免费观看| 在线观看黄色av| 久久久综合精品| 精品综合在线| 秋霞av鲁丝片一区二区| 国产精品一级黄| 91精品久久久久久久久久入口| 成人小视频在线播放| 国产视频久久| 欧美一级黑人aaaaaaa做受| 黄色一级视频在线观看| 亚洲国产一成人久久精品| 中文字幕亚洲无线码a| 中文字幕一区二区三区人妻| 婷婷成人综合| 亚洲成人激情视频| 一区二区三区人妻| 免费看一区二区三区| 777奇米成人网| 极品粉嫩美女露脸啪啪| 久久精品嫩草影院| 欧美视频在线一区二区三区| 91视频免费版污| 精品3atv在线视频| 色综合久久六月婷婷中文字幕| 黄色国产一级视频| 日产福利视频在线观看| 欧美日韩国产丝袜美女| 春日野结衣av| 日韩三区在线| 欧美日韩和欧美的一区二区| 潘金莲激情呻吟欲求不满视频| 成人污版视频| 日韩精品一区二区三区视频在线观看| 绯色av蜜臀vs少妇| av成人男女| 亚洲高清久久网| 久久久无码人妻精品一区| 国产成人精品三级高清久久91| 亚洲亚裔videos黑人hd| 国产一二三四区在线| 欧美hd在线| 欧美精品免费在线| 久久久国产高清| 喷白浆一区二区| 91在线|亚洲| 亚洲乱码精品久久久久..| www.av亚洲| 欧美一区二区三区成人久久片| 69久久精品| 一区二区三区四区蜜桃| 成人毛片一区二区| 91精品店在线| 日韩一区二区在线看片| 黄色污在线观看| 俺要去色综合狠狠| 欧美精品一区三区| 亚洲精品1区2区3区| 美女在线一区二区| 国产一区二区三区四区五区在线| 国产永久免费高清在线观看视频| 亚洲婷婷综合色高清在线| 黄页免费在线观看视频| 国产成人精品一区二区三区在线| 日韩视频一区二区三区| 亚洲av无码一区二区三区人 | 精品这里只有精品| 成人在线免费av| 欧美精品一区二区三区高清aⅴ| 欧美另类z0zx974| 国产综合视频| 国产精品欧美激情| 人妻一区二区三区| 国产精品久久久久天堂| 人人妻人人添人人爽欧美一区| 韩国精品视频在线观看| 亚洲黄色www| 免费成人深夜夜行网站| 久久久国产精品一区二区中文| 亚洲自拍偷拍第一页| 久久国产精品高清一区二区三区| 伊人婷婷欧美激情| 91香蕉视频污版| 美女呻吟一区| 久久91精品国产91久久久| 成人黄色片在线观看 | 日韩中文字幕有码| 亚洲经典三级| 99一区二区| 日本成人网址| 欧美性色欧美a在线播放| 在线观看av中文字幕| 欧美日韩国产成人精品| 国产精品一区专区欧美日韩| 免费在线视频你懂得| 亚洲成av人片观看| 欧美图片自拍偷拍| 国产精品99视频| 国产精品久久久久99| 深夜福利视频一区| 五月天欧美精品| 无码人妻精品一区二区三| 中文视频一区| 国产欧洲精品视频| 777电影在线观看| 欧美中文一区二区三区| 成年人网站免费看| 亚洲免费影院| 久久久久久艹| 亚洲综合电影| 亚洲人高潮女人毛茸茸| 天天干天天干天天操| 91在线免费播放| 大肉大捧一进一出好爽视频| 欧美一区二区三区红桃小说| 8x拔播拔播x8国产精品| 亚洲欧洲精品视频| 欧美丝袜一区二区| 老司机福利av| 日韩电影免费在线| 日韩中文不卡| 欧美综合社区国产| 日韩中文字幕在线视频| 中文无码精品一区二区三区 | 日韩精品视频播放| 91在线观看高清| 亚洲人成色77777| 欧美久久精品一级c片| 国产精品国产三级国产专播精品人| 黄色影院在线播放| 欧美午夜一区二区三区| 国产美女久久久久久| 国产精品亚洲专一区二区三区| www.avtt| 国产伦精品一区二区三区千人斩| 国产精品色视频| 久久精品视频观看| 精品久久国产97色综合| 青青国产在线观看| 中文字幕精品三区| 亚欧精品在线视频| 在线成人欧美| 日韩欧美一区二区三区四区| 国产精品日韩精品在线播放| 992tv成人免费视频| 国产福利小视频在线| 91精品国产综合久久久久久 | 丰腴饱满的极品熟妇| 免费高清在线视频一区·| 公共露出暴露狂另类av| 麻豆精品99| 国产在线精品成人一区二区三区| 自由的xxxx在线视频| 亚洲精品一区av在线播放| 91在线视频国产| 性做久久久久久| 三级黄色片在线观看| 成人精品小蝌蚪| 国产一区二区在线免费播放| 午夜日韩福利| 日本不卡二区| 激情av综合| 91精品视频网站| 亚洲精品中文字幕| 蜜臀久久99精品久久久无需会员| 外国精品视频在线观看 | 日本aⅴ精品一区二区三区| 伊人网在线免费| 精品国产日韩欧美| 国产精品美女诱惑| 日韩黄色三级| 欧美一级视频在线观看| av免费在线观| 中文字幕不卡av| 天堂在线中文| 欧美精品一区二区三区蜜臀| 国产精品久久久久久免费免熟 | 国产又粗又猛又爽又黄91| 天天综合天天做天天综合| 黄色香蕉视频在线观看| 91视视频在线观看入口直接观看www| 午夜剧场高清版免费观看 | 国产精品福利在线| xxx.xxx欧美| 久久久999精品视频| 国产女主播在线写真| 亚洲福利视频网| 国产婷婷在线视频| 欧美人与性动xxxx| 中文字幕一区二区三区四区欧美| 日韩av网站在线播放| 久久久91精品国产一区二区精品 | 日韩精品福利一区二区三区| 91精品国产综合久久久久久丝袜| 国产成人午夜性a一级毛片| 欧美又大又硬又粗bbbbb| eeuss鲁一区二区三区| 久久99久久99精品中文字幕| 久草免费在线| 精品国偷自产在线视频| 婷婷视频在线| 中文字幕亚洲情99在线| 国产视频网站在线| 亚洲人精品午夜在线观看| 深夜福利视频在线观看| 亚洲国产天堂久久国产91| 亚洲av综合色区无码一区爱av| 91精品国产aⅴ一区二区| 91无套直看片红桃| 欧美精品在线观看播放| 色一情一乱一伦| 欧美性生交xxxxxdddd| 久久亚洲天堂网| 欧美性猛交xxxx| 国产中文字幕视频| 91精品福利视频| 波多野结衣视频免费观看| 欧洲在线/亚洲| 中文字幕在线网站| 7777精品久久久大香线蕉| av老司机久久| 精品日韩欧美一区二区| 女人18毛片一区二区三区| 亚洲成av人乱码色午夜| 无码精品人妻一区二区| 亚洲精品videossex少妇| 青青青免费视频在线2| 亚洲人成五月天| 午夜不卡视频| 日韩精品a在线观看91| 香蕉精品999视频一区二区| 国产精品久久久久7777| 一本色道久久综合亚洲精品不| 18岁网站在线观看| 久久一区二区三区四区五区| mm1313亚洲国产精品无码试看| 免费在线一区观看| 久久婷婷中文字幕| 粉嫩av一区二区三区粉嫩| 国产精品无码在线| 国产欧美视频一区二区| 黑人狂躁日本娇小| 亚洲国产精品一区二区www在线| 日本视频在线观看免费| 欧美视频三区在线播放| 国产xxxx在线观看| 亚洲国产精品成人精品| 中文字幕在线视频区| 久久99精品国产99久久6尤物| 女海盗2成人h版中文字幕| 国产精品美女久久| 7m精品国产导航在线| 欧美黄色直播| 欧美激情四色| av网站在线观看不卡| 久久电影网站中文字幕| 先锋资源av在线| 国产精品日产欧美久久久久| 国产精品18p| 欧美体内she精视频| 熟妇人妻中文av无码| 中文字幕亚洲一区| 电影在线观看一区| 91网站免费观看| 无码日韩精品一区二区免费| 中国一级大黄大黄大色毛片| 久久综合影视| 高清中文字幕mv的电影| 中文字幕中文在线不卡住| 日韩少妇高潮抽搐| 欧美一级片在线观看| 蜜桃视频在线免费| 欧美精品激情在线| 色8久久久久| 欧美亚洲丝袜| 国一区二区在线观看| 污污网站免费观看| 91论坛在线播放| 久视频在线观看| 欧美日韩国产小视频在线观看| 亚洲av成人无码网天堂| 久久97精品久久久久久久不卡| 97人人做人人爽香蕉精品| 精品国产一区二区三区日日嗨| 欧美精品一线| 国模私拍视频在线观看| 久久久久久**毛片大全| 日韩xxxxxxxxx| 精品女同一区二区| 国内精品久久久久久野外| 国产精品视频中文字幕91| 日韩有码中文字幕在线| 欧美一级免费播放| 国产福利一区二区三区| 黄色录像二级片| 欧美日韩国产123区| yw193.com尤物在线| 国产91精品在线播放| 亚洲精品蜜桃乱晃| 欧美 日本 亚洲| 91亚洲精品久久久蜜桃| 日韩精品在线免费看| 亚洲国产精品电影| hd国产人妖ts另类视频| 国产三区精品| 99re国产精品| 亚洲中文字幕一区| 欧美视频一区二区三区…| 亚洲欧美色视频| 欧美怡春院一区二区三区| 亚洲成a人片77777在线播放| 无码精品a∨在线观看中文| 99久久综合国产精品| 一级片中文字幕| 亚洲乱码av中文一区二区| 在线天堂资源www在线污| 蜜桃网站成人| 日韩不卡一二三区| 国产毛片欧美毛片久久久| 欧美性欧美巨大黑白大战| 在线观看h片| 91免费在线视频网站| 综合久久精品| 国产69视频在线观看| 欧美日韩国产一区中文午夜| 国内精品在线视频| 国产日韩中文字幕在线| 天天色综合色| 国产精久久久久| 无吗不卡中文字幕| 免费成人av电影| 91精品久久久久久久久不口人| 欧美在线看片| 国产成人无码一区二区在线观看| 日韩欧美成人精品| 在线免费观看黄色网址| 亚洲a成v人在线观看| 在线视频观看日韩| 亚洲第一成人网站| 欧美视频三区在线播放| 亚洲夜夜综合| 蜜桃传媒视频麻豆一区| 蜜臀久久久99精品久久久久久| 青青草免费av| 亚洲天堂av高清| 国产亚洲亚洲国产一二区| 久久久久久久中文| 日本一区二区三级电影在线观看| 国产chinasex对白videos麻豆| 91国内精品久久| jiujiure精品视频播放| 少妇献身老头系列| 色狠狠一区二区三区香蕉| а√资源新版在线天堂| 精品一区二区久久久久久久网站| 免费观看在线色综合| 一级aaa毛片| 色婷婷综合久久久久| 粉嫩精品导航导航| 污视频免费在线观看网站| 亚洲一区二区三区影院| 国产51人人成人人人人爽色哟哟| 国产精华一区| 美女视频黄免费的久久| 亚洲免费激情视频| 精品国产一区二区三区久久狼黑人 | 亚洲一区二区三区小说| 国产爆初菊在线观看免费视频网站| 成人蜜桃视频| 久久99最新地址|