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

首頁 > 編程 > ASP > 正文

ASP中使用Form和QueryString集合

2024-05-04 11:07:39
字體:
來源:轉載
供稿:網友
當用戶填寫頁面<FORM>內容時所提供的全部值,或在瀏覽器地址欄輸入在URL后的值,通過Form和QueryString集合為ASP腳本所用。這是在ASP代碼中訪問值的一種簡單方法。

  1、 訪問ASP集合的一般技術

  大多數ASP集合與在VB中見到的普通集合相差不多。實際上,它們是值的數組,但能通過使用一個文本字符串鍵(對大小不敏感)以及一個整型索引進行訪問。因此,假如客戶端Web頁面包含的<FORM>如下:

<FORM ACTION=”show_request.asp” METHOD=”POST”>
FirstName:<INPUT TYPE=”TEXT” NAME=”FirstName”>
LastName:<INPUT TYPE=”TEXT” NAME=”LastName”>
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

  可通過訪問ASP的Form集合來訪問其控件內的值:

strFirstName = Request.Form(“FirstName”)
strLastName = Request.Form(“LastName”)

  也可使用窗體中控件的整型索引,索引的范圍從在HTML中第一個定義的控件開始,然后根據定義的順序排序:

strFirstName = Request.Form(1)
strLastName = Request.Form(2)

  然而,后面的這種以整型為索引的技術不推薦使用,因為一旦有HTML中的控件發生了變化,或者插入一個新的控件,則ASP代碼將得到錯誤的值。進一步而言,對于閱讀代碼的人來講,極容易混淆。

  1) 訪問集合的全部值

  可以通過引用集合把整個Form上的一系列值變成單個的字符變量,且不用提供鍵或索引。

StrAllFormContent = Request.Form

  假如文本框包含值Priscilla和Descartes,則Request.Form語句將返回下列字符:

FirstName=Priscilla&LastName=Descartes

  注意,提供的值是以名稱/值對的形式出現的(即控件名稱=控件值),并且每一對名稱/值相互之間是用符號“&”相分隔的。假如打算把窗體中的內容傳遞單獨的,希望得到值的標準格式的可執行應用程序或DLL,這個技術是很有用的。然而,一般說來,都是通過以窗體中控件的名稱為文本鍵來訪問集合中的內容。

  2) 遍歷一個ASP集合

  有兩種方式遍歷一個ASP集合中的所有成員,方式與普通VB集合的基本相同。每個集合提供一個Count屬性,返回的是集合中條目數量??赏ㄟ^使用一個整型索引使用Count屬性來遍歷。

For intLoop=1 To Request.Form.Count
Response.Write Request.Form(intLoop) & “<BR>”
Next

  假如先前的窗體包含Priscilla和Descartes值的兩個文本框,將得到如下結果:

Priscilla
Descartes

  然而,更好的方法是使用For Each...Next結構。

For Each objItem In Request.Form
Response.Write objItem & “=” & Request.Form(objItem) & “<BR>”
Next

  這帶來的好處是既可以訪問控件的名稱又可訪問其值。上述代碼將得到如下結果:

FirstName = Priscilla
LastName = Descartes


  注意,一些瀏覽器返回到ASP的<FORM>值可能與頁面上顯示的順序不盡相同。
 

  3) 集合成員的多值性

  在某些情況下,ASP集合中的各個成員可能不止一個值,這種情況發生在HTML定義中有幾個控件有相同Name屬性時。例如:
 

 

<FORM ACTION=”Show_request.asp” METHOD=”POST”>
<INPUT TYPE=”TEXT” NAME=”OtherHobby”>
<INPUT TYPE=”TEXT” NAME=”OtherHobby”>
<INPUT TYPE=”TEXT” NAME=”OtherHobby”>
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

  在Form集合中,將為“OtherHobby”創建一個條目。然而,它將包括從三個文本框中得到的值。假如在提交時,用戶留下了一個或多個為空,則返回的值為空字符串。假如用戶在第一和第三個文本框分別輸入Gardening和Mountaineering,第二個文本框為空,在我們的ASP代碼中訪問Request.Form(“OtherHobby”),將返回字符串:

