日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

jsp實現簡單圖片驗證碼功能

瀏覽:501日期:2022-06-07 17:43:02

本文實例為大家分享了jsp實現簡單圖片驗證碼的具體代碼,供大家參考,具體內容如下

一、實現的功能分析

(1)在登陸頁面加驗證碼的功能,起到一定的安全性。在輸入正確的驗證碼,用戶名和密碼的情況下,才可以實現登錄。
(2)實現查詢數據庫的功能。在登陸后的頁面中,顯示用戶名和密碼,并且設置有一個超鏈接,實現查詢數據庫的功能。
(3)代碼核心是:隨機生成驗證碼,并且顯示在頁面上。同時要和輸入框中的輸入驗證碼進行校驗。
(4)主頁面使用img標簽的src屬性引入驗證頁面的jsp文件。
(5)驗證碼的實現頁面使用BufferedImage類的方法產生圖片。
(6)使用Graphics類的各種方法實現驗證碼的構成。

二、代碼實現

(1)登錄頁面:index.jsp文件。

<%@ page language="java" contentType="text/html; charset=utf-8"? ? pageEncoding="utf-8"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>登錄頁面</title></head><body><form action="LoginServlet" method="post">? ? ? ?用戶名:<input name="username" type="text" value=""/><br/><br/>? ? ? ?密碼:<input name="password" type="password" value=""/><br/><br/>? ? ? ?? ? ? ?? ? ? ? 驗證碼: <input type="text" name="checkCode" height="20px " value=""/>? ? ? <img src="CodeServlet"/><span>${error_code}</span><br/>? ? ? ?<input type="submit" value="提交"></form></body></html>

(2)登錄后的頁面:user.jsp文件。

<%@ page language="java" contentType="text/html; charset=utf-8"? ? pageEncoding="utf-8"%><%@ ?page import = "com.entity.Author"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>顯示登錄用戶的用戶名和密碼頁面</title></head><body><% ?? ? //內置對象? ? request.setCharacterEncoding("utf-8");? ? //獲取交互層放入session中的obj? ? Author obj = (Author)session.getAttribute("authorInfo");? ??? ? if(obj != null){? ? ?? ?out.print("<p>用戶名:"+obj.getName()+"</p>");? ? ?? ?out.print("<p>密碼:"+obj.getId()+"</p>");? ? }? ? else{? ? ?? ?response.sendRedirect("index.jsp");? ? }%><br/><a href="AuthorServlet">用戶信息查詢 </a></body></html>

(3)實現數據查詢頁面:ueslist.jsp文件。

<%@ page language="java" contentType="text/html; charset=utf-8"? ? pageEncoding="utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html><html><head><meta charset="utf-8"><title>查詢信息顯示頁面</title></head><body><table border="1">? <tr>? ? ? ? ?<td>編號</td>? ? ? ? ?<td>名稱</td>? ? ? ? ?<td>價格</td>? ? ? ? ?<td>數量</td>? ? ? ? ?<td>日期</td>? ? ? ? ?<td>風格</td>? </tr>??? ?<c:forEach items="${authorList}" var="author">? <tr>? ? <td>${author.id}</td>? ? <td>${author.name }</td>? ? <td>${author.price }</td>? ? <td>${author.num }</td>? ? <td>${author.dates}</td>? ? <td>${author.style}</td>? </tr>? </c:forEach></table></body></html>

(4)定義一個Author類,用于接收數據庫中的元素。

package com.entity;//用于獲取數據庫中的元素對象public class Author {?? ?private int id;?? ?private String name;?? ?private int price ;?? ?private int num;?? ?private String dates;?? ?private String style;?? ?public int getId() {?? ??? ?return id;?? ?}?? ?public void setId(int id) {?? ??? ?this.id = id;?? ?}?? ?public String getName() {?? ??? ?return name;?? ?}?? ?public void setName(String name) {?? ??? ?this.name = name;?? ?}?? ?public int getPrice() {?? ??? ?return price;?? ?}?? ?public void setPrice(int price) {?? ??? ?this.price = price;?? ?}?? ?public int getNum() {?? ??? ?return num;?? ?}?? ?public void setNum(int num) {?? ??? ?this.num = num;?? ?}?? ?public String getDates() {?? ??? ?return dates;?? ?}?? ?public void setDates(String dates) {?? ??? ?this.dates = dates;?? ?}?? ?public String getStyle() {?? ??? ?return style;?? ?}?? ?public void setStyle(String style) {?? ??? ?this.style = style;?? ?}}

(5)登錄頁面的交互層:LoginServlet.java文件。用于登錄檢驗和驗證碼匹配。

