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

首頁 > 學院 > 開發設計 > 正文

Asp組件中級入門與精通系列

2019-11-17 04:14:03
字體:
來源:轉載
供稿:網友

asp組件中級入門與精通系列之一

初級教程寫了七篇了,肯定還有一些初級的東西需要寫,我會慢慢的進行補充

中級教程的內容:

這可能也是大家最關心的:如:數據庫的操作與封裝。Asp內置對象的使用。這些部分我會花費較長的篇幅來說明,這一部分內容需要你能夠比較熟練的使用ADO操作數據庫并且對asp的5大對象比較熟悉。

我們看一下網上比較流傳的一些資料:
眾所周知,ASP內置了Response、Request、Server、session、application五個對象,其實這五個內置對象正是IIS控制臺初始化的五個ActiveX DLL組件,既然IIS可以初始化這五個組件用于ASP中,我們當然也可以直接在我們的ActiveX DLL中引用這些組件來實現我們的編程,也就是說我們可以在VB應用程序中通過引用這些組件來實現訪問ASP內置對象的功能。

  只要你安裝了PWS4或者IIS4以上的WEB服務器,你就擁有了一個名稱叫做“Microsoft Active Server Pages Object”的對象庫,我們可以在VB的ActiveX DLL應用中引用這個對象庫,通過引用這個對象庫,我們就獲得了一個對象(類):ScriptingContext,這個對象也正是我們整個文章探討的核心對象。對象庫內的關系如下:

  對象庫      類        類成員

  ASPTypeLibrary ScriptingContext   Application

                    Request

                    Response

                    Session

                    Server

  通過上面的關系圖,我們就可以很容易理解類ScriptingContent。

下面我們來看一個具體的例子吧:

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fZ1
引用“Microsoft Active Server Pages Object”對象庫。
創建兩個組件事件:OnStartPage以及OnEndPage
在事件OnStartPage中創建類ScriptingContent的一個引用。
實例化類ScriptingContent。

代碼如下:

 程序代碼
Option Explicit
'對象的聲明
Dim myResponse As Response
Dim myRequest As Request
Dim myApplication As Application
Dim myServer As Server
Dim mySession As Session
'當組件被創建的時候會觸發這個事件
Public Sub OnStartPage(myScriptingContent As ScriptingContext)
     '進行對象的實例化
     Set myResponse = myScriptingContent.Response
     Set myRequest = myScriptingContent.Request
     Set myServer = myScriptingContent.Server
     Set myApplication = myScriptingContent.Application
     Set mySession = myScriptingContent.Session
     myResponse.Write "ActiveX DLL組件已經被創建了!"
End Sub

'當組件被銷毀的時候觸發這個事件
Public Sub OnEndPage()
     myResponse.Write "ActiveX DLL組件已經被銷毀!"
     '銷毀對象
     Set myResponse = Nothing
     Set myRequest = Nothing
     Set myServer = Nothing
     Set myApplication = Nothing
     Set mySession = Nothing
End Sub

'定義我們自己的一個組件方法
Public Sub HelloWorld()
     myResponse.Write "這是用asp內置對象寫的"
End Sub


測試
打開visual interdev6.0,生成一個asp文件


 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
set obj=server.CreateObject("fCom.fZ1")
call obj.HelloWorld()
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執行此asp文件,得到結果如下:
ActiveX DLL組件已經被創建了!這是用asp內置對象寫的 ActiveX DLL組件已經被銷毀!

Asp組件中級入門與精通系列之二

我們先來看看Application對象
以前使用Application對象常常用于計數器和數據庫的連接串
我們以計數器為例:
先看global.asa文件,這個比較簡單


 程序代碼
<script  language =vbscript runat=server>
sub Application_onstart
       Application("Counter")=0
end sub
</script>


然后

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fZ2
引用“Microsoft Active Server Pages Object”對象庫。
創建兩個組件事件:OnStartPage以及OnEndPage
在事件OnStartPage中創建類ScriptingContent的一個引用。
實例化類ScriptingContent。

代碼如下:

 程序代碼