Gardening, ,Mountaineering

  為了能夠在這種情況下,訪問單個值,可以用復雜一些的代碼:

For Each objItem In Request.Form
 If Request.Form(objItem).Count >1 Then ‘More than one value in this item Response.Write objItem & “:<BR>”
  For intLoop = 1 To Request.Form(objItem).Count
   Response.Write “Subkey” & intLoop & “value = “& Request.Form(objItem) (intLoop) & “<BR>”
  Next
 Else
  Response.Write objItem & “ = ” & Request.Form(objItem) & “<BR>”
 End If
Next

  對于前面的包含三個OtherHobby控件的窗體實例,這將返回:

OtherHobby:
Subkey 1 value = Gardening
Subkey 2 value =
Subkey 3 value = Mountaineering

  然而,由于很少給多個文本框相同的名字,因此這種技術很少用到。

  a) HTML中的單選或選頁按鈕控件

  在HTML中,需要給幾個控件相同的Name屬性的情況是單選(或選項)按鈕,例如:

<FORM ACTION=”show_request.asp” METHOD=”POST”>
I live in:
<INPUT TYPE=”RADIO” NAME=”Country” VALUE=”AM”>America<BR>
<INPUT TYPE=”RADIO” NAME=”Country” VALUE=”EU”>Europe<BR>
<INPUT TYPE=”RADIO” NAME=”Country” VALUE=”AS”>Asia<BR>
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

 


  因為用戶只能選擇多項中的一個(這就是給它們相同的名字的原因),將僅得到一個返回值,瀏覽器只能發送所選擇控件的值。因此,假如這個窗體的用戶已經選擇了“Europez”,將得到這個條目,通過遍歷Form集得到其值:

Country = EU

  由于為每個控件提供了不同的VALUE屬性,反映了每個條目所對應的國家或地區的名稱。假如省略了VALUE屬性,瀏覽器將返回的值為“on”,因此將得到:

Country = on

  這是不經常用到的,因此一般對使用相同名稱的單選控件使用VALUE屬性。

  b) HTML復選框控件

  當一個窗體中HTML源碼包含一個復選框控件時,一般都給定唯一的名稱,例如:
 

 

 

<FORM ACTION=”show_request.asp” METHOD=”POST”>
I enjoy:
<INPUT TYPE=”CHECKBOX” NAME=”Reading” CHECKED> Reading
<INPUT TYPE=”CHECKBOX” NAME=”Eating”> Eating
<INPUT TYPE=”CHECKBOX” NAME=”Sleeping”> Sleeping
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

 

 


  在這種情況下,提交窗體時,假如僅是第一和第三個復選框被選中(加標記),遍歷Form集合時,會得到下列值:
 

 

 

Reading = on
Sleeping = on

 

 


  然而,假如為每個復選框提供一個值,把這個值發往服務器代替字符串“on”。例如窗體如下:
 

 

 

<FORM ACTION=”show_request.asp” METHOD=”POST”>
I enjoy:
<INPUT TYPE=”CHECKBOX” VALUE=”Hobby025” NAME=”Hobby” CHECKED>_
Swimming
<INPUT TYPE=”CHECKBOX” VALUE=”Hobby003” NAME=”Hobby” CHECKED>_
Reading
<INPUT TYPE=”CHECKBOX” VALUE=”Hobby068” NAME=”Hobby”>Eating
<INPUT TYPE=”CHECKBOX” VALUE=”Hobby010” NAME=”Hobby”>Sleeping
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

 

 


  如果除第三個復選框外,全部提交,在Request.Form集合會產生下列結果:
 

 

 

Hobby = Hobby025, Hobby003, Hobby010

 

 


  假如編寫更復雜一些集合遍歷代碼,如先前所述(單獨顯示每個子鍵),就得到這樣結果:
 

 

 

