六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

ASP概覽

[摘要]1. ASP 1.1. 簡介 Microsoft® Active Server Pages (ASP) 是服務器端腳本環(huán)境,可用來創(chuàng)建交互式 Web 頁并建立強大的 Web 應用程序。我們可以采用VBScript和JScript來創(chuàng)建服務器端腳本,也可以內嵌到HTML中,使得編程更...

1. ASP

1.1. 簡介

Microsoft® Active Server Pages (ASP) 是服務器端腳本環(huán)境,可用來創(chuàng)建交互式 Web 頁并建立強大的 Web 應用程序。我們可以采用VBScript和JScript來創(chuàng)建服務器端腳本,也可以內嵌到HTML中,使得編程更為方便,同時可以調用COM組件(如訪問數(shù)據(jù)庫的ADO等),這樣ASP的功能可以無限地擴增。

服務器上安裝IIS后,可以訪問http://localhost/iishelp/來訪問關于IIS的幫助,其中涵蓋了ASP編程指南,所以我們僅對自學難點加以闡述,幫助您達到速成的目的。


(圖1.1-1)

ASP不是語言,它是一種環(huán)境,具體編程還需要使用VBScript、Jscript等腳本語言。本文示例中除非特殊說明,否則默認采用VBScript。

1.2. 內置對象

盡管在Microsoft提供的資料中會有其他的內置對象,但對于我們來說只要掌握Application、Session、Server、Request和Response五個對象就足夠了。學習前,首先對B/S模式作簡單介紹,B/S是瀏覽器(Browser)/服務器(Server)的縮寫形式,是一種特殊的客戶端(Client)/服務器(Server)模式,客戶端主要通過兩種方式訪問服務器,一種是發(fā)送URL地址到服務器,一種是通過已有的HTML頁面填寫表單提交到服務器;服務器需要做的就是根據(jù)得到的客戶端信息返回結果—通常就是HTML頁面。

如果您做過Socket開發(fā)和DLL開發(fā),希望圖1.2-1能幫助你了解ASP。


可以不嚴格的說,ASP中全局內存訪問是通過Application對象實現(xiàn)的,服務器資源訪問是通過Server對象實現(xiàn)的(Server對象CreateObject方法可以創(chuàng)建COM對象,從而訪問更多服務器資源),客戶端代理中私有內存通過Session進行管理,接收的數(shù)據(jù)相對于服務器來說,就是客戶端的請求信息(Request對象),發(fā)送數(shù)據(jù)就是服務器對客戶端的響應(Response對象實現(xiàn))。

注意:千萬不要總是徘徊在“為什么”中,“到底怎樣接收數(shù)據(jù)”,“到底怎樣發(fā)送數(shù)據(jù)”等等,這些過程不需要了解,你可以認為數(shù)據(jù)就是放在那里的。

1.2.1. Application對象

1.2.1.1. 集合

Application有兩個子集合Contents和StaticObjects,一般情況下StaticObjects能實現(xiàn)的事情通過Contents都可以實現(xiàn),所以我們了解Contents就足夠了。

Contents集合中的內容相當于一個語言中的變量名與其值的對應。比如我想記錄所有在線人員的個數(shù)(UserCount),我們可以這樣賦值:

Application.Contents(“UserCount”)=0

或者

Application.Contents(“UserCount”)=Application.Contents(“UserCount”)+1

通常情況下,我們把Application.Contents(…)替換為Application(…),ASP中這是允許的。所以Application.Contents(“UserCount”)將變?yōu)锳pplication(“UserCount”)。你可以把Application(“UserCount”)整個部分視為一個變量。

集合Contents有兩個方法:Remove及RemoveAll,通過字面即可理解含義,不再贅述。

1.2.1.2. 方法

Lock和Unlock是Application對象提供的兩個方法,由于Application使用的是公共的內存,當多個客戶端同時訪問時就必然會造成沖突,Lock和Unlock就很好的解決了這個問題,寫入Application變量前首先調用Application.Lock鎖定公共內存,等寫入完畢再調用Application.Unlock釋放鎖定,使你的程序很簡單就可以避免多用戶訪問的問題。

1.2.1.3. 事件

關于Application的事件Application_OnStart及Application_OnEnd請參照Global.asa節(jié)有關介紹。