Option Explicit
'對象的聲明
Dim myResponse As Response
Dim myRequest As Request
Dim myApplication As Application
Dim myServer As Server
Dim mySession As Session
'當組件被創建的時候會觸發這個事件
Public Sub OnStartPage(myScriptingContent As ScriptingContext)
     '進行對象的實例化
     Set myResponse = myScriptingContent.Response
     Set myRequest = myScriptingContent.Request
     Set myServer = myScriptingContent.Server
     Set myApplication = myScriptingContent.Application
     Set mySession = myScriptingContent.Session
End Sub
'當組件被銷毀的時候觸發這個事件
Public Sub OnEndPage()
     '銷毀對象
     Set myResponse = Nothing
     Set myRequest = Nothing
     Set myServer = Nothing
     Set myApplication = Nothing
     Set mySession = Nothing
End Sub
'可以看到,把以前asp中寫的搬到了vb中,寫法是一樣的
Public Sub ShowCounter()
    Dim intcounter As Long
    myApplication.Lock
    intcounter = myApplication("counter")
    intcounter = intcounter + 1
    myApplication("counter") = intcounter
    myApplication.UnLock
    myResponse.Write CStr(intcounter)
End Sub


測試

打開visual interdev6.0,生成一個asp文件


 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
dim obj
set obj=server.CreateObject("fCom.fZ2")
obj.ShowCounter()
%>
</BODY>
</HTML>


配置好虛擬目錄,需要將global.asa文件放到根目錄下,在ie中執行此asp文件,刷新頁面,就可以看到一個不斷變化的數字。
Application的用法就講到這里。

Asp組件中級入門與精通系列之三

Session相比較就簡單多了

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fZ3
引用“Microsoft Active Server Pages Object”對象庫。
創建兩個組件事件:OnStartPage以及OnEndPage
在事件OnStartPage中創建類ScriptingContent的一個引用。
實例化類ScriptingContent。

代碼如下:


 程序代碼
Option Explicit
'對象的聲明
Dim myResponse As Response
Dim myRequest As Request
Dim myApplication As Application
Dim myServer As Server
Dim mySession As Session
'當組件被創建的時候會觸發這個事件
Public Sub OnStartPage(myScriptingContent As ScriptingContext)
'進行對象的實例化
Set myResponse = myScriptingContent.Response
Set myRequest = myScriptingContent.Request
Set myServer = myScriptingContent.Server
Set myApplication = myScriptingContent.Application
Set mySession = myScriptingContent.Session
End Sub

'當組件被銷毀的時候觸發這個事件
Public Sub OnEndPage()
'銷毀對象
Set myResponse = Nothing
Set myRequest = Nothing
Set myServer = Nothing
Set myApplication = Nothing
Set mySession = Nothing
End Sub
'可以看到,把以前asp中寫的搬到了vb中,寫法是一樣的
'得到所有的session的變量和值
Public Sub ShowSession()
'可以設置超時20分鐘
mySession.Timeout = 20
Dim myitem
'得到所有的session
For Each myitem In mySession.Contents
myResponse.Write myitem & ": " & mySession.Contents(myitem)
myResponse.Write "<br>"
Next
End Sub


測試

打開visual interdev6.0,生成一個asp文件
配置好虛擬目錄,在ie中執行此asp文件,可以看到

name: 龍卷風
age: 26
特長: 組件

Session的用法就講到這里。Session其他的用法類似。

Asp組件中級入門與精通系列之四

我們學習來Request
看如何在組件中得到頁面提交的內容

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fZ4
引用“Microsoft Active Server Pages Object”對象庫。
創建兩個組件事件:OnStartPage以及OnEndPage
在事件OnStartPage中創建類ScriptingContent的一個引用。
實例化類ScriptingContent。

代碼如下:

 程序代碼
Option Explicit
'對象的聲明
Dim myResponse As Response
Dim myRequest As Request
Dim myApplication As Application
Dim myServer As Server
Dim mySession As Session
'當組件被創建的時候會觸發這個事件
Public Sub OnStartPage(myScriptingContent As ScriptingContext)
'進行對象的實例化
   Set myResponse = myScriptingContent.Response
     Set myRequest = myScriptingContent.Request
     Set myServer = myScriptingContent.Server
     Set myApplication = myScriptingContent.Application
     Set mySession = myScriptingContent.Session