Hobby:
Subkey 1 value = Hobby025
Subkey 2 value = Hobby003
Subkey 3 value = Hobby010

 

 


  需要注意的是兩種情況,沒有選中的控件根本不返回任何值。在第一種情況的結果里,沒有欺騙性的逗號,第二種情況也沒有空值。這與上述的使用文本框的相當的測試的結果不一樣。使用文本框時,每個文本框都返回一個值,即使是一個空字符串。這是瀏覽器造成這樣的結果。因此在ASP代碼中訪問集合時,要注意這個問題。

  上述情況一個棘手的負作用是使用復選框時,復選框值的索引與在原始的HTML中控件的位置沒有任何聯系,在上述的例子中第四個復選框的子鍵數為3,因為當窗體提交時,第二個控件沒有選中。

  c) HTML列表控件

  HTML中的<SELECT>標記用來產生標準的下拉列表框,其值以一種有趣的混合方式表示。下列的窗體創建了包含5個值可供用戶選擇,由于包含了MULTIPLE屬性,因此可以通過選擇時按下Shift或Ctrl鍵,選擇不僅一個的條目。
 

 

 

<FORM ACTION=”show_request.asp” METHOD=”POST”>
<SELECT NAME=”Hobby” SIZE=”5” MULTIPLE>
<OPTION VALUE=”Hobby001”>Programming</OPTION>
<OPTION VALUE=”Hobby025”>Swimming</OPTION>
<OPTION VALUE=”Hobby003”>Reading</OPTION>
<OPTION VALUE=”Hobby068”>Eating</OPTION>
<OPTION VALUE=”Hobby010”>Sleeping</OPTION>
</SELECT><P>
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

 

 


  這種特殊的情況返回的是在Form集合中單個條目,它包含選擇的值(單個的<OPTION>標記中指定的VALUE屬性),用逗號分隔:
 

 

 

Hobby = Hobby025, Hobby003, Hobby010

 

 


  假如使用更加復雜一些的集合遍歷代碼(單獨顯示每個子鍵),將得到:
 

 

 

Hobby:
Subkey 1 value = Hobby025
Subkey 2 value = Hobby003
Subkey 3 value = Hobby010

 

 


  這與上述相同名稱的復選框的情況相同。事實上可以認為一個SELECT列表是一列復選框的列表供選擇(不是選中)相應的條目。

  然而,列表框也有指定的值,假如在<OPTION>標記中設置VALUE屬性,將得到的是選擇的選項的文本內容,Request.Form集將包含這樣一個項目:
 

 

 

Hobby = Swimming, Reading, Sleeping

 

 


  并且,同樣,復雜一些的集合遍歷代碼將返回如下結果:
 

 

 

Hobby:
Subkey 1 value = Swimming
Subkey 2 value = Reading
Subkey 3 value = Sleeping

 

 


  當然,假如單個項目被選擇,且在<OPTION>中提供了VALUE屬性,得到結果包含的僅是:
 

 

 

Hobby = Hobby025

 

 


  如果沒有提供VALUE屬性,得到:
 

 

 

Hobby = Swimming

 

 


  這允許既可以缺?。礋oVALUE)顯示選項文本,也可做相應的改變。后一種情況在某些情況下是極為有用的,如要顯示(一個說明的字符串)和傳遞一個完全不同的內容(如用一個短碼代表一個說明性的字符串)。
 

  d) HTML提交和圖像控件

  復選框和單選框是布爾型控件的例子,選中或選擇返回的為“on”,不像文本框和大多數其他的HTML控件,瀏覽器不包含沒有選中或沒有選擇的控件的值。

  還有另外一種常用的布爾型控件,稱為HTML按鈕。如<INPUT TYPE=”SUBMIT”>、<INPUT TYPE=”RESET”>、<INPUT TYPE=”IMAGE”>、<INPUT TYPE=”BUTTON”>和<BUTTON>...</BUTTON>類型。

  BUTTON類型的控件不返回任何值,因其對窗體沒有直接的影響。即使使用用來調用窗體的Submit方法,瀏覽器在任何請求中將不包含BUTTON類型控件的值。同樣,一個<INPUT TYPE=”RESET”>按鈕的值也決不會發往服務器。

  然而,輸入按鈕控件SUBMIT和IMAGE類型實際提交窗體給服務器,其VALUE屬性包含窗體的其他控件的值(只要在HTML定義中包含一個NAME屬性)。例如,這個窗體可能是向導類型Web應用程序的一部分,允許用戶一步步進行或取消進程:
 

 

 