1.2.1.4. 應用

Application對象的內容存放在公共內存區(qū)域中,對于所有客戶端代理而言皆是完全訪問的。公共的事物適合做公共的事情,比如計數(shù)器和一些公共對象。

1.2.2. Session對象

1.2.2.1. 集合

Contents和StaticObjects集合是Session中重要組成部分,可以通過調用Session.Contents,來定義Session級的變量,如Session.Contents(“UserLevel”),也可寫作Session(“UserLevel”),我們通常也把Session(“UserLevel”)這一部分作為一個變量看待。

其他略。

1.2.2.2. 屬性

常用的屬性有兩個,一個是SessionID,一個是Timeout。

SessionID在一次Web服務運行周期內,唯一標識一個客戶端。需要注意的是“一次服務運行周期”,如果重起Web服務,SessionID將極大可能與重起前某次的SessionID相同,所以千萬不要用SessionID作為數(shù)據(jù)庫表中主關鍵字。

Timeout表示在客戶端多長時間沒有刷新或發(fā)送請求后,服務器將認為其Session已結束,單位為“分鐘”,IIS5.0中默認為10分鐘。Session.Timeout時間后,將觸發(fā)Session_OnEnd事件。設置此屬性的根本原因是由于http協(xié)議造成的,每次瀏覽器向服務器發(fā)送請求后,就立即斷開,但服務器需要在一定時間內保留客戶端的連接信息,如果用戶超過一定時間(Timeout的值)沒有刷新,發(fā)送請求或者直接關閉了瀏覽器,服務器需要把這個客戶端的Session信息刪除。想象一下,如果Session信息用不刪除,服務器終究會內存不足,然后造成系統(tǒng)崩潰。這也是DoS攻擊的簡單原理。所以,Timeout屬性值的大小必須根據(jù)實際情況設置合適的值。

1.2.2.3. 方法

如果說設置Session.Timeout是為了被動的刪除沒有用的客戶端信息,Session.Abandon就是主動刪除沒有用的客戶端信息,且將主動觸發(fā)Session_OnEnd事件。在Internet中,用您自己的賬號登錄一個網站后,通常會有“退出登錄”的功能,而且網站一般都建議您通過點擊“退出登錄”來退出而不是簡單的關閉瀏覽器。“退出登錄”通常的實現(xiàn)就是刪除當前賬號的登錄信息(可能包含數(shù)據(jù)庫中的信息或者存儲文件中的信息),以防被人盜用。

1.2.2.4. 事件

Session_OnStart和Session_OnEnd事件參見Global.asa節(jié)。

1.2.2.5. 應用

Session的特點就是私有性,所以開發(fā)者通常用來存放登錄用戶的私有信息,如權限、級別等信息。

1.2.3. Server對象

1.2.3.1. 屬性

Server對象僅有一個屬性ScriptTimeout,用來設置腳本的最長運行時間,否則將被中斷。設置單位為秒,默認值為90秒。

Server.ScriptTimeout與IIS管理對象中的元數(shù)據(jù)(Metabase)相互影響,其時間值將取兩者之間的最大值。

1.2.3.2. 方法

關于Execute和GetLastError方法請查閱相關資料。

1.2.3.2.1. CreateObject

ASP對于服務器的訪問能力幾乎全部從Server.CreateObject擴展,如對目錄文件系統(tǒng)的訪問,可以創(chuàng)建Scripting.FileSystemObject對象,如數(shù)據(jù)庫連接可以創(chuàng)建ADODB.Connection對象等等。當然您也可以開發(fā)自己的COM對象,比如加密、文件上載,或者隱藏的業(yè)務邏輯等等。

服務器組件中如果包含OnStartPage和OnEndPage的實現(xiàn),那么創(chuàng)建服務器組件時OnStartPage將被執(zhí)行。

例如,創(chuàng)建文件系統(tǒng)對象FileSystemObject:

Set fso = Server.CreateObject("Scripting.FileSystemObject")

‘然后就可以調用Com的任何方法或屬性了:

Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)

MyFile.WriteLine("This is a test.")

MyFile.Close

Set MyFile = Nothing

Set fso = Nothing