End Sub

'當組件被銷毀的時候觸發這個事件
Public Sub OnEndPage()
     '銷毀對象
    Set myResponse = Nothing
     Set myRequest = Nothing
     Set myServer = Nothing
     Set myApplication = Nothing
     Set mySession = Nothing
End Sub

'可以看到,把以前asp中寫的搬到了vb中,寫法是一樣的
Public Sub ShowRequest()
    Dim myitem
    'Post方式的
    For Each myitem In myRequest.Form
        myResponse.Write myitem & ": " & myRequest.Form(myitem)
        myResponse.Write "<br>"
    Next
    ‘Get方式的
    For Each myitem In myRequest.QueryString
       myResponse.Write myitem & ": " & myRequest.QueryString(myitem)
       myResponse.Write "<br>"
    Next
    '單個信息
    myResponse.Write "其中一個信息是" & ": " & myRequest("username")
    myResponse.Write "<br>"
End Sub


測試

打開visual interdev6.0,生成一個fz41.asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<form action="fz4_result.asp" method="post">
<INPUT id=text1 name=username>
<INPUT id=text2 name=age>
<INPUT id=submit1 type=submit value=Submit name=提交>
</form>
</BODY>
</HTML>


還需要生成一個提交后的fz4_result.asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
dim obj
set obj=server.CreateObject("fCom.fZ4")
call obj.ShowRequest
%>
</BODY>
</HTML>


此外我們還要看一看Get方式提交的,所以需要一個fz42.asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<form action="fz4_result.asp?username='"& username &"'& age='"& age &"'" method="get" id=form1 name=form1>
<INPUT id=text1 name=username>
<INPUT id=text2 name=age>
<INPUT id=submit1 type=submit value=Submit name=提交>
</form>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執行fc41.asp文件,輸入內容后,點擊按鈕,可以看到

username: 龍卷風
age: 26
提交: Submit
其中一個信息是: 龍卷風

我們再來執行在ie中執行fc42.asp文件,輸入內容后,點擊按鈕,可以看到

username: 龍卷風
age: 26
提交: Submit
其中一個信息是: 龍卷風

同時地址欄變成了
http://yang/xml/fz4_result.asp?username=%C1%FA%BE%ED%B7%E7&age=26&%CC%E1%BD%BB=Submit

未完待續

Asp組件中級入門與精通系列之五

我們學習來看一下Response對象。其實我們前面的教程中一直都在使用這個對象的Write方法。

這里我們用Response對象設置cookie。

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fZ5
引用“Microsoft Active Server Pages Object”對象庫。
創建兩個組件事件:OnStartPage以及OnEndPage
在事件OnStartPage中創建類ScriptingContent的一個引用。
實例化類ScriptingContent。

代碼如下:

 程序代碼
Option Explicit
'對象的聲明
Dim myResponse As Response
Dim myRequest As Request
Dim myApplication As Application
Dim myServer As Server
Dim mySession As Session

'當組件被創建的時候會觸發這個事件
Public Sub OnStartPage(myScriptingContent As ScriptingContext)
'進行對象的實例化
Set myResponse = myScriptingContent.Response
Set myRequest = myScriptingContent.Request
Set myServer = myScriptingContent.Server
Set myApplication = myScriptingContent.Application
Set mySession = myScriptingContent.Session
End Sub

'當組件被銷毀的時候觸發這個事件
Public Sub OnEndPage()
'銷毀對象
Set myResponse = Nothing
Set myRequest = Nothing
Set myServer = Nothing
Set myApplication = Nothing
Set mySession = Nothing
End Sub

'從頁面中設置Cookie,組件中得到
Public Sub GetCookie()
Dim myitem
'全部信息
For Each myitem In myRequest.Cookies
myResponse.Write myitem & ": " & myRequest.Cookies.Item(myitem)
myResponse.Write "<br>"
Next
'單個信息
myResponse.Write "其中用戶姓名是" & ": " & myRequest.Cookies("username")
myResponse.Write "<br>"
myResponse.Write "其中用戶年齡是" & ": " & myRequest.Cookies("age")
myResponse.Write "<br>"
End Sub