//交互層(客戶端和服務器的交互)package com.servlet;import java.io.IOException;import java.sql.SQLException;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 javax.servlet.http.HttpSession;import com.dao.AuthorDao;import com.entity.Author;/**?* Servlet implementation class LoginServlet?*/@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {?? ?private static final long serialVersionUID = 1L;? ? ? ?? ? /**? ? ?* @see HttpServlet#HttpServlet()? ? ?*/? ? public LoginServlet() {? ? ? ? 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?? ??? ?//內置對象request,response?? ??? ?request.setCharacterEncoding("utf-8");?? ??? ??? ??? ?HttpSession session = request.getSession();?? ??? ??? ??? ?//獲取用戶輸入驗證碼?? ??? ?String checkCode = request.getParameter("checkCode");?? ??? ?//獲取session中的驗證碼,也就是CodeServlet中生成的四個字符?? ??? ?String sessionCode = (String)session.getAttribute("sCode");?? ??? ??? ??? ??? ??? ?//驗證碼正確?? ??? ?if(checkCode.equals(sessionCode)) {?? ??? ??? ?//獲取表單數據?? ??? ??? ?String username = request.getParameter("username");?? ??? ??? ?int password = Integer.valueOf(request.getParameter("password"));?? ??? ??? ??? ??? ??? ?//判斷用戶信息是否正確,查詢數據庫獲取用戶信息?? ??? ??? ? AuthorDao ad = new AuthorDao();?? ??? ? ? ? Author obj = ad.check(username, password);?? ??? ? ? ???? ??? ? ? ? //判斷?? ??? ? ? ? if(obj != null) {?? ??? ? ? ??? ???? ??? ? ? ??? ? //重新放入用戶信息?? ??? ? ? ?//?? ? HttpSession session = request.getSession();?? ??? ? ? ??? ? session.setAttribute("authorInfo", obj);?? ??? ? ? ??? ? //設置session的有效期為10秒?? ??? ? ? ??? ? session.setMaxInactiveInterval(10);?? ??? ? ? ??? ???? ??? ? ? ??? ? //頁面轉發?? ??? ? ? ??? ? response.sendRedirect("user.jsp");?? ??? ? ? ? }?? ??? ? ? ? else {?? ??? ? ? ??? ???? ??? ? ? ??? ? //頁面重定向到登錄頁面?? ??? ? ? ??? ? response.sendRedirect("index.jsp");?? ??? ? ? ? }?? ??? ?}?? ??? ?else {?? ??? ??? ?//驗證碼不正確?? ??? ??? ?request.setAttribute("error_code", "驗證碼不匹配");?? ??? ??? ?request.getRequestDispatcher("index.jsp").forward(request, response);?? ??? ?}?? ?}?? ??? ?/**?? ? * @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);?? ?}}

(6)數據庫查詢的交互層:AuthorServlet.java文件。