現(xiàn)在,查看一下服務器的C盤根目錄下是否多了一個testfile.txt文件,打開后的文件內容見圖1.2.3.2.1-1:


1.2.3.2.2. HTMLEncode

HTMLEncode對給定的字符串進行HTML編碼,通常是結合Response對象使用。如果需要顯示HTML中的特殊字符,就需要進行編碼,比如“<”編碼為“&lt;”,空格符“ ”編碼為“&nbsp;”等等。

例如:

<%=Server.HTMLEncode("The paragraph tag: <P>") %>


輸出結果為:

The paragraph tag: &lt;P&gt;


瀏覽器解釋處理后,顯示::

The paragraph tag: <P>


1.2.3.2.3. MapPath

MapPath方法主要用來把服務器上的相對路徑或虛擬路徑轉化為絕對路徑。

調用方法:Server.MapPath(path)。

如果path中以“/”或“\”開始,則將path作為虛擬路徑的全路徑取結果返回。

1.2.3.2.4. Transfer

Session.Transfer將把當前ASP文件已經裝配的信息發(fā)送到另外的ASP中,并將結果組合輸出。

例如test.asp內容為:

<HTML><BODY><%

Dim sessvar1

Response.Write Session.SessionID

Response.Write ("<BR>")

Response.Write ("I am going to ASP2 <BR>")

Server.Transfer("test2.asp")

%>


Test2.asp的內容為:

<% Response.Write Session.SessionID %></BODY></HTML>


以上代碼中Response.Write為發(fā)送信息到瀏覽器,請查閱Response對象相關描述。通過URL訪問test.asp,將組合以下結果(鼠標右鍵單擊瀏覽器,然后查看源代碼):

<HTML><BODY>214636745<BR>I am going to ASP2

<BR>214636745</BODY></HTML>


在瀏覽器中顯示如圖1.2.3.2.4-1所示:


(圖1.2.3.2.4-1)



1.2.3.2.5. URLEncode

Server.URLEncode可以對一個字符串進行URL編碼,通常情況下我們用來組合一個鏈接,轉換其中的特殊字符(比如空格、漢字等)。

1.2.3.3. 應用

關于服務器資源的訪問,使用Server是當仁不讓。通過開發(fā)COM,通過Server.CreateObject調用,既掩蓋了業(yè)務邏輯,又充分發(fā)揮ASP環(huán)境的優(yōu)勢。

1.2.4. Request對象

1.2.4.1. 集合

1.2.4.1.1. Cookies

如果對Web有所了解,就應該知道,在客戶端如果沒有特殊的ActiveX支持的話,客戶端的腳本不可能訪問客戶端資源。有些時候,我們希望用戶登錄一個網站后就記錄某些信息,比如以什么賬號登錄的,在關閉再打開瀏覽器后,這些信息依然存在,并且不需要再次登錄。這個時候可以利用瀏覽器管理的Cookies來簡單實現(xiàn)。

Cookies的資源空間很小,所以不可能把所有信息都存放到Cookies中,并且由于存放于客戶端,還會涉及到安全性的若干問題。

Request.Cookies(key)可以返回關于key的值,或者是一個字典(dictionary),如果需要判斷它返回的是值還是字典,可以通過調用Request.Cookies(key).HasKeys的返回值來判斷,True表示為字典,F(xiàn)alse表示為值。

<%=Request.Cookies("myCookie").HasKeys %>




1.2.4.1.2. Form

我們知道在HTML的標記中就有<form>標記,通常我們會看到這樣的HTML代碼:

<form method=”POST” action=”dologin.asp”>

<p align=”center”>賬號:<input type=”text” name=”LoginUser” /></p>

<p align=”center”>口令:<input type=”password” name=”LoginPWD” /></p>

<p align=”center”><input type=”submit” value=”提交”/>&nbsp;<input type=”reset” value=”重寫” /></p>

</form>


在網頁上顯示需要我們輸入賬號與密碼,然后點擊“提交”按鈕就會把數(shù)據(jù)提交到dologin.asp處理,這個時候dologin.asp中就可以通過調用Request.Form(“LoginUser”)與Request.Form(“LoginPWD”)來得到客戶端用戶輸入的相應賬號與口令。

您好,<%=Request.Form("LoginUser") %>,<br>

您輸入的口令為:<%= Request.Form("LoginPWD") %>。<br>