<FORM ACTION=”show_request.asp” METHOD=”POST”>
<INPUT TYPE=”SUBMIT” NAME=”btnSubmit” VALUE=”Next”>
<INPUT TYPE=”SUBMIT” NAME=”btnSubmit” VALUE=”Previous”>
<INPUT TYPE=”SUBIMT” NAME=”btnSubmit” VALUE=”Cancel”>
</FORM>

 

 


  在一個窗體中,可以包括多個SUBMIT按鈕。在這種情況下,應該給每一個按鈕唯一的VALUE屬性,如上所示。當一個窗體被提交時,遍歷Request.Form集合的值,將產生一個值,這個值依賴于按下哪個按鈕用于提交這個窗體。假如用戶按下的“Previous”按鈕,將得到:

btnSubmit = Previous

  因此,可查詢Request.Form集合來決定下一個顯示的頁面,例如:
 

 

 

Select Case Request.Form(“btnSubmit”)
Case “Next”
Response.Redirect “page_3.asp”
Case “Previous”
Response.Redirect “page_1.asp”
Case “Cancel”
Response.Redirect “main_menu.asp”
End Select

 

 


  同時,也可根據需要對每個按鈕使用不同的NAME屬性。且選擇其值包含在Form集合中的控件名稱。在控件沒有一個完整的標記而是隨后跟著較長的文本標簽的情況下,極為有用,如下圖所示。

  此屏幕上的界面由下列代碼產生:
 

 

 

<FORM ACTION=”show_request.asp” METHOD=”POST”>
<B>What do you want to do now?</B><P>
<INPUT TYPE=”SUBMIT” NAME=”btnNext” VALUE= ”> Go on the next page<P>
<INPUT TYPE=”SUBMIT” NAME=”btnPrevious” Value=” ”> GO back to the previous page<P>
<INPUT TYPE=”SUBMIT” NAME=”btnCancel” VALUE=” ”> Cancel and go back to the main menu page<P>
</FORM>

 

 


  在ASP頁面中,接收到數據后,可以檢查按扭名稱提供的值來判斷按下的是哪個按鈕。
 

 

 

If Len(Request.Form(“btnNext”)) Then Response.Redirect “page_3.asp”
If Len(Request.Form(“btnPrevious”)) Then Response.Redirect “page_1.asp”
If Len(Request.Form(“btnCancel”)) Then Response.Redirect “main_menu.asp”

 

 


  這個工作是查詢一個鍵上的ASP集合,如果不存在則返回一個空的字符串。換句話說,如果第二個按鈕(previous頁)按下,則Request.Form(“btnNext”)的值是一個空字符串,則其長度為零而不至于產生一個錯誤。當第二個按鈕按下時,則在Form集合中這個條目的值Request.Form(“btnPrevious”),將是“ ”其長度大于零。

  e) 提高使用Request集合的效率

  訪問一個ASP集合來下載一個值是費時的需計算資源的過程,因為這個操作包含了一系列對相關集合的搜索,這比訪問一個局部變量要慢得多。因此,如果打算在頁面中多次使用集合中的一個值,應該考慮將其存貯成為一個局部變量,例如:
 

 

 

strTitle = Request.Form(“Title”)
strFirstName = Request.Form(“FirstName”)
strLastName = Request.Form(“LastName”)
If Len(stTitle) Then strTitle = strTitle & “ “
If strFirstName = “ “ Then
StrFullName = strTitle & “ “ & strLastName
ElseIf Len(strFirstName) = 1 Then
StrFullName = strTitle & strFirstName & “· “ & strLastName
Else
StrFullName = strTitle & strFirstName & “ ” & strLastName
End If

 

 


  f) 搜索所有的Request集合

  在某些情況下,可能知道一個值的鍵名將出現在Request集合中,但不能準確地知道是哪一個集合。例如,假如有幾個頁面(或一個頁面的不同段)發送一個值給同一個ASP腳本,它可能在Form或者QueryString集合中出現。

  要看一下一個值為什么可能出現在不同的集合中,考慮一下這種情況:使用了<A>超級鏈接元素請求一個頁面。在這種情況下,增加一個值到請求的唯一方法是把它加到URL上。然而,同樣的值可能已出現在另一個頁面的<FORM>中,或同一頁面不同部分:
 

 

 