'組件中設置cookie,頁面中得到
Public Sub SetCookie()
myResponse.Cookies("com_username") = "龍卷風"
myResponse.Cookies("com_age") = 26
myResponse.Expires = #9/13/2004#
End Sub


編譯成Dll文件,系統自動會注冊。
否則就手工注冊 Regsvr32 f:/test/fcom.dll

測試

打開visual interdev6.0,生成一個fz5.asp文件

配置好虛擬目錄,在ie中執行fc5.asp文件,可以看到

龍卷風
26
age: 26
username: 龍卷風
com_age: 26
com_username: 龍卷風
其中用戶姓名是: 龍卷風
其中用戶年齡是: 26

未完待續

Asp組件中級入門與精通系列之六

作為Asp的內置對象,我們最后來學習Server對象

Server對象用的比較多的就是Html編碼,Url編碼和網頁的重定向,傳送。

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fZ6
引用“Microsoft Active Server Pages Object”對象庫。
創建兩個組件事件:OnStartPage以及OnEndPage
在事件OnStartPage中創建類ScriptingContent的一個引用。
實例化類ScriptingContent。

代碼如下:

 程序代碼
Option Explicit
'對象的聲明
Dim myResponse As Response
Dim myRequest As Request
Dim myApplication As Application
Dim myServer As Server
Dim mySession As Session

'當組件被創建的時候會觸發這個事件
Public Sub OnStartPage(myScriptingContent As ScriptingContext)
'進行對象的實例化
Set myResponse = myScriptingContent.Response
Set myRequest = myScriptingContent.Request
Set myServer = myScriptingContent.Server
Set myApplication = myScriptingContent.Application
Set mySession = myScriptingContent.Session
End Sub

'當組件被銷毀的時候觸發這個事件
Public Sub OnEndPage()
'銷毀對象
Set myResponse = Nothing
Set myRequest = Nothing
Set myServer = Nothing
Set myApplication = Nothing
Set mySession = Nothing
End Sub

Public Sub ShowHtml(ByVal strHtml As String)
myResponse.Write myServer.HTMLEncode(strHtml)
End Sub

Public Sub ShowUrl(ByVal strUrl As String)
myResponse.Write myServer.URLEncode(strUrl)
End Sub

Public Sub ExecuteUrl()
myServer.Transfer "fz5.asp"
End Sub


編譯成Dll文件,系統自動會注冊。

否則就手工注冊 Regsvr32 f:/test/fcom.dll

測試

打開visual interdev6.0,生成一個fz6.asp文件

配置好虛擬目錄,在ie中執行fc6.asp文件可以看到

呵呵 測試一下

name=Mrs+%C1%FA%BE%ED%B7%E7&age=26

可以使用IE的查看源文件來看HTML編碼

ASP的內置對象就暫時介紹到這里,后面我們還會陸續的學習。

大家也可以舉一反三,學習沒有介紹到的屬性和方法。

Asp組件中級入門與精通系列之七

開始數據庫操作。

常見的組件封裝

1.把數據庫的連接信息封裝起來。

1> 直接返回數據庫連接串,如,組件中

 程序代碼
Public Function datasource() As Variant
datasource = "driver={sql server};server=yang;uid=sa;pwd=; database=northwind"
End Function


asp調用

 程序代碼
set obj=server.CreateObject("webdb.getinfo")
oconn=obj.datasource()

這樣的缺點是很明顯的,在asp文件中,直接response.write oconn即可顯示出數據庫連接串,并沒有起到預期的作用。

2> 返回adodb.connection對象

 程序代碼
Public Function GetConn() As ADODB.Connection
Set conn = New ADODB.Connection
conn.ConnectionString = "PRovider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;passWord=;Initial Catalog=Northwind;Data Source=yang"
conn.Open
Set GetConn = conn
End Function


Asp調用

 程序代碼