但是并非所有的<form>標記提交到服務器的都可以用Request.Form來得到相應的值,這還需要看<form>標記中method的值是否是”POST”,如果是則可以,否則不行。比如,method的值為”GET”,則等同于通過URL編碼來請求服務器頁面;假設在賬號只能中輸入了“test”,口令中輸入了“123”,則URL將為:

http://localhost/dologin.asp?LoginUser=test&LoginPWD=123


這個是否,服務器中則需要通過Request.QueryString來獲取相應LoginUser與LoginPWD的值了。



1.2.4.1.3. QueryString

Request.QueryString同Request.Form類似,如上節(jié)所述,如果<form>標記中method的值為”GET”或者通過地址來輸入URL,則用Request.QueryString來得到相應值。

URL中ASP腳本“?”后面部分為通過URL傳遞的數(shù)據(jù)部分,以符號“&”來分隔,每一部分鐘中,等號前面可以成為關鍵字(Key),等號后面的部分為相應的值,很多情況下,值這一部分是經過Server.URLEncode編碼后的,Request.QueryString得到相應的值時就已經自動解碼了,所以Server對象中根本不需要提供解碼函數(shù)。

比如上節(jié)中的URL,對應dologin.asp應該這樣實現(xiàn):

您好,<%=Request.QueryString("LoginUser") %>,<br>

您輸入的口令為:<%= Request.QueryString("LoginPWD") %>。<br>




1.2.4.1.4. ServerVariables

ServerVariables集合用來返回所有已確定的環(huán)境變量的值。這些都是跟這次客戶端連接相關的變量。比如Request.ServerVariables(“LOCAL_ADDR”)返回服務器IP地址;Request.ServerVariables(“REMOTE_ADDR”)客戶端IP地址等等。詳細的列表說明請查看“http://localhost/iishelp/iis/htm/asp/vbob5vsj.htm”。

1.2.4.2. 屬性

1.2.4.2.1. TotalBytes

TotalBytes返回客戶端發(fā)送的請求主體的字節(jié)數(shù)。

通常情況下,TotalBytes屬性跟Request.BinaryRead方法結合使用,以得到客戶端發(fā)送來的二進制數(shù)據(jù)流。

1.2.4.3. 方法

1.2.4.3.1. BinaryRead

BinaryRead方法用來得到客戶端通過POST方法提交到服務器的數(shù)據(jù),然后存放到SafeArray中。SafeArray是包含維數(shù)及范圍的數(shù)組。

注意,一旦您使用了BinaryRead方法,再使用Request.Form來獲取相應關鍵字變量的值就會出錯,Request.BinaryRead的使用方法如下:

<%

Dim vntPostedData, lngCount

lngCount = Request.TotalBytes

vntPostedData = Request.BinaryRead(lngCount)

%>






1.2.4.4. 應用

通過訪問Request對象,您可以得到客戶端代理得到客戶端的所有信息。

1.2.5. Response對象

1.2.6. 集合

1.2.6.1. Cookies

Response.Cookies用來向客戶端設置相應的Cookie,設置方法為:

<% Response.Cookies("myCookie") = "Hello World!" %>




1.2.7. 屬性

1.2.7.1. Buffer

Response.Buffer用來標識向客戶端發(fā)送的內容是否緩存,F(xiàn)alse為不緩存,True為緩存。IIS4.0及以下版本默認為False,IIS5中默認為True。

當Response.Buffer設置為緩存時,輸出內容一直等到整個ASP頁處理完畢,或者調用了Response.Flush或Response.End方法后才發(fā)送至客戶端。

1.2.7.2. Charset

Response.Charset用來向返回內容的頭部添加字符集信息,例如簡體中文字符集“GB2312”。

<% Response.Charset= "GB2312" %>




1.2.7.3. ContentType

Response.ContentType用來指出返回客戶端的內容類型,例如HTML類型“text/html”,純文本類型“text/plain”,JPEG圖片類型“image/JPEG”等等。

<% Response.ContentType = "image/JPEG" %>




1.2.7.4. Expires