...
<FORM ACTION=”process_page.asp” METHOD=”POST”>
<INPUT TYPE=”SUBMIT” NAME=”page” VALUE=”Next”>
<INPUT TYPE=”SUBMIT” NAME=”page” VALUE=”Previous”>
<INPUT TYPE=”SUBMIT” NAME=”page” VALUE=”Help”>
</FORM>
...
...
For help go to the <A HREF=”process_page.asp?page=Help”>Help Page</A>
...

 

 


  在這種情況下,按下窗體上的Help按鈕,將發送Request.Form集合中一對名稱/值“page=Help”。然而,按下<A>超級鏈接也可能發送名稱/值“Page=Help”,但是這次卻是在QueryString集合里。為訪問這個值,可使用ASP Request對象的一個特殊功能:
strPage = Request(“page”)

  這將按序搜索全部的集合——QueryString、Form、Cookies、ClientCertificate、ServerVariables,直到發現第一個匹配值的名稱。這樣做比直接訪問適當的集合效率低,并且是不安全的,除非能絕對保證這個值不會出現在另外一個集合中。

  例如,可能希望搜集滿足客戶請求的Web服務器的名稱,這通過出現在每個查詢中的Request.ServerVariables集合中尋找“SERVER_NAME”來實現。然而,假如任一其他的集合也包含名為“server_name”的值(記住鍵名不區分大小寫),當使用Request(“server_name”)時,得到的是錯誤的結果。使用Reqeust.ServerVariables(“server_name”)句法,我們將很難進行錯誤追蹤。