package com.servlet;import java.io.IOException;import java.util.List;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 com.dao.AuthorDao;import com.entity.Author;/**?* Servlet implementation class AuthorServlet?*/@WebServlet("/AuthorServlet")public class AuthorServlet extends HttpServlet {?? ?private static final long serialVersionUID = 1L;? ? ? ?? ? /**? ? ?* @see HttpServlet#HttpServlet()? ? ?*/? ? public AuthorServlet() {? ? ? ? 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?? ??? ?//設置編碼方式?? ??? ? request.setCharacterEncoding("utf-8");?? ??? ???? ??? ? //查詢用戶列表?? ??? ? AuthorDao ad = new AuthorDao();?? ??? ? //將Dao層中的結果放入list中?? ??? ? List<Author> list = ad.queryAuthorList();?? ??? ? request.setAttribute("authorList", list);?? ??? ???? ??? ? //請求轉發的方式將查詢結果放入request中,再將超鏈接直接訪問AuthorServlet就將信息顯示出來了。?? ??? ? request.getRequestDispatcher("uselist.jsp").forward(request, response);?? ??? ???? ??? ???? ?}?? ?/**?? ? * @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);?? ?}}

(7)定義一個AuthorDao類實現查詢數據庫和檢驗登錄的用戶名和密碼。

//用于檢驗登錄頁面所填入信息是否正確package com.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.entity.Author;public class AuthorDao {?? ??? ?public Author check(String username ,int password)?? ?{?? ??? ?Author obj = null ;?? ??? ?try {?? ??? ??? ??? ?DBConnection db = new DBConnection();?? ??? ??? ??? ?//獲取數據庫連接?? ??? ??? ??? ?Connection conn = db.getConn();?? ??? ??? ??? ?//設置要執行的數據庫語句?? ??? ??? ??? ?String sql = "select *from furnitures where name = ? and id = ?";?? ??? ??? ??? ??? ??? ??? ??? ?PreparedStatement ps = ?conn.prepareStatement(sql);?? ??? ??? ??? ?//設置用戶名和密碼放入sql語句?? ??? ??? ??? ?ps.setString(1, username);?? ??? ??? ??? ?ps.setInt(2, password);?? ??? ??? ??? ??? ??? ??? ??? ?//執行sql查詢語句 , 并將執行結果放入結果集中?? ??? ??? ? ? ?ResultSet rs = ps.executeQuery();?? ??? ??? ??? ??? ??? ??? ? ? ?//用戶名和密碼都正確?? ??? ??? ? ? ?if(rs.next()) {?? ??? ??? ? ? ??? ??? ??? ??? ? ? ??? ?//新創建一個obj 將查詢結果放入?? ??? ??? ? ? ??? ?obj = new Author();?? ??? ??? ? ? ??? ?obj.setId(rs.getInt(1));?? ??? ??? ? ? ??? ?obj.setName(rs.getString(2));?? ??? ??? ? ? ??? ?obj.setPrice(rs.getInt(3));?? ??? ??? ? ? ??? ?obj.setNum(rs.getInt(4));?? ??? ??? ? ? ??? ?obj.setDates(rs.getString(5));?? ??? ??? ? ? ??? ?obj.setStyle(rs.getString(6));?? ??? ??? ? ? ?}?? ? ???? ??? ?} catch (SQLException e) {?? ??? ??? ?// TODO Auto-generated catch block?? ??? ??? ?e.printStackTrace();?? ??? ?}?? ??? ??? ??? ?return obj;? }?? ??? ?public List<Author> queryAuthorList(){?? ??? ??? ??? ??? ??? ?Author obj = null;?? ??? ?//定義一個list集合,用于存放查詢結果?? ??? ?List<Author> list = new ArrayList<Author>() ;?? ??? ?try {?? ??? ??? ??? ??? ??? ??? ??? ??? ?DBConnection db = new DBConnection();?? ??? ??? ?//獲取數據庫連接?? ??? ??? ?Connection conn = db.getConn();?? ??? ??? ?//設置數據庫要查詢的語句?? ??? ??? ?String sql = "select *from furnitures ";?? ??? ??? ??? ??? ??? ?PreparedStatement ps = conn.prepareStatement(sql);?? ??? ??? ??? ??? ??? ?//執行數據庫查詢語句,并將查詢結果放入結果集?? ??? ??? ?ResultSet rs = ps.executeQuery();?? ??? ??? ??? ??? ??? ?//利用循環將obj放入list集合中?? ??? ??? ?while(rs.next()) {?? ??? ??? ??? ?obj = new Author();?? ??? ??? ??? ??? ??? ??? ??? ?obj.setId(rs.getInt(1));?? ??? ??? ??? ?obj.setName(rs.getNString(2));?? ??? ??? ??? ?obj.setPrice(rs.getInt(3));?? ??? ??? ??? ?obj.setNum(rs.getInt(4));?? ??? ??? ??? ?obj.setDates(rs.getString(5));?? ??? ??? ??? ?obj.setStyle(rs.getString(6));?? ??? ??? ??? ??? ??? ??? ??? ?//將obj加入到list?? ??? ??? ??? ??? ??? ??? ??? ?list.add(obj);?? ??? ??? ??? ??? ??? ??? ?}?? ??? ??? ??? ??? ??? ??? ??? ?} catch (SQLException e) {?? ??? ??? ?// TODO Auto-generated catch block?? ??? ??? ?e.printStackTrace();?? ??? ?}?? ??? ??? ??? ??? ??? ?return list;?? ?}?? ?}

(8)定義一個驗證碼生成CodeServlet類,用于生成驗證碼。

package com.servlet;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;@WebServlet("/CodeServlet")public class CodeServlet extends HttpServlet{?? ??? ?//定義驗證碼的源碼?? ?private static final String str ="abcdefghijklmnopqrstuvwxyaABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";?? ??? ?//定義隨機數?? ?private Random random = new Random();?? ??? ?//隨機生成四個字符?? ?public String getStr()?? ?{?? ??? ?String s = "";?? ??? ?int len = str.length();?? ??? ?for(int i=0;i<4;i++) {?? ??? ??? ?s+=str.charAt(random.nextInt(len));?? ??? ?}?? ??? ?return s;?? ?}?? ??? ?//隨機顏色?? ?public Color getColor() {?? ??? ??? ??? ?int red = random.nextInt(256);?? ??? ?int green = random.nextInt(256);?? ??? ?int blue = random.nextInt(256);?? ??? ?Color color = new Color(red,green,blue);?? ??? ??? ??? ?return color;?? ?}?? ?@Override?? ?protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {?? ??? ?// TODO Auto-generated method stub?? ??? ??? ??? ??? ??? ?//生成驗證碼圖片?? ??? ?//畫板?? ??? ?BufferedImage image = new BufferedImage(70,20,BufferedImage.TYPE_INT_RGB );?? ??? ?//畫筆?? ??? ?Graphics pen = ?image.getGraphics();?? ??? ?//矩形?? ??? ?pen.fillRect(0, 0, 70, 20);?? ??? ?//字體?? ??? ?pen.setFont(new Font("微軟雅黑",Font.BOLD,20));?? ??? ??? ??? ?//獲取4個字符?? ??? ?String code = getStr();?? ??? ??? ??? ?//繪制圖片?? ??? ?for(int i=0;i<code.length();i++) {?? ??? ??? ?pen.setColor(getColor());?? ??? ??? ?pen.drawString(String.valueOf(code.charAt(i)), i*15+5, 20);;?? ??? ?}?? ??? ??? ??? ?//response對象繪制圖片到頁面,Servle輸出流進行圖片的輸出?? ??? ?ServletOutputStream sos = resp.getOutputStream();?? ??? ?ImageIO.write(image, "png", sos);?? ??? ??? ??? ?sos.flush();?? ??? ?sos.close();?? ??? ??? ??? ?//驗證碼放入session?? ??? ?HttpSession session = req.getSession();?? ??? ?session.setAttribute("sCode", code);?? ??? ??? ?}?? ?@Override?? ?protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {?? ??? ?// TODO Auto-generated method stub?? ??? ?doPost(req, resp);?? ?}}

(9)創建DBConnectoin.java類用戶獲取數據庫連接。(我用的是mysql)

//獲取數據庫連接package com.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DBConnection {?? ?private static String username="填入自己的數據庫名";?? ?private static String password="填入自己的數據庫密碼";?? ?private static String driver = "com.mysql.jdbc.Driver";?? ?private static String url="jdbc:mysql://localhost:3306/已經創建數據庫名";?? ??? ?private Connection conn;?? ??? ?static {?? ??? ?try {?? ??? ??? ?//加載驅動,捕獲異常?? ??? ??? ?Class.forName(driver);?? ??? ?} catch (ClassNotFoundException e) {?? ??? ??? ?// TODO Auto-generated catch block?? ??? ??? ?e.printStackTrace();?? ??? ?}?? ?}?? ??? ?public DBConnection () throws SQLException {?? ??? ?//連接數據庫?? ??? ?conn = DriverManager.getConnection(url,username,password);?? ?}?? ??? ?//用于獲取conn?? ?public Connection getConn() {?? ??? ?return conn;?? ?}?? ?public void setConn(Connection conn) {?? ??? ?this.conn = conn;?? ?}??? ?}

三、頁面

(1)登錄頁面

(2)數據查詢頁面

(3)查詢結果顯示頁面

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

標簽: JSP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久免费大视频| 国产欧洲在线| 色婷婷狠狠五月综合天色拍| 欧美精品不卡| 日本精品久久| 日本一区二区中文字幕| 日韩精品一区第一页| 99在线精品免费视频九九视| 伊人久久婷婷| 亚洲免费影视| 婷婷五月色综合香五月| 日韩毛片一区| 欧美精品三级在线| 国产精品视频一区视频二区| 国产乱子精品一区二区在线观看 | 麻豆9191精品国产| 亚洲一区二区毛片| 综合激情一区| 日韩超碰人人爽人人做人人添| 日韩二区在线观看| 国产精选久久| 久久不见久久见免费视频7| 久久超级碰碰| 中文在线а√在线8| 欧美日韩在线观看视频小说| 欧美日韩激情| 日韩欧美中文在线观看| 91亚洲精品在看在线观看高清| 久久精品国产成人一区二区三区| 日本不良网站在线观看| 成人三级高清视频在线看| 日韩精品看片| 亚洲资源在线| 国产精品久久久久久av公交车| 国产一区二区三区天码| 日韩和的一区二在线| 亚洲欧美日本国产专区一区| 日韩1区2区3区| 首页国产精品| 亚洲精品97| 国产欧美日韩一区二区三区四区 | 国产亚洲午夜| 日韩午夜在线| 日韩高清成人在线| av资源新版天堂在线| 免费精品国产的网站免费观看| 在线视频亚洲欧美中文| 国产精品蜜月aⅴ在线| 日韩一区自拍| 最新国产精品| 日产精品一区二区| 影院欧美亚洲| 国产伦精品一区二区三区视频| 久久婷婷国产| 亚洲福利免费| 国产日韩中文在线中文字幕| 亚洲精品在线影院| 亚洲免费福利一区| 久久三级中文| 久久亚洲风情| 日韩综合在线| 国产精品99久久久久久董美香| 国产欧美日韩精品高清二区综合区 | 亚洲制服少妇| 日韩中文字幕91| 免费亚洲婷婷| 亚洲欧美日韩国产一区| 久久精品亚洲一区二区| 鲁大师影院一区二区三区| 精品久久精品| 亚洲18在线| 亚洲福利国产| 精品国产欧美日韩一区二区三区| 国产一区二区三区精品在线观看 | 黄色欧美在线| 99视频精品全国免费| 日本va欧美va精品发布| 99精品电影| 久久精品国产999大香线蕉| 国产精品老牛| 色综合www| 国产精品密蕾丝视频下载| 老司机精品久久| 99视频精品全国免费| 精品国产乱码久久久久久1区2匹 | 91精品电影| 电影91久久久| 国产欧美另类| 日韩精品一区第一页| 成人黄色av| 欧美一级全黄| 蜜臀av一区二区在线免费观看| 香蕉成人av| 久久不见久久见国语| 亚洲免费资源| 奶水喷射视频一区| 99久久九九| 高清一区二区三区av| 国产区精品区| 日韩av在线免费观看不卡| 美女久久网站| 国产亚洲精品v| 亚洲精品2区| 欧美特黄一级大片| 91青青国产在线观看精品| 国产精品久久| 97精品国产99久久久久久免费| 中文字幕一区二区精品区| 在线亚洲观看| 欧美日韩精品免费观看视频完整| av在线日韩| 岛国av在线网站| 国产成人精品三级高清久久91| 国产精品黄色| 久久精品72免费观看| 日本午夜精品| 97se亚洲| 欧美日本不卡高清| 欧美精品国产一区| 亚洲色图综合| 亚洲一二三区视频| 在线看片一区| 亚洲香蕉久久| 亚洲精品国产精品粉嫩| 亚洲日本免费电影| 香蕉久久久久久| 日本伊人午夜精品| 日本欧美韩国一区三区| 欧美日韩调教| 国产精品密蕾丝视频下载| 国产精品久久国产愉拍| 国产精品欧美在线观看| 美女视频黄 久久| 精品久久在线| 国产成人精品免费视| 日本在线高清| 久久精品国产亚洲夜色av网站 | 视频一区在线播放| 蜜桃视频在线观看一区二区| 亚洲精品系列| 91成人福利| 久久久久观看| 日韩一区电影| 99国产精品| 日韩一二三区在线观看| 国产精品久久国产愉拍| 国产激情综合| 国产精品原创| 国产一区观看| 久久国产精品久久久久久电车| 亚洲日产国产精品| 欧美a一区二区| 国产不卡精品| 亚洲成人免费| 四虎国产精品免费久久| 国产精品视频一区二区三区 | 亚洲天堂久久| 国产亚洲精品v| 欧美精品中文字幕亚洲专区| 鲁大师精品99久久久| 欧美日韩免费观看视频| 国产精品毛片在线看| 日韩av中文字幕一区二区| 久久亚洲道色| 欧美搞黄网站| 四虎国产精品免费久久| 国产黄色一区| 秋霞国产精品| 石原莉奈在线亚洲二区| 国产欧美日韩一区二区三区四区| 国产成人久久精品麻豆二区 | 电影91久久久| 欧美va天堂在线| 日韩国产欧美在线播放| 四虎国产精品免费观看| 国产亚洲精品自拍| 欧美国产极品| 欧美日一区二区| 欧美一级网站| 久久精品免费一区二区三区| 午夜久久av| 麻豆成人91精品二区三区| 欧美日韩四区| 美女国产精品久久久| 美女福利一区二区三区| 六月丁香综合| 福利一区视频| 另类国产ts人妖高潮视频| 久久精品国产精品亚洲毛片| 尤物精品在线| 精品三级av| 亚洲日本久久| 欧美日韩精品免费观看视完整 | 色综合www| 麻豆高清免费国产一区| 韩国女主播一区二区三区| 国产一二在线播放| 水蜜桃久久夜色精品一区| 久久久噜噜噜| 日韩精品一二区|