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

首頁 > 編程 > JSP > 正文

jsp+servlet+jdbc實現對數據庫的增刪改查

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

一、JSP和Servlet的簡單介紹

1、Servlet和JSP簡介:

Java開發Web應用程序時用到的技術主要有兩種,即Servlet和JSP,Servlet是在服務器端執行的Java程序,一個被稱為Servlet容器的程序(其實就是服務器) 負責執行Java程序,而JSP(Java Server Page)則是一個頁面, 由JSP容器負責執行.

2、Servlet和JSP的區別:

Servlet以Java程序為主, 輸出HTML代碼時需要使用out.println函數,也就是說Java中內嵌HTML; 而JSP則以HTML頁面為主,需要寫Java代碼時則在頁面中直接插入Java代碼, 即HTML中內嵌Java.

3、MVC模型

MVC模型就是將數據、邏輯處理、用戶界面分離的一種方法

1)、M(Model, 模型):用于數據處理、邏輯處理

2)、V(View,視圖):用于顯示用戶界面

3)、C(Controller,控制器):根據客戶端的請求控制邏輯走向和畫面

而在Java中,MVC這三個部分則分別對應于 JavaBeans、JSP和Servlet

1)、M = JavaBeans:用于傳遞數據,擁有與數據相關的邏輯處理

2)、V = JSP:從Model接收數據并生成HTML

3)、C = Servlet:接收HTTP請求并控制Model和View

4、jdbc連接,可參考文章:點擊打開鏈接

二、代碼演示,實現了book的添加刪除和修改功能

1、環境的配置

myeclipse+tomcat+MySQL

2、Book中bean類

package example.bean.book;  public class Book {   // 編號   private int id;   // 圖書名稱   private String name;   // 價格   private double price;   // 數量   private int bookCount;   // 作者   private String author;    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 double getPrice() {     return price;   }    public void setPrice(double price) {     this.price = price;   }    public int getBookCount() {     return bookCount;   }    public void setBookCount(int bookCount) {     this.bookCount = bookCount;   }    public String getAuthor() {     return author;   }    public void setAuthor(String author) {     this.author = author;   }  } 

3、Servlet類

1)、FindServlet.java

package example.jsp/10329.html">servlet.book;  import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List;  import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  import example.bean.book.Book;  /**  * Servlet implementation class FindServlet  */ public class FindServlet extends HttpServlet {   private static final long serialVersionUID = 1L;    /**    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse    *   response)    */   protected void doGet(HttpServletRequest request,       HttpServletResponse response) throws ServletException, IOException {     try {       // 加載數據庫驅動,注冊到驅動管理器       Class.forName("com.mysql.jdbc.Driver");       // 數據庫連接字符串       String url = "jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf-8";       // 數據庫用戶名       String username = "root";       // 數據庫密碼       String password = "";       // 創建Connection連接       Connection conn = DriverManager.getConnection(url, username,           password);       // 添加圖書信息的SQL語句       String sql = "select * from tb_books";       // 獲取Statement       Statement statement = conn.createStatement();        ResultSet resultSet = statement.executeQuery(sql);        List<Book> list = new ArrayList<Book>();       while (resultSet.next()) {          Book book = new Book();         book.setId(resultSet.getInt("id"));         book.setName(resultSet.getString("name"));         book.setPrice(resultSet.getDouble("price"));         book.setBookCount(resultSet.getInt("bookCount"));         book.setAuthor(resultSet.getString("author"));         list.add(book);        }       request.setAttribute("list", list);       resultSet.close();       statement.close();       conn.close();      } catch (Exception e) {       e.printStackTrace();     }      request.getRequestDispatcher("book_list.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);   }  } 

2)、UpdateServlet.java類