Dim DataQuery
Set DataQuery=Server.CreateObject("WebDbtest.GetInfomation")
set rs=server.createobject("adodb.recordset")
sql="select * from employees"
Rs.open sql,DataQuery.getconn,1,3
response.Write Rs("LastName")
Response.write DataQuery.getconn.ConnectionString
set Rs=nothing

這樣看起來不錯,只是Response.write DataQuery.getconn.ConnectionString還是會顯示出數據庫連接串,大家可以測試。

2.將組件封裝到記錄集
可以看一下前段時間寫的http://blog.csdn.net/online/archive/2003/12/11/7764.aspx
這段代碼不好的一點就是數據庫的連接放到了頁面中判斷,連接成功后,才開始訪問數據,個人認為,最好的做法是:

封裝到記錄集,組件方法中連接數據庫,操作完后,及時關閉

盡量在組件中生成HTML代碼,做到全部封裝。如下面的這種方式

而不是部分的封裝。

Asp組件中級入門與精通系列之八

這段時間一直比較忙,呵呵,今天我們來看一下一個完整的數據封裝的、帶分頁的例子

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fZ8
引用“Microsoft Active Server Pages Object”,”Microsoft Activex Data Object 2.7 Library”對象庫。

創建兩個組件事件:OnStartPage以及OnEndPage
在事件OnStartPage中創建類ScriptingContent的一個引用。
實例化類ScriptingContent。

代碼如下:

 程序代碼
Option Explicit
'**************************************************
'作者:龍卷風
'功能:簡單的可以定制的,完全封裝的組件
'時間:2005-01-01
'**************************************************

'對象的聲明
Dim MyResponse As Response
Dim MyRequest As Request
Dim myApplication As Application
Dim myServer As Server
Dim mySession As Session

'私有變量
Private mPageSize As Long
Private mstrSql As String
'當組件被創建的時候會觸發這個事件
Public Sub OnStartPage(myScriptingContent As ScriptingContext)
     '進行對象的實例化
     Set MyResponse = myScriptingContent.Response
     Set MyRequest = myScriptingContent.Request
     Set myServer = myScriptingContent.Server
     Set myApplication = myScriptingContent.Application
     Set mySession = myScriptingContent.Session
End Sub

'當組件被銷毀的時候觸發這個事件
Public Sub OnEndPage()
     '銷毀對象
     Set MyResponse = Nothing
     Set MyRequest = Nothing
     Set myServer = Nothing
     Set myApplication = Nothing
     Set mySession = Nothing
End Sub

'顯示Table
Public Function ShowTable()
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim i As Integer
    Dim j As Integer
    Dim intPage As Integer
    Dim intPageCount As Integer
    Dim strScriptName As String
    Dim intPos As Integer
    Dim intFieldCount As Integer
   
   '得到路徑
    strScriptName = MyRequest.ServerVariables("Script_Name")
    intPos = InStrRev(strScriptName, "/")
    If intPos <> 0 Then
       strScriptName = Mid(strScriptName, intPos + 1)
    End If
    If IsEmpty(MyRequest("page")) Then
        intPage = 1
    Else
        intPage = CInt(MyRequest("page"))
    End If
    On Error GoTo err
    conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=localhost"
    rs.Open mstrSql, conn, adOpenStatic, adLockReadOnly
    '得到記錄數
    intFieldCount = rs.Fields.Count
    '輸出表格
    MyResponse.Write "<table border=1 cellspacing=0 cellpadding=2>" 
    If Not rs.EOF Then
        rs.PageSize = mPageSize
        rs.AbsolutePage = intPage     
        '得到頁數
        intPageCount = rs.PageCount     
        '處理分頁
        If intPage < 1 Then intPage = 1
        If intPage > intPageCount Then intPage = intPageCount
        '輸出表頭
        MyResponse.Write "<tr>"
        For i = 0 To intFieldCount - 1
            MyResponse.Write "<th>" & rs(i).Name & "</th>"
        Next
        MyResponse.Write "</tr>"       
        '輸出內容
        For i = 1 To mPageSize
            If rs.EOF Then
                 Exit For
            End If
            MyResponse.Write "<tr>"
                For j = 0 To intFieldCount - 1
                   MyResponse.Write "<td>" & rs.Fields(j).Value & "</td>"
                Next
            MyResponse.Write "</tr>"
            rs.MoveNext
        Next
        '輸出分頁
        MyResponse.Write "<tr>"
        If intPage <> 1 Then
        MyResponse.Write "<a href=" & strScriptName & "?page=1>[第一頁]</a>"
        MyResponse.Write "<a href=" & strScriptName & "?page=" & intPage - 1 & " >[上一頁]</a>"
        End If
       
        If intPage <> intPageCount Then
        MyResponse.Write "<a href=" & strScriptName & "?page=" & intPage + 1 & ">[下一頁]</a>"
        MyResponse.Write "<a href=" & strScriptName & "?page=" & intPageCount & ">[最后一頁]</a>"
        End If
       
        MyResponse.Write "頁次:<FONT COLOR='Red'>" & intPage & "/ " & intPageCount & "</FONT>"
        MyResponse.Write "</tr>"
    End If
  
    MyResponse.Write "</table>"   
       
    '釋放資源
    If Not rs Is Nothing Then
        If rs.State = 1 Then
            rs.Close
        End If
        Set rs = Nothing
    End If
    If Not conn Is Nothing Then
        If conn.State = 1 Then
            conn.Close
        End If
        Set conn = Nothing
    End If
    Exit Function