總而言之,使用“搜索全部集合”技術要格外小心,且只在沒有其他技術能夠提供你需要的結果時使用。

  g) 訪問其他的集合

  本文的這一節里,已經集中討論了Form集合,這可能是使用得最多的一個。然而,所有這些技術同樣適用于其他的對象。包括那些由Request對象提供的(即Form、QueryString、Cookies、ServerVariables和ClientCertificate)集合,及由Response對象提供的cookies(及其他對象提供的集合)。

  我們將簡短了解一個值如何進入一個QueryString集合,及其優點和不足。然而,同時這兩個Cookies集合有額外的功能,可以使使用cookie更加方便,下面討論這個內容。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品成人91久久久久久久| 俺去亚洲欧洲欧美日韩| 富二代精品短视频| 亚洲新声在线观看| 国产激情久久久| 日韩视频免费在线观看| 日韩美女在线播放| 性金发美女69hd大尺寸| 精品无码久久久久久国产| 欧美激情视频网址| 亚洲一级一级97网| 亚洲天堂视频在线观看| 亚洲最大的网站| 国产精品日韩在线| 欧美色播在线播放| 成人精品网站在线观看| 在线视频国产日韩| 国产有码在线一区二区视频| 亚洲色图校园春色| 欧美黑人又粗大| 欧美影院成年免费版| 国产丝袜一区二区三区| 日本三级久久久| 欧美中文字幕在线观看| 欧美日韩午夜剧场| 狠狠做深爱婷婷久久综合一区| 成人激情综合网| 国产精品久久久999| 亚洲国产成人在线播放| 精品亚洲aⅴ在线观看| 欧美激情videoshd| 欧美激情视频一区| 一区二区国产精品视频| 久久的精品视频| 亚洲精品久久久久久久久| 亚洲欧美日韩国产精品| 国产精品99久久久久久白浆小说| 色妞色视频一区二区三区四区| 国产精品尤物福利片在线观看| 欧美裸身视频免费观看| 成人免费视频网址| 国产乱人伦真实精品视频| 中文字幕一区二区精品| 欧美成人激情在线| 久久久久一本一区二区青青蜜月| 国产日韩精品综合网站| 91久久久久久久一区二区| 欧洲日本亚洲国产区| 国产成人一区二| xvideos亚洲| 精品福利免费观看| 欧美在线播放视频| 欧美激情在线有限公司| 欧美极品少妇xxxxx| 国产视频久久久久| 亚洲a成v人在线观看| 色777狠狠综合秋免鲁丝| 亚洲国产婷婷香蕉久久久久久| 中文字幕亚洲欧美一区二区三区| 国产精品综合久久久| 国内精品久久久久久中文字幕| 欧美日韩亚洲一区二区三区| 欧美日韩免费看| 中文字幕日韩在线视频| 一区二区日韩精品| 亚洲一级一级97网| 亚洲精品欧美日韩专区| 国产精品欧美一区二区| 国产精品免费网站| 欧美亚洲在线观看| 国产精品老女人精品视频| 久久亚洲精品一区| 久久久久久久久国产| 亚洲片av在线| 日韩欧美国产激情| 国产日本欧美一区| 欧美日韩在线视频观看| 这里只有精品视频| 国产主播精品在线| 91亚洲国产精品| 午夜精品久久久久久久男人的天堂| 国内外成人免费激情在线视频| 成人午夜高潮视频| 久久久极品av| 欧美黄色片视频| 国产成人一区二区三区小说| 91九色国产社区在线观看| 一区二区三区高清国产| 久久久欧美一区二区| 国产精品久久久久久久久粉嫩av| 成人免费网站在线| 久久综合网hezyo| 韩日精品中文字幕| 91经典在线视频| 国产精品99久久久久久白浆小说| 一区二区三区四区在线观看视频| 538国产精品视频一区二区| 96sao精品视频在线观看| 亚洲男人av电影| 中日韩美女免费视频网址在线观看| 国产精品海角社区在线观看| 97**国产露脸精品国产| 伦伦影院午夜日韩欧美限制| 国产欧美精品一区二区三区-老狼| 国产精品网址在线| 欧美激情三级免费| 青青草原一区二区| 国产精品亚发布| 懂色av影视一区二区三区| 久久精品美女视频网站| 韩国精品久久久999| 欧美日韩激情小视频| 日韩欧美国产骚| 国产精品视频专区| 亚洲国产成人久久综合一区| 国产日韩一区在线| 久久精品国产亚洲| 91热精品视频| 欧美日韩国产成人| 国产成人精品免费久久久久| 亚洲美女激情视频| 亚洲精品日韩av| 狠狠操狠狠色综合网| 亚洲自拍偷拍视频| 国产一区视频在线| 欧美激情亚洲激情| 亚洲国产女人aaa毛片在线| 欧美大尺度激情区在线播放| 国产精品一区二区三区免费视频| 欧美一乱一性一交一视频| 中文字幕久精品免费视频| 亚洲国产成人爱av在线播放| 欧美专区在线视频| 国产成+人+综合+亚洲欧美丁香花| 欧美激情亚洲精品| 久久久91精品国产| 欧美日本国产在线| wwwwwwww亚洲| 久久五月天综合| 夜夜狂射影院欧美极品| 少妇久久久久久| 中文字幕欧美精品日韩中文字幕| 麻豆国产va免费精品高清在线| 亚洲性生活视频在线观看| 久久成人亚洲精品| 亚洲精品国精品久久99热一| 亚洲高清福利视频| 欧美超级免费视 在线| 欧美性猛xxx| 狠狠色狠狠色综合日日五| 日韩中文综合网| 亚洲va欧美va在线观看| 国产精品一二区| 国产成人综合一区二区三区| 亚洲一区二区三区视频| 欧美色欧美亚洲高清在线视频| 57pao精品| 国产精品一久久香蕉国产线看观看| 欧美国产日韩xxxxx| 久久99精品久久久久久噜噜| 91免费高清视频| 国产精品88a∨| 日本sm极度另类视频| 国产日韩精品电影|