Response.Expires指出當前網頁經過多少時間后網頁過期,單位“分鐘”。IIS會根據(jù)給出的過期數(shù)值添加到HTTP頭中。但由于服務器時間與客戶端時間的不一致,例如時區(qū)的原因,或者哪個出了問題,設置Response.Expires=0,將不會達到網頁立即過期的效果,相反您可以通過設置Response.ExpireAbsolute來達到立即過期的目的。更好的方式是設置Response.Expires為一個負數(shù),例如:

<% Response.Expires=-1 %>


也可使網頁立即過期。



1.2.7.5. ExpiresAbsolute

Response.ExpiresAbsolute通過設置具體的日期和時間來達到過期的效果。如果僅指定日期而沒有指示時間,網頁將在指定日期的午夜12:00過期;如果僅指定時間而不指定日期,網頁將在腳本運行的當天那個時間過期。

<% Response.ExpiresAbsolute=#May 31,2004 11:11:11# %>


上例將使網頁在2004年5月31日11點11分11秒過期。

1.2.8. 方法

1.2.8.1. AddHeader

AddHeader方法可以在發(fā)送的HTTP數(shù)據(jù)中添加相應的頭信息。

下例將強迫客戶端使用基本驗證方式:

<% Response.Addheader "WWW-Authenticate", "BASIC" %>




1.2.8.2. BinaryWrite

Response.BinaryWrite將通過HTTP向客戶端發(fā)送二進制流。我們時常用它來提供軟件下載,組合圖片顯示等。

1.2.8.3. Clear

當Response.Buffer=True時,通過調用Response.Clear可以清除發(fā)送緩沖區(qū)中的所有內容。當Response.Buffer設置為False時,調用Response.Clear將出現(xiàn)錯誤。

1.2.8.4. End

通過調用Response.End可以終止當前服務器腳本的執(zhí)行,并將結果發(fā)送客戶端。

1.2.8.5. Flush

Response.Flush將在Reponse.Buffer為True時發(fā)送緩沖區(qū)中的數(shù)據(jù)。如果Response.Buffer=False,調用Reponse.Flush將出錯。

1.2.8.6. Redirect

調用Reponse.Redirect將跳轉至另外的URL地址。如果已經發(fā)送HTML信息到客戶端,調用此方法將出現(xiàn)錯誤。下例將跳轉至“CSDN”:

<% Response.Redirect “http://www.csdn.net” %>




1.2.8.7. Write

Response.Write方法將發(fā)送指定字符串到客戶端。

<% Response.Write “Hello World!” %>




1.2.9. 應用

Reponse對象就是用來向客戶端發(fā)送信息的,它不僅可以發(fā)送一般的HTML信息,同樣,通過指定HTTP頭,或者設置Response.ContentType屬性,然后調用Response.BinaryWrite方法返回任何形式的內容,圖片、各種文檔等等。所以我們可以實現(xiàn)計數(shù)器、文件下載等,然后稍加結合我們還可以實現(xiàn)文件下載并計數(shù),只有你想不到的,沒有你做不到的。

1.3. Global.asa文件

我們僅對Application和Session相應事件加以描述。

1.3.1. Application事件

1.3.1.1. Application_OnStart

當啟動Web服務后,第一個客戶端通過瀏覽器訪問您的網站時,將首先觸發(fā)Application_OnStart事件,因為這個時候可能需要您在公共內存區(qū)域中預先定義一些Application變量,或者預先訪問一些服務器資源。

<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>

Sub Application_OnStart

. . .

End Sub

</SCRIPT>




1.3.1.2. Application_OnEnd

由于您在Application_OnStart很有可能就聲明了Application變量來存儲COM對象等等,如同面向對象的編程一樣,您的網站的析構函數(shù)就是Application_OnEnd。當所有客戶端斷開連接并會話結束,將觸發(fā)Application_OnEnd。

<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>

Sub Application_OnEnd

. . .

End Sub

</SCRIPT>




1.3.2. Session事件

1.3.2.1. Session_OnStart

當客戶端連接上服務器時,服務器端必然需要創(chuàng)建新的客戶端代理來響應客戶端請求,創(chuàng)建新的客戶端代理后就會觸發(fā)Session_OnStart事件。

<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Session_OnStart
. . .
End Sub



</SCRIPT>




1.3.2.2. Session_OnEnd

