<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0

    1 Tomcat 的目錄結(jié)構(gòu)

    目錄

    描述

    /bin

    存放 Windows 平臺及 Linux 平臺啟動和關(guān)閉 Tomcat 的腳本文件

    /conf

    存放 Tomcat 服務(wù)器的各種配置文件,其中最重要的配置文件是 server.xml

    /server

    包括 3 個子目錄: Class Lib Webapps

    /server/lib

    存放 Tomcat 服務(wù)器所需的各種 JAR 文件 ( 只有 Tomcat 可以訪問 )

    /server/webapps

    存放 Tomcat 自帶的兩個 Web 應(yīng)用: admin manager

    /common/lib

    存放 Tomcat 服務(wù)器以及所有 Web 應(yīng)用都可以訪問的 JAR 文件

    /share/lib

    存放所有 web 應(yīng)用都可以訪問的 JAR 文件 (Tomcat 不能訪問 )

    /logs

    存放 Tomcat 的日志文件

    /webapps

    當(dāng)發(fā)布 web 應(yīng)用時,默認情況下把 web 應(yīng)用文件放于此目錄下

    /work

    Tomcat JSP 生成的 Servlet 放于此目錄下

    注: lib 目錄下都只能接受 JAR 文件,如果類壓縮文件為 ZIP 文件,應(yīng)該將它展開,重新打包為 JAR 文件再拷貝到 lib 目錄下。

    2 、把開放目錄結(jié)構(gòu)的 Web 應(yīng)用打包成 war 文件的方法

    1 )進入 helloapp 應(yīng)用的根目錄 <CATALINA_HOME>/webapps/helloapp

    2 )把整個 web 應(yīng)用打包為 helloapp.war 文件,命令如下: jar cvf helloapp.war *.* ;(展開: jar xvf helloapp.war );

    3 Servlet 的功能

    1 )創(chuàng)建并返回基于客戶請求的動態(tài) html 頁面

    2 )創(chuàng)建可嵌入到現(xiàn)有 html 頁面中的部分 html 頁面( html 片段)

    3 )與其他服務(wù)器資源(如數(shù)據(jù)庫或基于 Java 的應(yīng)用程序)進行通訊

    4 )接收多個客戶機的輸入,并將結(jié)果廣播到多個客戶機上

    5 )根據(jù)客戶請求采用特定的 MIME(Multipurpose Internet Mail Extensions) 類型對數(shù)據(jù)過濾,例如進行圖象格式轉(zhuǎn)換

    4 Servlet API 類框圖

    Servlet 的框圖是由兩個 Java 包組成的: javax.servlet javax.servlet.http 。在 javax.servlet 包中定義了所有的 Servlet 類都必須實現(xiàn)或擴展的通用接口和類。在 javax.servlet.http 包中定義了采用 http 協(xié)議通信的 HttpServlet 類。 ?

    servlet_frame.PNG

    5 Tomcat 服務(wù)器初次執(zhí)行 JSP 的過程

    ?flow.PNG


    JSP 生成的 Servlet 類實現(xiàn)了 javax.servlet.jsp.JspPage 接口,該接口擴展了 javax.servlet.Servlet 接口。在 javax.servlet.JspPage 接口中定義了代表 JSP 生命周期的方法 JspInit() JspDestory() ,類似 Servlet Init() Destory() 方法。

    6 JSP 指令: page include taglib

    page 指令: 可以指定所使用的腳本語言、 JSP 代表的 Servlet 實現(xiàn)的接口、 Servlet 擴展的類以及導(dǎo)入的軟件包。語法: <%@ page 屬性 1=” 1” 屬性 2=” 2” %>

    page 指令屬性表:

    ?

    language

    指定文件所用的腳本語言。目前僅 java 為有效值和默認值。該指令作用于整個文檔。當(dāng)多次使用這一指令時,只有第一次有效。

    <%@ page language=”java”? %>

    method

    指定 Java 程序片段( Scriptlet )所屬的方法的名稱。 Java 程序片段會成為指定方法的主體。默認的方法是 service 方法。當(dāng)多次使用該指令時,只有第一次是有效的。該屬性的有效值包括 Service doGet doPost 等。

    <%@ page method=”doPost”? %>

    import

    指定導(dǎo)入的 Java 軟件包名或類名列表,該列表用逗號分隔。在 JSP 文件中,可以多次使用該指令來導(dǎo)入不同的軟件包

    <%@ page import=”java.io.*,jav

    a.util.Hashtable”? %>

    content_type

    指定響應(yīng)結(jié)果的 MIME 類型。默認的 MIME 類型是 text/html ,默認字符編碼為 ISO-8859-1 。當(dāng)多次使用該指令時,只有第一次使用是有效的

    <%@ page content_type=”text/html;

    charset=GB2312” %>

    session=”true/false”

    指定 JSP 頁面是否使用 Session ,默認為 true

    <%@ page session=”true” %>

    errorPage=”error_url

    當(dāng)發(fā)生異常時,客戶請求重新定向到哪個網(wǎng)頁

    <%@ page errorPage=

    ”errorpage.jsp” %>

    isErrorPage=”T/F”

    表示此 JSP 網(wǎng)頁是否為處理異常的網(wǎng)頁

    <%@ page isErrorPage=”true” %>

    include 指令: JSP 可以通過 include 指令來包含其它文件。被包含的文件可以是 JSP 文件、 HTML 文件或文本文件。如果被包含的是 JSP 文件,那么被包含的 JSP 文件中的 Java 程序片段也會被執(zhí)行。

    include 指令的語法為:

    <%@ include file=”relativeURL” %>

    ?

    7 JSP 隱含對象

    在編寫 JSP 程序時,可以直接使用 Servlet/JSP 容器提供的隱含對象。使用這些對象的引用變量時不需要任何變量聲明。 JSP 中的隱含對象列表:

    隱含對象

    ???

    request

    javax.servlet.HttpServletRequest

    response

    javax.servlet.HttpServletResponse

    pageContext

    javax.servlet.jsp.PageContext

    application

    javax.servlet.ServletContext

    out

    javax.servlet.jsp.JspWriter

    config

    javax.servlet.ServletConfig

    page

    java.lang.Object( 相當(dāng)于 Java 中的 this 關(guān)鍵字 )

    session

    javax.servlet.http.HttpSession

    exception

    java.lang.Exception

    8 、裝載并注冊數(shù)據(jù)庫驅(qū)動程序

    // 裝載 JdbcOdbcDriver class

    Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

    // 裝載并注冊 SQLServer Driver

    Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);

    java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());

    // 裝載并注冊 OracleDriver

    Class.forName(“oracle.jdbc.driver.OracleDriver”);

    java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    // 裝載并注冊 MySQLDriver

    Class.forName(“com.mysql.jdbc.Driver”);

    java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());// 不是必要步驟

    ?

    常用的數(shù)據(jù)庫的 JDBCURL 形式

    ◆如果通過JDBC-ODBC Driver連接數(shù)據(jù)庫,形式如下:

    jdbc:odbc:datasource

    ◆對于Oracle數(shù)據(jù)庫連接,形式如下:

    jdbc:oracle:thin:@localhost:1521:sid

    ◆對于SQL Server數(shù)據(jù)庫連接,形式如下:

    jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookDB

    ◆對于MySQL數(shù)據(jù)庫連接,形式如下:

    jdbc:mysql://localhost:3306/BookDB

    中文編碼轉(zhuǎn)換問題

    String dbUrl=”jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GB2312”

    9 HttpSession 接口

    ?

    ?

    getId()

    返回 session ID

    invalidate()

    使當(dāng)前的 session 失效, servlet 釋放其占用的資源

    setAttriibute(String name,Object object)

    將一對 name/value 屬性保存在 HttpSession 對象中

    getAttribute(String name)

    根據(jù) name 參數(shù)返回保存在 HttpSession 對象中的屬性名

    getAttributeNames()

    以數(shù)組的方式返回 HttpSession 對象中所有的屬性名

    isNew

    判斷是否是新建的 session

    setMaxInactiveinterval()

    設(shè)定一個 session 可以處于不活動狀態(tài)的最大時間間隔,以秒為單位

    getMaxInactiveinterval()

    得到 session 的最大時間間隔

    10 、一個標準的 JavaBean 的特征

    1 JavaBean 是一個公共的 (public) 類;

    2 JavaBean 有一個不帶參數(shù)的構(gòu)造方法;

    3 JavaBean 通過 setXXX 方法設(shè)置屬性,通過 getXXX 方法獲取屬性。

    11 JSP 訪問 JavaBean 的語法

    可以通過程序代碼來訪問 JavaBean ,也可以用特定的 JSP 標簽來訪問 JavaBean

    (1) 導(dǎo)入 JavaBean

    如: <%@ page import=”mypack..CounterBean” %>

    (2) 聲明 JavaBean 對象

    <jsp:useBean id=”myBean” class=”mypack.CounterBean” scope=”session”/>

    注: scope 可選值包括 page request session application ,默認為 page

    (3) 訪問 JavaBean 屬性

    JSP 提供了訪問 JavaBean 屬性的標簽,如果要將 JavaBean 的某個屬性輸出到網(wǎng)頁上,可以用 <jsp:getProperty> 標簽,如:

    <jsp:getProperty name=”myBean” property=”count”/>

    如果要給 JavaBean 的某個屬性賦值,可以用 <jsp:setProperty> 標簽,如:

    <jsp:setProperty name=”myBean” property=”count” value=”0”/>

    12 Tomcat 安全域的類型

    ?

    內(nèi)存域

    MemoryRealm

    在初始化階段,從 XML 文件中讀取安全驗證信息,并把它們以一組對象的形式存放在內(nèi)存中

    JDBC

    JDBCRealm

    通過 JDBC 驅(qū)動程序訪問存放在數(shù)據(jù)庫中的安全驗證信息

    數(shù)據(jù)源域

    DataSourceRealm

    通過 JNDI 數(shù)據(jù)源訪問存放在數(shù)據(jù)庫中的安全驗證信息

    JNDI

    JNDIRealm

    通過 JNDI provider 訪問存放在基于 LDAP 的目錄服務(wù)器中的安全驗證信息

    13 MVC 設(shè)計模式

    MVC 模塊

    模型

    代表應(yīng)用程序狀態(tài)和業(yè)務(wù)邏輯

    視圖

    提供可交互式的客戶界面,向客戶顯示模型數(shù)據(jù)

    控制器

    響應(yīng)客戶的請求,根據(jù)客戶的請求來操縱模型,并把模型的響應(yīng)結(jié)果經(jīng)由視圖展現(xiàn)給客戶

    ?

    ?

    JDBC-ODBC 編程的典型步驟

    1 、輸入 java.sql

    在程序的開頭,必須加入下面的代碼:

    Import java.sql.*

    2 、聲明變量

    JDBCDemo.java ,聲明了下面三個變量, stmt 用于 select 語句, pstmt 用于 update 語句, rs 用于 select 的結(jié)果集。

    Statement stmt;

    PreparedStatement pstmt;

    ResultSet rs;

    3 、加載 jdbc-odbc 橋驅(qū)動程序

    Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

    4 、定義 JDBC URL

    URL 中使用的 JDBCDemo 就是在“控制面板”的“ ODBC 數(shù)據(jù)源( 32 位)”中設(shè)置的 ODBC 數(shù)據(jù)源 JDBCDemo

    String url=”jdbc:odbc:JDBCDemo”;

    5 、連接數(shù)據(jù)庫

    Connection con=DriverManager.getConnection(url);

    6 、進行相應(yīng)的數(shù)據(jù)操作

    如果需要執(zhí)行 select 操作,可以使用 Statement 對象或 PreparedStatement 對象,如果需要進行 update 操作,就只能使用 PreparedStatement 對象。

    7 、關(guān)閉數(shù)據(jù)庫連接

    Con.close();

    ?

    源程序: JDBCDemo.java

    /*

    * @(#) JDBCDemo.java

    */

    import java.sql.*;

    ?

    /**

    * 演示 JDBC 操作數(shù)據(jù)庫的各項功能,包括表的 create drop insert update select

    *@versin 1.00 2004/09/05

    *@author spring

    *since jdk1.3

    */

    ?

    public class JDBCDemo

    {

    ?????? public static void main(String args[])

    ?????? {

    ????????????? try{

    ????????????? Statement stmt;

    ????????????? PreparedStatement pstmt;

    ????????????? ResultSet rs;

    ?????????????

    ????????????? // 加載 jdbc-odbc 橋驅(qū)動程序

    ????????????? Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    ?????????????

    ????????????? // 定義 JDBC URL

    ????????????? String url="jdbc:odbc:JDBCDemo";

    ?????????????

    ????????????? // 得到與數(shù)據(jù)庫的連接

    ????????????? Connection con=DriverManager.getConnection(url);

    ?????????????

    ????????????? // 顯示 URL 和連接信息

    ????????????? System.out.println("URL:"+url);

    ????????????? System.out.println("Connection:"+con);

    ?????????????

    ????????????? // 得到一個 Statement 對象

    ????????????? stmt=con.createStatement();

    ?????????????

    ????????????? // 如果表 DemoTable 已經(jīng)存在,則刪除之,否則,拋擲一個異常

    ????????????? System.out.println("If DemoTable Exist,Delete!");

    ????????????? try{

    ????????????? ???? stmt.executeUpdate("DROP TABLE DEMOTable");

    ????????????? ?? }catch(Exception e){

    ????????????? ?? ? System.out.println(e);

    ????????????? ?? ? System.out.println("Not Delete");

    ????????????? }

    ?????????????

    ????????????? // 在數(shù)據(jù)庫中創(chuàng)建一個表 DemoTable

    ????????????? stmt.executeUpdate("CREATE TABLE DemoTable(id int,val char(15) not null)");

    ????????????? System.out.println("Table DemoTable created!");

    ?????????????

    ????????????? // 在表中插入一些值

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(1,'one')");

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(2,'two')");

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(3,'three')");

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(4,'four')");

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(5,'five')");

    ?????????????

    ????????????? // 得到另一個 Statement 對象

    ????????????? stmt=con.createStatement();

    ?????????????

    ????????????? // 查詢數(shù)據(jù)庫中的表 DemoTable ,得到以 ID 排序后的所有記錄,并存儲在 RS

    ????????????? rs=stmt.executeQuery("select * from DemoTable order by id");

    ?????????????

    ????????????? // 顯示表 DemoTable 中的所有記錄

    ????????????? System.out.println("Display all results:");

    ????????????? while(rs.next())

    ????????????? {

    ???????????????????? int theInt=rs.getInt("id");

    ???????????????????? String str=rs.getString("val");

    ???????????????????? System.out.println("id=" + theInt + "val=" + str);

    ????????????? }

    ?????? ??????

    ?????????????

    ????????????? // 創(chuàng)建已準備好的語句,更新 DemoTable 表中某條記錄 val 字段

    ????????????? // 已準備好的語句接受兩個參數(shù)

    ?????????????

    ????????????? /**********************

    ????????????? pstmt=con.preparedStatement("update DemoTable set val=? where id=?");

    ?????????????

    ????????????? // 更改表 DemoTable 中的第 2 條記錄的 val 字段的值

    ????????????? // 填充 update 語句中的 "?", 并執(zhí)行 update 語句

    ????????????? pstmt.setString(1,"Hello!");

    ????????????? pstmt.setInt(2,2);

    ????????????? pstmt.executeUpdate();

    ????????????? System.out.println("Update row number 2:ok.");

    ?????????????

    ?????????????

    ????????????? // 顯示表 DemoTable 中更新后的第 2 條記錄

    ????????????? stmt=con.createStatement();

    ????????????? rs=stmt.executeQuery("select * from DemoTable order by id");

    ????????????? System.out.println("Display row 2:");

    ????????????? if(rs.next() && rs.next())

    ????????????? {

    ???????????????????? int theInt=rs.getInt("id");

    ???????????????????? String str=rs.getString("val");

    ???????????????????? System.out.println("id=" + theInt + "val=" + str);

    ????????????? }

    ?????????????

    ????????????? ***************/

    ?????????????

    ?????????????

    ????????????? // 關(guān)閉與數(shù)據(jù)庫的連接

    ????????????? con.close();

    ?????? }catch(Exception e){?? // 異常處理

    ?????? e.printStackTrace();

    }

    }

    }

    ?

    JSP 的中文環(huán)境

    常見的處理 JSP 的中文的方法有兩種:

    <%@ page contentType=”text/html;charset=gb2312”%>

    <%

    String Hi=” 您好 ”;

    byte[] tmpbyte=Hi.getBytes(“ISO8859_1”);

    Hi=new String(tmpbyte);

    Out.print(Hi);

    %>

    通過簡單總結(jié),中文處理發(fā)生于以下幾個地方:

    1 )在 url 附帶中文參數(shù),可以直接讀取。

    例如: <%=request.getParameter(“showword”)%>

    (2) 與數(shù)據(jù)庫有關(guān)的各種 sql 操作,使用 Access 沒有發(fā)生問題。

    ?

    1 JSP 基本語法

    1.1 JSP 語句類型

    JSP 語句主要有以下五種類型:

    編譯器指令 <%@ 指令 %>

    聲明 <%! 預(yù)定義內(nèi)容 %>

    表達式 <%= 表達式 %>

    腳本 Scriptlet<% 代碼 %>

    注解 <%-- 注釋內(nèi)容 --%>

    示例:

    <%@ page language=”java”%>

    <html>

    <head>

    <title>Hello,JSP</title>

    </head>

    <body bgcolor=red>

    <%! String strHello=”How are you”;%>

    <h1><%=strHello%></h1>

    <%

    out.println(“This is a sample”);

    %>

    <%--This is a sample of jsp--%>

    </body>

    </html>

    1.2 指令語法

    1.2.1 include 指令

    JSP 中包含一個靜態(tài)的文件,同時解析這個文件中的 JSP 語句。

    語法: <%@ include file=”relativeURL”%>

    屬性: #file=”relativeURL”

    1.2.2 Page 指令

    定義 JSP 文件中的全局屬性

    語法:

    <%@ page

    [language=”java”]

    [extends=”package.class”]

    [import=”{package.class|package.*},….]

    [session=”true|false”]

    [buffer=”none|8kb|sizekb”]

    [autoFlush=”true|false”]

    [isThreadSafe=”true|false”]

    [info=”text”]

    [errorPage=”relativeURL”]

    [contentType=”mimeType[;charset=characterSet]”|”text/html;charset=ISO-8859-1”]

    [isErrorPage=”true|false”]

    %>

    示例:

    <%@ page import=”java.util.*,java.lang.*”%>

    <%@ page buffer=”5kb” autoFlush=”false”%>

    <%@ page errorPage=”error.jsp”%>

    1.2.3 聲明

    JSP 程序中聲明合法的變量和方法

    語法:

    <%! declaration;[daclaration;]+…%>

    示例:

    <%! int=0;%>

    <%! int a,b,c;%>

    <%! Circle a=new Circle(2,0);%>

    1.2.4 表達式

    包含一個有效的程序段

    語法:

    <% code fragment%>

    1.3 動作語法( Action

    JSP 動作語法應(yīng)用 XML 語法結(jié)構(gòu)來控制 Servlet 引擎的行為,你可以動態(tài)地插入文件、重用 Java Beans 控件、導(dǎo)向另一個頁面或產(chǎn)生 Java Html 插件。可用的動作有:

    jsp:include :在頁面得到請求時包含一個文件;

    jsp:useBean :使用 JavaBean 控件;

    jsp:setProperty :設(shè)置 JavaBean 的屬性;

    jsp:getProperty :將 JavaBean 的屬性插入到輸出中;

    jsp:forward :引導(dǎo)請求者進入新的頁面

    jsp:plugin

    1.3.1 jsp:include 動作

    這個動作讓你在頁面生成時插入文件。

    語法:

    <jsp:include page=”relativeURL” flush=”true”/>

    1.3.2 jsp:useBean 動作

    這個動作讓你裝入這個 JSP 頁中要用到的 JavaBean ,它讓你能夠充分應(yīng)用 java 的重用性。

    語法:

    <jsp:useBean id=”name” class=”package.class”/>

    1.3.3 jsp:setProperty 動作

    jsp:setProperty 設(shè)置所要應(yīng)用的 Bean 的屬性值,你可以在兩種情況下應(yīng)用此動作。

    1 、用在 jsp:useBean 之后,表示如下:

    <jsp:useBean id=”myName”…/>

    <jsp:setProperty name=”myName” property=someProperty”…/>

    在這種情況下,此 jsp:setProperty 動作不管是新的例示還是原有的 Bean 對象,都會執(zhí)行。

    2 、用在 jsp:useBean 實體之內(nèi),表示如下:

    <jsp:useBean id=”myName”…>

    <jsp:setProperty name=”myName” property=”someProperty”…/>

    </jsp:useBean>

    ?

    ?

    JDBC API 最重要的接口是:

    * java.sql.DriverManager 處理驅(qū)動的調(diào)入并且對產(chǎn)生新的數(shù)據(jù)庫連接提供支持。

    * java.sql.Connection 代表對特定數(shù)據(jù)庫的連接。

    * java.sql.Statement  代表一個特定的容器,來對一個特定的數(shù)據(jù)庫執(zhí)行 SQL 語句。

    * java.sql.ResultSet  控制對一個特定語句的行數(shù)據(jù)的存取。

    其中 java.sql.Statement 又有兩個子類型:

    1. java.sql.PreparedStatement  用于執(zhí)行預(yù)編譯的 SQL 語句。

    2. java.sql.CallableStatement  用于執(zhí)行對一個數(shù)據(jù)庫內(nèi)嵌過程的調(diào)用。

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?



    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請注明來源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-05-10 11:04 zhyiwww 閱讀(1521) 評論(3)  編輯  收藏 所屬分類: j2ee

    FeedBack:
    # re: JSP資料整理--培訓(xùn)資料
    2006-10-31 11:09 | inlife.cn
    頂一個。好詳細啊。  回復(fù)  更多評論
      
    # re: JSP資料整理--培訓(xùn)資料
    2006-12-09 00:56 | batxut
    強,值得收藏,在我的Blog作個鏈接到這里ミ^ō^ミ  回復(fù)  更多評論
      
    # re: JSP資料整理--培訓(xùn)資料
    2006-12-09 00:58 | batxut
    oh,my god!我的主頁Blog填寫錯了,再提交一個!!  回復(fù)  更多評論
      
    主站蜘蛛池模板: 在线观看特色大片免费网站| 永久黄网站色视频免费观看| 亚洲午夜福利精品久久| 亚洲三级在线视频| 日韩视频在线观看免费| 凹凸精品视频分类国产品免费| 亚洲综合区图片小说区| 国产精品亚洲αv天堂无码| 一本色道久久88亚洲精品综合 | 欧洲精品99毛片免费高清观看| 国产一级淫片a免费播放口之| 亚洲伊人久久精品| 国产无遮挡无码视频免费软件 | 好男人视频在线观看免费看片| 亚洲av综合色区| 四虎精品成人免费视频| 成人最新午夜免费视频| 亚洲经典在线观看| 国产精成人品日日拍夜夜免费 | 无码 免费 国产在线观看91| 大学生一级特黄的免费大片视频| 99久久亚洲精品无码毛片| 成人A片产无码免费视频在线观看| 国产精品亚洲w码日韩中文| 国产亚洲高清在线精品不卡| 我要看WWW免费看插插视频| 亚洲男人天堂2017| 国产一区二区免费视频| 久久久无码精品亚洲日韩软件| 国产精品久久久久久亚洲影视| 成人毛片免费观看视频大全| 亚洲三级视频在线观看| 18未年禁止免费观看| 亚洲精品福利视频| 曰批全过程免费视频在线观看无码 | 国产VA免费精品高清在线| 亚洲国产成人久久笫一页| 亚洲国产日韩一区高清在线| a级毛片黄免费a级毛片| 亚洲精品成人片在线观看精品字幕| 亚洲精品偷拍视频免费观看|