err:
    MyResponse.Write err.Number & err.Description
    If Not rs Is Nothing Then
        If rs.State = 1 Then
            rs.Close
        End If
        Set rs = Nothing
    End If
    If Not conn Is Nothing Then
        If conn.State = 1 Then
            conn.Close
        End If
        Set conn = Nothing
    End If
End Function
'定義屬性
Public Property Get ShowPageSize() As Variant
ShowPageSize = mPageSize
End Property

Public Property Let ShowPageSize(ByVal vNewValue As Variant)
mPageSize = vNewValue
End Property

Public Property Get strSQL() As Variant
strSQL = mstrSql
End Property

Public Property Let strSQL(ByVal vNewValue As Variant)
mstrSql = vNewValue
End Property


編譯成Dll文件,系統自動會注冊。
否則就手工注冊 Regsvr32 f:/test/fcom.dll

測試

打開visual interdev6.0,生成一個fz8.asp文件


 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
dim obj
set obj=server.CreateObject("fcom.fz8")
'每頁顯示的記錄數
obj.ShowPageSize=10
'顯示的sql語句
obj.strSQL="select customerid,companyname,contactname,contacttitle,address from customers"
obj.ShowTable()
%>
</BODY>
</HTML>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人在线国产精品| 综合激情国产一区| 国产精品爽黄69天堂a| 久久九九免费视频| 91精品久久久久久久久久久久久| 欧洲午夜精品久久久| 欧美视频一二三| 国产成人精品一区二区在线| 中文字幕亚洲综合久久筱田步美| 性亚洲最疯狂xxxx高清| 欧亚精品中文字幕| 国产一区二区激情| 国产精品视频免费观看www| 国精产品一区一区三区有限在线| 91亚洲精品在线| 久久精品小视频| 亚洲影影院av| 一区二区三区视频观看| 亚洲第一视频在线观看| 日韩毛片在线观看| 国产日韩欧美夫妻视频在线观看| 国产免费一区二区三区在线观看| 日韩精品免费在线观看| 成人综合网网址| 国产精品久久久久久中文字| 精品久久久久久中文字幕大豆网| 91香蕉嫩草影院入口| 97视频在线观看免费高清完整版在线观看| 国产精品久久久av| 亚洲午夜精品视频| 日韩欧美视频一区二区三区| 欧美中文字幕在线视频| 国产精品美女无圣光视频| 欧美日韩亚洲视频| 亚洲人成网站免费播放| 精品呦交小u女在线| 九九热这里只有在线精品视| 这里只有精品丝袜| 琪琪亚洲精品午夜在线| 在线视频欧美日韩精品| 伊是香蕉大人久久| 成人免费观看49www在线观看| 丝袜情趣国产精品| 97国产在线视频| 91精品国产自产91精品| 久久久在线免费观看| 日韩有码片在线观看| 亚洲第一区中文字幕| 精品国产美女在线| 日av在线播放中文不卡| 欧美超级免费视 在线| 国产精品免费久久久久久| 亚洲精品免费一区二区三区| 孩xxxx性bbbb欧美| 亚洲天堂第一页| 亚洲а∨天堂久久精品9966| 欧美黑人一区二区三区| 欧洲成人性视频| 免费av在线一区| 国产极品精品在线观看| 亚洲综合在线播放| 97视频在线观看视频免费视频| 欧美日韩一区二区精品| 国产精品久久久久久久一区探花| 亚洲最大福利视频网站| 欧美一级大胆视频| 欧美亚洲一级片| 国产91精品久久久久久| 中文字幕在线看视频国产欧美| 狠狠躁18三区二区一区| 国产精品pans私拍| 亚洲欧洲视频在线| 亚洲第一网中文字幕| 久久夜色撩人精品| 国产一区二区三区欧美| 久久久999精品视频| 国产免费成人av| 欧美自拍大量在线观看| 国产欧美一区二区三区视频| 91久久久在线| 欧美伦理91i| 亚洲国产精品va在看黑人| 欧美超级乱淫片喷水| 国产一区二区视频在线观看| 亚洲精选在线观看| 日韩欧美在线看| 欧美成人午夜激情视频| 亚洲色图欧美制服丝袜另类第一页| 日韩亚洲欧美中文高清在线| 欧美尺度大的性做爰视频| 国产精品电影在线观看| 欧美激情a在线| 亚洲一区二区三区在线视频| 欧美日韩午夜激情| 国产又爽又黄的激情精品视频| 日韩av在线高清| 麻豆乱码国产一区二区三区| 亚洲欧美日韩另类| 亚洲欧美日韩久久久久久| 亚州欧美日韩中文视频| 久久99亚洲热视| 亚洲第一av在线| 亚洲香蕉在线观看| 亚洲精品suv精品一区二区| 亚洲伊人久久大香线蕉av| 92看片淫黄大片看国产片| 久久久久久久久久久人体| 亚洲人成在线播放| 成人网址在线观看| 韩国福利视频一区| 久久久久成人网| 亚洲一区二区三区乱码aⅴ| 成人激情视频在线播放| 日本免费一区二区三区视频观看| 国产精品久久久久99| 777国产偷窥盗摄精品视频| 久久久久久久爱| 国产精品激情av电影在线观看| 国产精品丝袜白浆摸在线| 亚洲伊人第一页| 国产精品91在线| 亚洲精品99久久久久| 日韩激情av在线播放| 欧美大片va欧美在线播放| 国产精品美女呻吟| 日韩欧美国产高清91| 在线视频日本亚洲性| 国产一区二区在线播放| 久久噜噜噜精品国产亚洲综合| 2019亚洲男人天堂| 精品亚洲一区二区三区在线播放| 7m精品福利视频导航| 欧美另类暴力丝袜| 日韩av免费看网站| 久久精品中文字幕| 91豆花精品一区| 日韩在线观看网站| 91免费福利视频| 亚洲综合一区二区不卡| 最近的2019中文字幕免费一页| 国产在线一区二区三区| 亚洲国产婷婷香蕉久久久久久| 97人人模人人爽人人喊中文字| 亚洲a∨日韩av高清在线观看| 亚洲第一福利在线观看| 欧美第一黄网免费网站| 亚洲图片在区色| 亚洲黄色在线观看| 日韩免费观看av| 欧美最猛性xxxxx(亚洲精品)| 人人做人人澡人人爽欧美| 国产欧美中文字幕| 欧美电影电视剧在线观看| 亚洲第一区第一页| 91精品久久久久久综合乱菊| 成人情趣片在线观看免费| 91性高湖久久久久久久久_久久99| 欧美一区二三区| 国产精品久久久久久久午夜| 久久综合九色九九| 97福利一区二区| 福利精品视频在线| 精品久久久久久久久久| 国产精品永久免费视频|