package example.servlet.book;  import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement;  import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  /**  * Servlet implementation class UpdateServlet  */ public class UpdateServlet extends HttpServlet {   private static final long serialVersionUID = 1L;    /**    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse    *   response)    */   protected void doGet(HttpServletRequest request,       HttpServletResponse response) throws ServletException, IOException {     int id = Integer.valueOf(request.getParameter("id"));     int bookCount = Integer.valueOf(request.getParameter("bookCount"));     try {       // 加載數據庫驅動,注冊到驅動管理器       Class.forName("com.mysql.jdbc.Driver");       // 數據庫連接字符串       String url = "jdbc:mysql://localhost:3306/db_book";       // 數據庫用戶名       String username = "root";       // 數據庫密碼       String password = "";       // 創建Connection連接       Connection conn = DriverManager.getConnection(url, username,           password);       // 更新SQL語句       String sql = "update tb_books set bookcount=? where id=?";       // 獲取PreparedStatement       PreparedStatement ps = conn.prepareStatement(sql);       // 對SQL語句中的第一個參數賦值       ps.setInt(1, bookCount);       // 對SQL語句中的第二個參數賦值       ps.setInt(2, id);       // 執行更新操作       ps.executeUpdate();       // 關閉PreparedStatement       ps.close();       // 關閉Connection       conn.close();     } catch (Exception e) {       e.printStackTrace();     }     // 重定向到FindServlet     response.sendRedirect("FindServlet");    }    /**    * @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);   }  } 

3)、DeleteServlet類

package example.servlet.book; import java.io.IOException; import java.sql.Connection; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import example.dao.book.BookJdbcDao; import example.dao.book.ConnectionFactory;  /**  * Servlet implementation class DeleteServlet  */ public class DeleteServlet extends HttpServlet {   private static final long serialVersionUID = 1L;    /**    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse    *   response)    */   protected void doGet(HttpServletRequest request,       HttpServletResponse response) throws ServletException, IOException {     int id = Integer.valueOf(request.getParameter("id"));     try { //     // 加載數據庫驅動,注冊到驅動管理器 //     Class.forName("com.mysql.jdbc.Driver"); //     // 數據庫連接字符串 //     String url = "jdbc:mysql://localhost:3306/db_book"; //     // 數據庫用戶名 //     String username = "root"; //     // 數據庫密碼 //     String password = ""; //     // 創建Connection連接 //     Connection conn = DriverManager.getConnection(url, username, //         password); //     // 刪除圖書信息的SQL語句 //     String sql = "delete from tb_books where id=?"; //     // 獲取PreparedStatement //     PreparedStatement ps = conn.prepareStatement(sql); //     // 對SQL語句中的第一個占位符賦值 //     ps.setInt(1, id); //     // 執行更新操作 //     ps.executeUpdate(); //     // 關閉PreparedStatement //     ps.close(); //     // 關閉Connection //     conn.close();       BookJdbcDao bookDao=new BookJdbcDao();       Connection conn=ConnectionFactory.getInstance().getConnection();       bookDao.delete(conn,id);            } catch (Exception e) {       e.printStackTrace();     }     // 重定向到FindServlet     response.sendRedirect("FindServlet");   }    /**    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse    *   response)    */   protected void doPost(HttpServletRequest request,       HttpServletResponse response) throws ServletException, IOException {     doGet(request, response);   }  } 

4、servlet訪問url映射配置:

由于客戶端是通過URL地址訪問web服務器中的資源,所以Servlet程序若想被外界訪問,必須把servlet程序映射到一個URL地址上,這個工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成,<servlet>元素用于注冊Servlet,它包含有兩個主要的子元素:<servlet-name>和<servlet-class>,分別用于設置Servlet的注冊名稱和Servlet的完整類名。

一個<servlet-mapping>元素用于映射一個已注冊的Servlet的一個對外訪問路徑,它包含有兩個子元素:<servlet-name>和<url-pattern>,分別用于指定Servlet的注冊名稱和Servlet的對外訪問路徑.另外:同一個Servlet可以被映射到多個URL上,即多個<servlet-mapping>元素的<servlet-name>子元素的設置值可以是同一個Servlet的注冊名.

eg:上例中的web.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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  <display-name>JdbcConnection</display-name>  <welcome-file-list>   <welcome-file>index.html</welcome-file>   <welcome-file>index.htm</welcome-file>   <welcome-file>index.jsp</welcome-file>   <welcome-file>default.html</welcome-file>   <welcome-file>default.htm</welcome-file>   <welcome-file>default.jsp</welcome-file>  </welcome-file-list>  <servlet>   <description></description>   <display-name>FindServlet</display-name>   <servlet-name>FindServlet</servlet-name>   <servlet-class>example.servlet.book.FindServlet</servlet-class>  </servlet>  <servlet-mapping>   <servlet-name>FindServlet</servlet-name>   <url-pattern>/FindServlet</url-pattern>  </servlet-mapping>  <servlet>   <description></description>   <display-name>UpdateServlet</display-name>   <servlet-name>UpdateServlet</servlet-name>   <servlet-class>example.servlet.book.UpdateServlet</servlet-class>  </servlet>  <servlet-mapping>   <servlet-name>UpdateServlet</servlet-name>   <url-pattern>/UpdateServlet</url-pattern>  </servlet-mapping>  <servlet>   <description></description>   <display-name>DeleteServlet</display-name>   <servlet-name>DeleteServlet</servlet-name>   <servlet-class>example.servlet.book.DeleteServlet</servlet-class>  </servlet>  <servlet-mapping>   <servlet-name>DeleteServlet</servlet-name>   <url-pattern>/DeleteServlet</url-pattern>  </servlet-mapping> </web-app> 

5、jsp頁面

1)、index.jsp  web頁面主界面

<%@page import="java.sql.SQLException"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@ 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"> <title>添加圖書信息</title>  <script type="text/javascript">   function check(form) {     with (form) {       if (name.value == "") {         alert("圖書名稱不能為空");         return false;       }        if (price.value == "") {         alert("圖書價格不能為空");         return false;       }        if (author.value == "") {         alert("作者不能為空");         return false;       }      }   } </script>  </head>   <body>  <form action="addbook.jsp" method="post" onsubmit="check(this)">   <table align="center" width="450">     <tr>       <td align="center" colspan="2">         <h2>添加圖書信息</h2>         <hr>       </td>     </tr>      <tr>       <td align="right">圖書名稱:</td>       <td><input type="text" name="name"></td>     </tr>      <tr>       <td align="right">價 格:</td>       <td><input type="text" name="price"></td>     </tr>      <tr>       <td align="right">數 量:</td>       <td><input type="text" name="bookCount" /></td>     </tr>      <tr>       <td align="right">作 者:</td>       <td><input type="text" name="author" /></td>     </tr>     <tr>       <td align="center" colspan="2"><input type="submit" value="添 加">       </td>     </tr>   </table> </form>  <h2 align="center">   <a href="FindServlet">查詢圖書信息</a> </h2>  </body> </html> 

2)、addbook.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">  <%@page import="java.sql.Connection"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.PreparedStatement"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>添加結果</title> </head> <body>   <%     request.setCharacterEncoding("utf-8");   %>   <jsp:useBean id="book" class="example.bean.book.Book"></jsp:useBean>   <jsp:setProperty property="*" name="book" />   <%     try {       // 加載數據庫驅動,注冊到驅動管理器       Class.forName("com.mysql.jdbc.Driver");       // 數據庫連接字符串       String url = "jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf-8";       // 數據庫用戶名       String username = "root";       // 數據庫密碼       String password = "";       // 創建Connection連接       Connection conn = DriverManager.getConnection(url, username,           password);       // 添加圖書信息的SQL語句       String sql = "insert into tb_books(name,price,bookCount,author) values(?,?,?,?)";       // 獲取PreparedStatement       PreparedStatement ps = conn.prepareStatement(sql);       // 對SQL語句中的第1個參數賦值       ps.setString(1, book.getName());       // 對SQL語句中的第2個參數賦值       ps.setDouble(2, book.getPrice());       // 對SQL語句中的第3個參數賦值       ps.setInt(3, book.getBookCount());       // 對SQL語句中的第4個參數賦值       ps.setString(4, book.getAuthor());       // 執行更新操作,返回所影響的行數       int row = ps.executeUpdate();       // 判斷是否更新成功       if (row > 0) {         // 更新成輸出信息         out.print("成功添加了 " + row + "條數據!");       }       // 關閉PreparedStatement,釋放資源       ps.close();       // 關閉Connection,釋放資源       conn.close();     } catch (Exception e) {       out.print("圖書信息添加失??!");       e.printStackTrace();     }   %>   <br>   <a href="index.jsp">返回</a> </body> </html> 

3)、book_list.jsp 查找所有書籍信息的顯示頁面,以表格方式顯示

<!--<%@page import="sun.awt.SunHints.Value"%>--> <%@ 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">  <%@page import="java.util.List"%> <%@page import="example.bean.book.Book"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>所有圖書信息</title> <style type="text/css"> td {   font-size: 12px; }  h2 {   margin: 0px } </style> <script type="text/javascript">   function check(form) {     with (form) {       if (bookCount.value == "") {         alert("請輸入更新數量!");         return false;       }       if (isNaN(bookCount.value)) {         alert("格式錯誤!");         return false;       }       return true;     }   } </script>   </head> <body>   <table align="center" width="450" border="1" height="180"     bordercolor="white" bgcolor="black" cellpadding="1" cellspacing="1">     <tr bgcolor="white">       <td align="center" colspan="7">         <h2>所有圖書信息</h2>       </td>     </tr>     <tr align="center" bgcolor="#e1ffc1">       <td><b>ID</b></td>       <td><b>圖書名稱</b></td>       <td><b>價格</b></td>       <td><b>數量</b></td>       <td><b>作者</b></td>       <td><b>修改</b></td>       <td><b>刪除</b></td>     </tr>     <%       // 獲取圖書信息集合       List<Book> list = (List<Book>) request.getAttribute("list");       // 判斷集合是否有效       if (list == null || list.size() < 1) {         out.print("沒有數據!");       } else {         // 遍歷圖書集合中的數據         for (Book book : list) {     %>     <tr align="center" bgcolor="white">       <td><%=book.getId()%></td>       <td><%=book.getName()%></td>       <td><%=book.getPrice()%></td>       <td><%=book.getBookCount()%></td>       <td><%=book.getAuthor()%></td>       <td >         <form style="align:center; background-color: gray" action="UpdateServlet" method="post"           onsubmit="return check(this);">            <input type="hidden" name="id" value="<%=book.getId()%>"> <input             type="text" name="bookCount" size="3">            <input type="submit" value="修改數量">         </form>       </td>       <td>       <a href="DeleteServlet?id=<%=book.getId()%>">刪除</a>       </td>       </tr>     <%       }       }     %>   </table>   <h2 align="center">     <a href="index.jsp">返回添加圖書信息頁面</a>   </h2>  </body> </html> 

6、jdbc簡單的封裝

1)、ConnectionFactory.java工廠類

package example.dao.book;  import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;  public class ConnectionFactory {      private String driverClassName = "com.mysql.jdbc.Driver";   private String url = "jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf-8";   private String userName = "root";   private String password = "";      private static ConnectionFactory connectionFactory=null;    private ConnectionFactory() {          try {       Class.forName(driverClassName);     } catch (ClassNotFoundException e) {       e.printStackTrace();     }   }      public Connection getConnection() throws SQLException   {     return DriverManager.getConnection(url, userName, password);        }      public static ConnectionFactory getInstance()   {       if (null==connectionFactory) {       connectionFactory=new ConnectionFactory();     }     return connectionFactory;        } } 

2)、BookJdbcDao.java數據庫操作封裝類

package example.dao.book;  import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;  import example.bean.book.Book;  public class BookJdbcDao {      private PreparedStatement ptmt = null;   private ResultSet rs = null;    public BookJdbcDao() {   }         public void findAll(Connection conn) throws SQLException   {     //to do        }      public void delete(Connection conn, int id) throws SQLException   {     String sql = "delete from tb_books where id=?";     try{       ptmt = conn.prepareStatement(sql);       // 對SQL語句中的第一個占位符賦值       ptmt.setInt(1, id);       // 執行更新操作       ptmt.executeUpdate();            }finally{       if (null!=ptmt) {         ptmt.close();       }              if (null!=conn) {         conn.close();       }            }        }      public void update(Connection conn, int id ,int bookcount) throws SQLException   {     //to do        }     } 

源代碼下載鏈接

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


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品成人av| 久久久久免费视频| 欧美在线观看日本一区| 国产亚洲欧美视频| 奇米四色中文综合久久| 国产亚洲人成a一在线v站| 成人免费高清完整版在线观看| 午夜精品久久久久久久男人的天堂| 国产精品视频播放| 国产女同一区二区| 欧美丰满少妇xxxxx| 午夜精品久久久久久久久久久久久| 久久久亚洲精品视频| 日韩在线观看免费网站| 国产精品国产自产拍高清av水多| 26uuu另类亚洲欧美日本老年| 在线观看国产精品淫| 91九色在线视频| 97视频免费在线观看| 在线观看欧美日韩| 久久久黄色av| 国产精品旅馆在线| 欧美精品久久一区二区| 亚洲欧美在线一区二区| 日韩美女av在线免费观看| 欧美日韩成人网| 久热在线中文字幕色999舞| 国产精品久久久久免费a∨大胸| 精品国产一区二区三区在线观看| 亚洲欧美日韩爽爽影院| 久久精品这里热有精品| 欧美怡红院视频一区二区三区| 亚洲国产精品成人一区二区| 日韩视频精品在线| 国产一区二区三区欧美| 91理论片午午论夜理片久久| 亚洲高清av在线| 欧美成人激情在线| 成人av在线网址| 欧美精品手机在线| 日韩成人激情视频| 97久久国产精品| 最近中文字幕2019免费| 97在线视频免费观看| 精品国产91久久久久久| 欧美亚洲另类激情另类| 欧美第一黄网免费网站| 欧美性xxxxx极品娇小| 国产精品久久久久久久午夜| 性色av一区二区三区红粉影视| 欧美电影免费看| 亚洲精品综合久久中文字幕| 久久亚洲综合国产精品99麻豆精品福利| 日韩av电影在线网| 久久久免费高清电视剧观看| 欧美黄色www| 97视频在线观看免费高清完整版在线观看| 日本久久久久亚洲中字幕| 91av在线不卡| 亚洲性夜色噜噜噜7777| 中文字幕免费国产精品| 国内偷自视频区视频综合| 日韩第一页在线| 久久精品国产综合| 国产精品日韩在线一区| 成年无码av片在线| 欧美成人精品三级在线观看| 日韩av在线影视| 成人黄色片在线| 亚洲精品美女在线观看| 亚洲精品久久久久久久久久久久| 亚洲第一精品福利| 欧美乱妇高清无乱码| 欧美日韩免费在线| 中文字幕久精品免费视频| 亚洲高清免费观看高清完整版| 美女啪啪无遮挡免费久久网站| 国产精品久久久久久久一区探花| 亚洲一区制服诱惑| 久久国产精品亚洲| 亚洲自拍高清视频网站| 国产精品欧美亚洲777777| 日本最新高清不卡中文字幕| 日韩午夜在线视频| 国产精品夜间视频香蕉| 午夜精品一区二区三区视频免费看| 欧美激情精品久久久久久久变态| 久久亚洲私人国产精品va| 亚洲精选中文字幕| 久热精品视频在线观看| 中文字幕欧美日韩在线| 亚洲黄色www网站| 日韩免费av一区二区| 国产视频精品久久久| 国产精品中文字幕在线| 欧美精品videossex88| 国产噜噜噜噜噜久久久久久久久| 午夜精品久久17c| 亚洲乱码一区av黑人高潮| 亚洲福利精品在线| 爽爽爽爽爽爽爽成人免费观看| 国产精品久久久久久久久久三级| 国产不卡视频在线| 国产成人一区三区| 亚洲欧美综合v| 91av网站在线播放| 亚洲天堂av在线免费观看| 91国产精品视频在线| 成人黄色生活片| 亚洲成色www8888| 久久国产精品偷| 亚洲一区二区三区sesese| 久久精品视频在线播放| 777国产偷窥盗摄精品视频| 色偷偷91综合久久噜噜| 欧美亚洲国产另类| 欧美大片网站在线观看| 色综合五月天导航| 欧美日韩成人在线观看| 亚洲午夜未删减在线观看| 一区二区三区四区精品| 欧美小视频在线观看| 青青草原成人在线视频| 亚洲人精选亚洲人成在线| 日韩在线欧美在线国产在线| 免费91麻豆精品国产自产在线观看| 欧美第一页在线| 亚洲跨种族黑人xxx| 国产精品96久久久久久又黄又硬| 亚洲视频电影图片偷拍一区| 国产精品网站大全| 热re99久久精品国产66热| 久久久视频免费观看| 欧美国产日韩免费| 黄色一区二区三区| 亚洲第一精品久久忘忧草社区| 午夜精品久久久久久久99热| 57pao成人国产永久免费| 欧美电影免费观看高清完整| 91久久国产精品| 欧美成人在线免费视频| 91在线精品播放| 国产精品久久久久久一区二区| 国产精品中文久久久久久久| 精品福利免费观看| 精品女厕一区二区三区| 国产精品xxx视频| 亚洲天堂影视av| 51精品在线观看| 日韩中文字幕在线播放| 欧美日韩国产成人高清视频| 国产69久久精品成人看| 一区二区欧美激情| 国产精品夜色7777狼人| 日av在线播放中文不卡| 亚洲国产婷婷香蕉久久久久久| 国产97在线|日韩| 91在线视频免费| 久久久精品国产亚洲| 国产精品av免费在线观看| 国产精品白丝jk喷水视频一区| 国产精品久久久久久久久影视| 久久精品国产久精国产思思| 欧美亚洲视频在线看网址|