<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java Web開發模式

      一 Java Web開發模式的變遷

      1 最初的Java web服務器端編程技術是Servlet,利用Servlet就可以開發出一個Web應用程序。

      2 為了解決Servlet缺陷,SUN推出了JSP技術。但是開發人員又走向了另一個極端就是完全放棄了Servlet。

        在JSP頁面混合使用HTML標記和java代碼編寫的腳本元素標記來開發Web程序。采用這種方法雖然可以編寫JSP頁面變得簡單,直觀,然而,他只適合于業務流程簡單,系統規模較小的應用系統。

        如果系統較大的話,就會出現兩個嚴重的缺點:

         1) 頁面嚴重缺乏可讀性。

         2) 沒有將頁面表現和業務邏輯實現分開,使維護難度增加了。

      在JSP中使用JavaBean可以實現頁面與邏輯業務分開。

      3 SUN公司將在Web應用開發中使用JSP+JavaBean技術。===JSP模式1   (適用于規模較小,業務邏輯簡單的web應用開發)。

      4 SUN在java web開發中引入了MVC架構模式,利用Servlet,JSP,JavaBean技術(講servlet作為MVC架構模式中的控制器,JSP作為視圖,javabean作為模型)===JSP模式2()這也不是絕對完美的。

      二 在JSP中使用JavaBean

          一個標準的JavaBean組件具有以下幾個特征

       1 package com.cy.bean;
       2 
       3 import java.io.Serializable;
       4 
       5 /*JavaBean 類必須是一個公共類,并將其訪問屬性設置為 public。*/
       6 /*JavaBean應該是可序列化(serializable)的,即實現java.io.Serializable 接口  */
       7 
       8 public class User implements Serializable {
       9     private static final long serialVersionUID = 1L;
      10     /* 一個JavaBean類不應有公共實例變量,類變量都為private */
      11     private int id;
      12     private String name;
      13     private String pwd;
      14     private int postion;
      15 
      16     /* JavaBean 類必須有一個空的構造函數,(系統會默認一個無參構造器,如果沒有其他的構造器) */
      17     public User() {
      18         super();
      19     }
      20 
      21     /* 要訪問這些類變量,應該通過一組存取方法(getXxx 和 setXxx)來訪問, */
      22     public int getId() {
      23         return id;
      24     }
      25 
      26     public void setId(int id) {
      27         this.id = id;
      28     }
      29 
      30     public String getName() {
      31         return name;
      32     }
      33 
      34     public void setName(String name) {
      35         this.name = name;
      36     }
      37 
      38     public String getPwd() {
      39         return pwd;
      40     }
      41 
      42     public void setPwd(String pwd) {
      43         this.pwd = pwd;
      44     }
      45 
      46     public int getPostion() {
      47         return postion;
      48     }
      49 
      50     public void setPostion(int postion) {
      51         this.postion = postion;
      52     }
      53 
      54 }

      為了在JSP頁面中使用JavaBean,SUN在JSP規范中提供了三種標準動作。

      1 <jsp:useBean>動作   得到或者創建一個JavaBean對象 
       語法形式:

      <jsp:useBean id=“beanName” //變量名 scope=“page|request|session|application” //作用范圍  class=“className”  //類全路徑/>

      1  <jsp:useBean id="user" class="com.cy.bean.User" scope="request"></jsp:useBean>

       

      id:代表bean的引用名,id在一個頁面中必須是一個唯一的值;User user = new User();

      scope: 指定JavaBean生存的作用域

      class: 指定JavaBean的包名及類名

      type:id的引用的數據類型,默認情況下,它與class的類型相同。

       
      2 <jsp:getProperty>動作 可以把JavaBean的某個屬性取出來
      語法形式: 

      <jsp:getProperty name="beanname" property="propertyname"/>

       1 <jsp:getProperty property="name" name="user"/>

      property: 指的是返回JavaBean中的相對應的屬性名 

      name: <jsp:useBean>動作中指定的id名,

       
      3 <jsp:setProperty>動作 設置JavaBean的屬性值
      其有四種語法形式:
      <jsp:setProperty name="BeanName" property="屬性名"/>

      <jsp:setProperty name="BeanName" property="屬性名" param="參數名"/>

      <jsp:setProperty name="BeanName" property="屬性名" value="屬性值" />

      <jsp:setProperty name="BeanName" property="*"/>

      1 ----.jsp
      2 <jsp:setProperty property="name" name="user" param="username"/>
      3   <jsp:setProperty property="pwd" name="user" param="pwd"/>
      4 
      5 
      6 ----.html
      7  username:<input type="text" name="username"/>
      8    pwd  :<input type ="password" name="pwd"/>

       

      name: bean的名稱

      property:JavaBean相對應的屬性

      value設置屬性的值

      param將property指定的屬性名的值設置為一個請求參數的值

      property="*"用來設置所有與所得到的參數同名的屬性值 

      三 JSP開發模式1

      JSP模式1主要采用JSP和JavaBean技術
      將頁面顯示與業務邏輯處理分開
      JSP負責頁面的顯示,而業務邏輯則由JavaBean處理   
      用戶登錄案例來說明JSP1開發模式:
       
      UserBean.java
       
       1 package com.cy.bean;
       2 
       3 import java.io.Serializable;
       4 
       5 
       6 
       7 public class UserBean implements Serializable {
       8     private static final long serialVersionUID = 1L;
       9     
      10     private String name;
      11     private String pwd;
      12     
      13     public UserBean () {
      14         super();
      15     }
      16 
      17     
      18     public String getName() {
      19         return name;
      20     }
      21 
      22     public void setName(String name) {
      23         this.name = name;
      24     }
      25 
      26     public String getPwd() {
      27         return pwd;
      28     }
      29 
      30     public void setPwd(String pwd) {
      31         this.pwd = pwd;
      32     }
      33     
      34 
      35 }

       

      login.html
       1 <!DOCTYPE html>
       2 <html>
       3   <head>
       4     <title>login.html</title>
       5     
       6     <meta name="keywords" content="keyword1,keyword2,keyword3">
       7     <meta name="description" content="this is my page">
       8     <meta name="content-type" content="text/html; charset=UTF-8">
       9     
      10     <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
      11 
      12   </head>
      13   
      14   <body>
      15    <form action="/java_web/CheckUser.jsp" method="post">
      16    username:<input type="text" name="username"/>
      17    pwd  :<input type ="password" name="pwd"/>
      18    <input type="submit" value="submit"/>   
      19    </form>
      20   </body>
      21 </html>
      CheckUserBean.java
       1 package com.cy.bean;
       2 
       3 import java.sql.Connection;
       4 import java.sql.DriverManager;
       5 import java.sql.ResultSet;
       6 import java.sql.SQLException;
       7 import java.sql.Statement;
       8 
       9 public class CheckUserBean {
      10 
      11     public boolean checkUser(User user) {
      12 
      13         String name = user.getName();
      14         String pwd = user.getPwd();
      15         Connection conn = null;
      16         Statement st = null;
      17         ResultSet rs = null;
      18         String url = "jdbc:mysql://localhost:3306/demo";
      19         String user1 = "root";
      20         String password = "1234";
      21         String sql = "select * from t_user where user_name='" + name
      22                 + "' and user_password='" + pwd + "'";
      23         try {
      24             Class.forName("com.mysql.jdbc.Driver");
      25             conn = DriverManager.getConnection(url, user1, password);
      26             st = conn.createStatement();
      27             rs = st.executeQuery(sql);
      28 
      29             if (rs.next()) {
      30                 return true;
      31             }
      32         } catch (Exception e) {
      33             e.printStackTrace();
      34         } finally {
      35             try {
      36                 rs.close();
      37                 st.close();
      38                 conn.close();
      39             } catch (SQLException e) {
      40                 e.printStackTrace();
      41             }
      42         }
      43 
      44         return false;
      45 
      46     }
      47
      CheckUser.jsp
       
       1 <%@ page language="java" import="java.util.*,com.cy.bean.*" pageEncoding="utf-8"%>
       2 <%
       3 String path = request.getContextPath();
       4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
       5 %>
       6 
       7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
       8 <html>
       9   <head>
      10     <base href="<%=basePath%>">
      11     
      12     <title>My JSP 'CheckUser.jsp' starting page</title>
      13     
      14     <meta http-equiv="pragma" content="no-cache">
      15     <meta http-equiv="cache-control" content="no-cache">
      16     <meta http-equiv="expires" content="0">    
      17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
      18     <meta http-equiv="description" content="This is my page">
      19     <!--
      20     <link rel="stylesheet" type="text/css" href="styles.css">
      21     -->
      22 
      23   </head>
      24   
      25   <body>
      26     <%CheckUserBean cub=new CheckUserBean(); %>
      27   <jsp:useBean id="user" class="com.cy.bean.User" scope="request"></jsp:useBean>
      28   <jsp:setProperty property="*" name="user"/>
      29   <%if(cub.checkUser(user)) {%>
      30   <jsp:forward page="success.jsp"></jsp:forward>
      31   <%}else{%>
      32   <jsp:forward page="fail.jsp"></jsp:forward>
      33   <%} %>
      34   </body>
      35 </html>
      success.jsp
       1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
       2 <%
       3 String path = request.getContextPath();
       4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
       5 %>
       6 
       7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
       8 <html>
       9   <head>
      10     <base href="<%=basePath%>">
      11     
      12     <title>My JSP 'success.jsp' starting page</title>
      13     
      14     <meta http-equiv="pragma" content="no-cache">
      15     <meta http-equiv="cache-control" content="no-cache">
      16     <meta http-equiv="expires" content="0">    
      17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
      18     <meta http-equiv="description" content="This is my page">
      19     <!--
      20     <link rel="stylesheet" type="text/css" href="styles.css">
      21     -->
      22 
      23   </head>
      24   
      25   <body>
      26    <jsp:useBean id="user" class="com.cy.bean.User" scope="request"></jsp:useBean> 
      27    
      28    歡迎你:<jsp:getProperty property="name" name="user"/>
      29   </body>
      30 </html>

       

       
      四 JSP開發模式2
      JSP開發模式2借鑒了MVC架構模式,采用了Servlet+JSP+JavaBean的技術實現JavaWeb的開發。
       
      1 MVC架構
      在MVC中,模型(model)部分負責管理系統業務數據,視圖(view)部分負責顯示界面,控制器(controller)部分負責與用戶的交互。
                                                      MVC示意圖
       
       
      2 MVC架構模式的Java Web實現
      JSP開發模式2借鑒了MVC架構模式,采用了Servlet+JSP+JavaBean的技術實現JavaWeb的開發。
      Servlet充當控制器額角色,負責處理請求和控制業務流程;
      JSP充當視圖的角色,負責輸出響應結果;
      JavaBean充當模型的角色,負責具體的業務邏輯和業務數據。
      其結構如圖:
                                            WebMVC
       
      3 JSP模式2開發步驟
      –1 定義一系列Bean來表示數據
      –2 使用一個Servlet來處理請求
      –3 在Servlet中填充Bean
      –4 在Servlet中,將Bean存儲到請求、會話或者Servlet上下文中
      –5 將請求轉發到JSP頁面
      –6 在JSP頁面中,從Bean中提取數據
       
      1)
      由于在MVC中,都是有Servlet或者其他的JAVA程序中創建Bean,所以我們開發的JavaBean也就不再需要有空構造器方法。
       1 package com.cy.bean;
       2 
       3 import java.io.Serializable;
       4 
       5 public class User implements Serializable {
       6     
       7     private String name;
       8     private String pwd;
       9 
      10     public String getName() {
      11         return name;
      12     }
      13 
      14     public void setName(String name) {
      15         this.name = name;
      16     }
      17 
      18     public String getPwd() {
      19         return pwd;
      20     }
      21 
      22     public void setPwd(String pwd) {
      23         this.pwd = pwd;
      24     }    
      25 
      26 }

       

      –2 ) 使用一個Servlet來處理請求
      –3 )在Servlet中填充Bean
      –4 )在Servlet中,將Bean存儲到請求、會話或者Servlet上下文中
      –5 )將請求轉發到JSP頁面
       1 package com.cy.servlet;
       2 
       3 import java.io.IOException;
       4 import java.sql.Connection;
       5 import java.sql.DriverManager;
       6 import java.sql.ResultSet;
       7 import java.sql.SQLException;
       8 import java.sql.Statement;
       9 
      10 import javax.servlet.ServletException;
      11 import javax.servlet.http.HttpServlet;
      12 import javax.servlet.http.HttpServletRequest;
      13 import javax.servlet.http.HttpServletResponse;
      14 
      15 import com.cy.bean.User;
      16 // 需要連接數據庫
      17 public class LoginServlet extends HttpServlet{
      18 
      19     @Override
      20     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      21             throws ServletException, IOException {
      22         req.setCharacterEncoding("utf-8");
      23         resp.setCharacterEncoding("utf-8");    
      24         resp.setContentType("text/html;charset=utf-8");
      25 
      26        /*使用一個Servlet來處理請求    */    
      27         String name = req.getParameter("username");
      28         String pwd = req.getParameter("pwd");
      29         
      30         
      31         
      32         Connection conn = null;
      33         Statement st = null;
      34         ResultSet rs = null;
      35         String url="jdbc:mysql://localhost:3306/demo";
      36         String user = "root";
      37         String password  ="1234";
      38         String sql = "select * from t_user where user_name='"+name+"' and user_password='"+pwd+"'";
      39         
      40         //System.out.println(sql);
      41         try {
      42             Class.forName("com.mysql.jdbc.Driver");
      43             conn = DriverManager.getConnection(url,user,password);
      44             st = conn.createStatement();
      45             rs = st.executeQuery(sql);
      46             if(rs.next()){
      47             
      48               /*    在Servlet中填充Bean*/
      49                 User u = new User();
      50                 u.setPwd(pwd);
      51                 u.setUsername(name);
      52                 
      53                 
      54                 /*在Servlet中,將Bean存儲到請求、會話或者Servlet上下文中*/
      55                 req.getSession().setAttribute("user", u);
      56                 
      57                 /*將請求轉發到JSP頁面*/
      58                 req.getRequestDispatcher("/welcome.jsp").forward(req, resp);
      59             }else{
      60                 req.getRequestDispatcher("/index.jsp").forward(req, resp);
      61             }
      62         } catch (Exception e) {
      63             e.printStackTrace();
      64         }finally{
      65             try {
      66                 rs.close();
      67                 st.close();
      68                 conn.close();
      69             } catch (SQLException e) {
      70                 e.printStackTrace();
      71             }
      72         }
      73         
      74     }
      75 
      76     @Override
      77     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      78             throws ServletException, IOException {
      79         doGet(req, resp);
      80     }
      81 
      82 }

       

      這里還寫了一個簡單的util

       1 package com.cy.util;
       2 
       3 import java.sql.Connection;
       4 import java.sql.DriverManager;
       5 import java.sql.ResultSet;
       6 import java.sql.SQLException;
       7 import java.sql.Statement;
       8 
       9 public class DBUtil {
      10     private static String url = "jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8"; 
      11     private static String user = "root";
      12     private static String pwd = "1234";
      13     private DBUtil(){};
      14     static{
      15         try {
      16             Class.forName("com.mysql.jdbc.Driver");
      17         } catch (ClassNotFoundException e) {
      18             e.printStackTrace();
      19         }
      20         
      21     }
      22     
      23     public static Connection getConn() throws SQLException{
      24         return DriverManager.getConnection(url,user,pwd);
      25     }
      26     
      27     public static void closeRe(Connection conn,Statement st,ResultSet rs){
      28         if(rs!=null){
      29             try {
      30                 rs.close();
      31             } catch (SQLException e) {
      32                 e.printStackTrace();
      33             }finally{
      34                 if(st!=null){
      35                     try {
      36                         st.close();
      37                     } catch (SQLException e) {
      38                         e.printStackTrace();
      39                     }finally{
      40                         if(conn!=null){
      41                             try {
      42                                 conn.close();
      43                             } catch (SQLException e) {
      44                                 e.printStackTrace();
      45                             }
      46                         }
      47                     }
      48                 }
      49             }
      50         }
      51     }
      52     
      53     public static void closeRe(Connection conn,Statement st) {
      54         if(st!=null){
      55             try {
      56                 st.close();
      57             } catch (SQLException e) {
      58                 e.printStackTrace();
      59             }finally{
      60                 if(conn!=null){
      61                     try {
      62                         conn.close();
      63                     } catch (SQLException e) {
      64                         e.printStackTrace();
      65                     }
      66                 }
      67             }
      68         }
      69             
      70     }
      71     
      72 }

       在web.xml配置Servlet

       1 <?xml version="1.0" encoding="UTF-8"?>
       2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
       3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
       5     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
       6     <display-name></display-name>
       7     <welcome-file-list>
       8         <welcome-file>index.jsp</welcome-file>
       9     </welcome-file-list>
      10 
      11     <servlet>
      12         <servlet-name>login</servlet-name>
      13         <servlet-class>com.cy.servlet.LoginServlet</servlet-class>
      14     </servlet>
      15 
      16     <servlet-mapping>
      17         <servlet-name>login</servlet-name>
      18         <url-pattern>/login</url-pattern>
      19     </servlet-mapping>
      20 
      21 </web-app>

       

      在JSP頁面中,從Bean中提取數據
       1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
       2 <%
       3 String path = request.getContextPath();
       4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
       5 %>
       6 
       7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
       8 <html>
       9   <head>
      10     <base href="<%=basePath%>">
      11     
      12     <title>My JSP 'welcome.jsp' starting page</title>
      13     
      14     <meta http-equiv="pragma" content="no-cache">
      15     <meta http-equiv="cache-control" content="no-cache">
      16     <meta http-equiv="expires" content="0">    
      17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
      18     <meta http-equiv="description" content="This is my page">
      19     <!--
      20     <link rel="stylesheet" type="text/css" href="styles.css">
      21     -->
      22 
      23   </head>
      24   
      25   <body>
      26   welcome頁碼顯示數據
      27   <jsp:useBean id="user" type="com.cy.bean.User" scope="session"></jsp:useBean>
      28     <p>歡迎你:<jsp:getProperty property="name" name="user"></jsp:getProperty></p>
      29   </body>
      30 </html>
       
      五 在MVC中使用過濾器
      在創建Bean后,Servlet使用RequestDispatcher 對象將請求轉發到恰當的JSP頁面
      Servlet
       1 package com.cy.servlet;
       2 
       3 import java.io.IOException;
       4 
       5 import javax.servlet.ServletException;
       6 import javax.servlet.http.HttpServlet;
       7 import javax.servlet.http.HttpServletRequest;
       8 import javax.servlet.http.HttpServletResponse;
       9 
      10 import com.cy.bean.User;
      11 
      12 public class DemoServlet extends HttpServlet {
      13 
      14     @Override
      15     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      16             throws ServletException, IOException {
      17         req.setCharacterEncoding("utf-8");
      18         String name = req.getParameter("username");
      19         String pwd = req.getParameter("pwd");
      20         
      21         User user = new User();
      22         user.setPwd(pwd);
      23         user.setUsername(name);
      24         req.getSession().setAttribute("user1", user);
      25         String uri = req.getRequestURI();
      26         req.getRequestDispatcher(uri).forward(req, resp);
      27     }
      28 
      29     @Override
      30     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      31             throws ServletException, IOException {
      32         doGet(req, resp);
      33     }
      34 
      35 }
       Filter
       1 package com.cy.filter;
       2 
       3 import java.io.IOException;
       4 
       5 import javax.servlet.Filter;
       6 import javax.servlet.FilterChain;
       7 import javax.servlet.FilterConfig;
       8 import javax.servlet.ServletException;
       9 import javax.servlet.ServletRequest;
      10 import javax.servlet.ServletResponse;
      11 import javax.servlet.http.HttpServletRequest;
      12 
      13 import com.lovo.bean.User;
      14 
      15 public class DemoFilter implements Filter {
      16 
      17     public void destroy() {
      18         // TODO Auto-generated method stub
      19         
      20     }
      21 
      22     public void doFilter(ServletRequest arg0, ServletResponse arg1,
      23             FilterChain arg2) throws IOException, ServletException {
      24         HttpServletRequest req = (HttpServletRequest)arg0;
      25         User user = new User();
      26         String name = req.getParameter("username");
      27         String pwd = req.getParameter("pwd");
      28         user.setPwd(pwd);
      29         user.setUsername(name);
      30         req.getSession().setAttribute("user", user);
      31         arg2.doFilter(req, arg1);
      32     }
      33 
      34     public void init(FilterConfig arg0) throws ServletException {
      35         // TODO Auto-generated method stub
      36         
      37     }
      38 
      39 }

       在web.xml中配置部署Filter,servlet

       1 <?xml version="1.0" encoding="UTF-8"?>
       2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
       3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
       5     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
       6     <display-name></display-name>
       7     <welcome-file-list>
       8         <welcome-file>index.jsp</welcome-file>
       9     </welcome-file-list>
      10 
      11     <filter>
      12         <filter-name>jsp</filter-name>
      13         <filter-class>com.cy.filter.DemoFilter</filter-class>
      14     </filter>
      15     <filter-mapping>
      16         <filter-name>jsp</filter-name>
      17         <url-pattern>/*</url-pattern>
      18     </filter-mapping>
      19 
      30 
      31 </web-app>

       小結:

      1 JSP腳本使頁面變得簡單、直觀,但可讀性差而且沒有將頁面表現和業務邏輯實現分開,維護難度增加
      2 JSP的主要任務是發送文本內容的響應,Servlet控制業務流程但是無法對業務功能進行復用
      3 使用JavaBean把業務邏輯從Servlet中取出來
      4 JavaBean本質上就是一個普通的Java類
      5 MVC設計模式讓Servlet負責處理請求和控制業務流程,JSP負責輸出響應結果,JavaBean負責具體的業務邏輯和業務數據
      6 在MVC模式處理中最后的顯示結果是由Servlet代碼來判斷請求要轉發到哪個JSP頁面
      7 采用過濾器作為控制器,提供了一個清晰的方法來增加一個新視圖 
       
       

       

       

       

       
       
       

       

      posted @ 2015-11-11 22:36  NAYNEHC  閱讀(10832)  評論(4)    收藏  舉報
      主站蜘蛛池模板: 亚洲色av天天天天天天| 国产成人人综合亚洲欧美丁香花| 色欲色香天天天综合网站免费| 精品免费看国产一区二区| 综合图区亚洲另类偷窥| 欧美中文亚洲v在线| 欧美日韩在线视频| 亚洲天堂视频网| 国产av亚洲精品ai换脸电影| 国产一区二区三区不卡视频| av午夜福利一片免费看久久| 偷拍精品一区二区三区| 久久夜色精品国产亚洲a| 免费网站看V片在线毛| 国产精品一区二区三区卡| 中文字幕亚洲日韩无线码| 亚洲色成人一区二区三区人人澡人人妻人人爽人人蜜桃麻豆 | 亚洲精品国产成人| 国产亚洲真人做受在线观看| 色欲国产精品一区成人精品| 国产国产午夜福利视频| 男女裸交免费无遮挡全过程| 欧美在线精品一区二区三区| 国产精品视频全国免费观看| 日本不卡不二三区在线看| 亚洲自偷自偷在线成人网站传媒 | 久久精品国产99久久6| 国产精品国产三级国快看| 久久视频这里只精品| 亚洲国产精品一区二区第一页| 国产一区二区三区AV在线无码观看| 欧美丰满熟妇xxxx性大屁股| 自慰无码一区二区三区| 秋霞电影院午夜无码免费视频| 体态丰腴的微胖熟女的特征| 国产精品免费观看色悠悠| 免费观看在线A级毛片| 爱性久久久久久久久| 激情动态图亚洲区域激情| av色蜜桃一区二区三区| 日韩人妻一区中文字幕|