當客戶端調用的服務器腳本中顯式地調用了Session.Abandon方法或者客戶端超過了Session.Timeout的時間被動的會話終止,在會話終止前Session_OnEnd將被觸發(fā)。

<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Session_OnEnd
. . .
End Sub



</SCRIPT>




1.3.3. 應用

根據(jù)Application與Session事件的特點,我們可以初始化全局公共的Application變量,或者僅當前客戶端的私有環(huán)境變量。比如,我們可以通過一個Application變量Application(“ClientCount”)來記錄連接到服務器的客戶端總數(shù),然后,每次Session_OnStart時,Application(“ClientCount”)增加一個,Session_OnEnd時,Application(“ClientCount”)減1,這樣就可以比較準確的記錄客戶端總數(shù)。

<Script Language=VBScript RUNAT=Server>

Sub Application_OnStart

Application(“ClientCount”)=0

‘其他代碼

End Sub



Sub Application_OnEnd

Application(“ClientCount”)=0 ‘僅為示范用,表示復原之意

‘其他代碼

End Sub



Sub Session_OnStart

Application.Lock

Application(“ClientCount”)=Application(“ClientCount”)+1

Application.UnLock

End Sub



Sub Session_OnEnd

Application.Lock

Application(“ClientCount”)=Application(“ClientCount”)-1

Application.UnLock

End Sub

</Script>


是的,就這么簡單。

1.4. 關于COM的簡單說明

由于ASP的功能主要通過COM來擴展,我們只好再啰嗦幾句,通過FSO的對象,可以實現(xiàn)基本的文件訪問;通過創(chuàng)建ADO我們可以訪問各式各樣的數(shù)據(jù)庫;通過MSXML我們實現(xiàn)XML的各種操作。它們的詳細幫助說明都包含各自得SDK中,MSDN也可以找到。

一個網站,關鍵在于您想怎么實現(xiàn),思路很重要,剩余的就慢慢查閱資料吧。比如您可以創(chuàng)建一個XML架構的網站,通過組織數(shù)據(jù)為自定義的XML格式,然后以不同XSL實現(xiàn)不同的用戶客戶端,既可起到模版的作用,又可實現(xiàn)數(shù)據(jù)的過濾(不需要的東西,通過XSL的處理將不發(fā)送到客戶端)。關于最新的MSXML,請到微軟的站點下載。

1.5. 關于.Net

自從有了.Net以后,學習新語言的浪潮可謂一浪高過一浪,然而在應用一門新的語言前,人們首先應該強調的是語言的熟悉程度,發(fā)揮不了新語言的特長就沒有必要采用新的語言。

ASP.Net環(huán)境也是如此,如果您對DHTML、CSS、HTC、ASP、XML等等都非常熟悉,那么學習ASP.Net也會輕車熟路。不妨先學習學習ASP,畢竟它很簡單。




標簽:ASP概覽 

相關文章

主站蜘蛛池模板: 天天干夜夜骑 | 伊人久久婷婷丁香六月综合基地 | 亚洲四虎| 亚州精品永久观看视频 | 亚洲成a人v欧美综合天 | 啪啪自拍 | 欧美自拍视频在线 | 亚洲一区二区影视 | 三级aa| 日韩精品在线免费观看 | 欧美一级看片a免费观看 | 日日干夜夜欢 | 日韩亚洲制服丝袜中文字幕 | 日韩中文字幕精品免费一区 | 中文字幕亚洲第一 | 亚洲第一在线播放 | 亚洲成年人免费网站 | 香港aa三级久久三级不卡 | 中日韩一线二线三线视频 | 人人爱人人做 | 日韩三级一区二区三区 | 一级做a爰片久久毛片16 | 天天操2018 | 青青在线视频免费看观看 | 欧美性生交xxxxx久久久 | 亚洲成人社 | 欧美一区二区三区大片 | 五月婷婷综合激情网 | 亚洲国产影院 | 最近新免费韩国视频资源 | 一区二区三区网站在线免费线观看 | 亚洲aa在线 | 中文字幕网资源站永久资源 | 在线观看精品国产福利片100 | 青青草原伊人网 | 最新四虎4hu影库地址在线 | 日本一区二区在线免费观看 | 欲色啪| 淫片a武则天 | 日本天堂影院 | 日本黄色福利视频 |