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

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

HTML、Swing還是XML,Java客戶端工具選擇?

2019-11-18 13:56:52
字體:
來源:轉載
供稿:網友

  作者:jeru
email: jeru@163.net

[前言:] java軟件設計師和治理人員經常會面臨這樣的難題:在開發應用軟件的客戶端時,應該在Swing、Html、xml三種技術中選擇誰。在這篇文章中,我將把自己在這三種技術方面的經驗與廣大讀者共享,并對在Java應用軟件開發中選擇哪一種技術提出一些標準和技巧。在文章的最后,還會介紹一種整合Java Swing和HTML的新方法。



  與現有的技術相比,Java有明顯的優點,因此它已經在服務器端應用軟件的開發中確立了主導地位。然而,由于每一個應用程序都有幾種形式的用戶界面和前端的表達形式,我們中的許多人都對在客戶端采用Java技術有不好的印象,因此在客戶端的開發中采用HTML似乎已經成為唯一的選擇了。

  實際情況是,在客戶端應用程序的開發中不止只有HTML一種選擇,我們將在本文討論基于Java的應用軟件開發中三種用戶界面的解決方案。我將首先討論HTML與jsp和servlet聯合使用的優點和缺點,然后討論Java最初的目標之一:通過GUI Applet實現交互式互聯網。最后,我們將討論XML以及由它所衍生出來的其他技術。

  JSP/Servlets環境下的HTML客戶端

  大多數讀者都曾編寫過servlet、開發過JSP應用,清楚基于HTML的用戶界面的優點和缺點。選擇HTML的最大的理由仍然是其廣泛的平臺適應性,基本HTML的標準性很好,雖然比較枯燥,但它可以很好地完成工作。

  由于HTTP/HTTPS協議非常簡單,可以使開發的應用程序很好地適應各種網絡配置和防火?。但這是有代價的,HTML缺乏與用戶的交互性,而且對用戶每個行為的響應都需要與服務器進行連接。作為一名編程人員,我們一直在追求簡單性,并使開發的軟件可以適合所有的瀏覽器?然而簡單性并不總是好的,簡單地說,與靜態HTML相比,javascript可以較好地實現不太復雜的交互性,但對于開發復雜的用戶界面而言,它還是不能勝任的。

  除非擁有高速的互聯網連接,否則你一定有過焦慮的等待加載一個網頁的經歷。盡管瘦客戶端提供了一些很好的非交互性的用戶界面,但傳統的胖客戶終端一般情況下都比它們更聰明。例如,Netscape Communicator和MS Outlook等電子郵件的前端就比基于互聯網的電子郵件工具具有更好的用戶親和性。

  用Java開發一個HTML前端應用是一個很好的選擇,因為HTML提供了跨平臺的內容傳輸能力。編程人員可以使用Java Servlets和JSP開發在任何操作系統平臺上運行的服務器端應用程序。同時考慮到眾多的Java API和它得到的廣泛的服務器開發商的支持,對于開發可伸縮互聯網站而言,Java是一種理想的選擇。

  總而言之,配合使用Servlets和JSP的HTML前端開發工具是開發靜態界面的很好的方式,但當需要對用戶的行為作出快速反應和需要對數據進行高速處理的復雜應用時,這種方式則不大理想。

 基于Swing的GUI客戶端

  今天還有多少人在使用Java Applet作為客戶端?也許使用基于HTML的UI更安全,但這是最好的選擇嗎?

  AT&T的一個業務部門Telecorp PCS曾經開發過一個應用程序,使其商店可以收集希望購買移動電話的用戶的資料,檢查其信用卡,然后立即開通移動電話,除了確認用戶輸入的信息外,應用還必須通過使用排序、選擇和其他的標準數據庫功能處理提交的報告。此外,當一個新的移動電話開通后,這個應用程序還需要顯示一個通知。

  你能相像用HTML來完成這一切嗎?也許可能,但它將非常討厭,而且速度很慢,需要不間斷地使用網絡連接。Telecorp PCS決定冒險在交互的Applet中使用Java,那么結果如何呢?完全成功,這一應用程序在開發時采用了Swing,并布署在采用了Java插件的互聯網網站上。通過使用Swing UI類,很簡單地完成了應用所要求的功能。

  我相信許多開發人員在早期使用Java時,都使用過applet,并且在解決各種瀏覽器之間的不兼容性、applet下載時間、性能方面花費過大量的時間。對客戶端Java最大的批評來自其對象性,但現在情況已經有了很大的改觀。Sun已經花費了大量的時間來改進其代碼的質量,下面我將向你說明為什么基于Swing的UI是值得一試的。

  Swing及其布署模式

  我無需對Swing的內部架構以及類和界面的設計、設計模板的實現方面有多少新思想多作敘述了。Swing幾乎是我見過的最徹底的窗體系統,它的容器、組件和UI元素之間的關系非常清楚。Swing的架構是基于Model-View-Controller(MVC)設計模板的,其數據與數據的表達和處理相互獨立。

  大多數的Swing模型都是由各種UI元素共享的。例如,JTable使用和JList、JTree相同的模型集,這就使得學習和使用Swing非常簡單,而且Command、Observable和Listener等模板提供了很好的靈活性和良好的面向對象特性。也許Swing架構中唯一的不足之處是所有的事件都被交付到相同的EventDispatch線程中,使整個GUI客戶端應用程序只有一個線程。但我們可以通過使用不同的線程響應用戶的命令而不通過EventDispatch線程來完成所有操作,就可以很簡單地克服Swing這一缺點。

  Sun發布的每個JDK版本都對Java和Swing的性能都進行了改進。JDK 1.3中與Swing相關的改進表現在性能、內存消耗和一個輸入確認框架。性能和內存消耗方面的改進相當可觀。我們公司將客戶端的應用程序由JDK 1.2.2升級到1.3后,內存消耗降低了30%,一些應用程序內存占用減少得更多。由于Swing內部的初始化過程被優化了,我們的客戶端應用程序的運行速度和響應速度都更快了。簡而言之,對速度影響最大的是加載其他界面組件時自動產生的大量的類,而這一方案中只包含有一個類。另一個重大的變化是缺省的JVM是HotSpot Client VM,它專門針對GUI繪制和客戶端應用程序執行進行了優化,可以通過在命令行方式下運行java命令得到缺省的JVM。
  
  輸入確認框可以使我們很方便地通過編程實現命令字段或輸入確認。在這以前,假如要在處理下一個字段之前,對前一個用戶輸入進行處理,必須在該部件上添加一個監聽程序,每當該部件不再是焦點后都需要對它進行確認,這種方式非常單調和乏味。使用新的InputVerifier類,可以通過創建InputVerifier子類的一個實例,并將它賦予需要確認的JComponent,就能達到相同的目的。在焦點轉換之前,部件將自動地調用verify()方法。

Swing存在的問題在于布署時的速度和兼容性問題。現在,它的一個重大改進解決了這些問題并使Java客戶端應用程序重新成為一個可行的選擇,CPU的速度在過去2年中翻了一番。在JDK 1.3中,基于Swing的應用程序的運行速度已經非??炝?,所需要的內存也相當少。這就使我們在布署Swing方面還存在著最后一個問題,那就是如何進行布署,在這里,我們有三種解決方案可供選擇。

  方案一:Java插件

  基于瀏覽器的Java中最出色的特性之一是Java插件。對HTML網頁作簡單的修改就能夠消除對瀏覽器JVM的依靠,并使我們可以在Sun的標準JVM中運行Applet。一旦安裝了JRE,Applet就被下載到本地磁盤上,并被放置在高速緩沖區中,再打開帶Applet的HTML網頁的速度就會快許多,原因是所有的東西都是在本地磁盤上的。為說明其工作原理,我們首先來看看原來的Applet布署方式,HTML網頁是如何使用插件的,我們假設你已經把握了HTML和Java Applet的有關知識,并創建了如下的網頁:

[TABLE][TR][TD][B]<HTML>
<HEAD>
<TITLE>My traditional applet page</TITLE>
</HEAD>
<BODY>
<APPLET CODE=HelloWorld.class ARCHIVE=HelloWorld.jar>
Sorry, looks like I bumped into another browser that doesn′t support Java applets
</APPLET>
</BODY>
[/B][/TD][/TR][/TABLE]
  這種方式的缺點是它依靠瀏覽器JVM來加載和執行HelloWorld類??紤]到市場上存在有多種瀏覽器,它們執行Java的方式各不相同,使得Applet的布署成為一件令人懼怕的事。你必須保證在經過測試的JVM中運行Applet。我們不要求瀏覽器運行Java,而要求瀏覽器安裝和運行我們將要在其中運行Applet的JVM。在IE中,我們可以通過使用<OBJECT>標志來完成這一任務,在其他的瀏覽器中,這一標志可能會有所不同,例如在Netscape Navigator中是<EMBED>。修改后的網頁如下所示:

[TABLE][TR][TD][B]<HTML>
<HEAD>
<TITLE>My new applet page</TITLE>
</HEAD>
<BODY>
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width=100% height=100
codebase="./j2re-1_3_0_02-win.exe#Version=1,3,0,2">
<param name="code" value="HelloWorld.class">
<param name="archive" value="HelloWorld.jar">
<param name="cache_archive" value="HelloWorld.jar">
<param name="cache_option" value="Plugin">
</OBJECT>
</BODY>
[/B][/TD][/TR][/TABLE]
上面的網頁將使瀏覽器檢查指定ClassID的對象是否已經安裝,假如沒有安裝,則從指定的URL下載JVM,并進行安裝。然后瀏覽器執行插件,并下載和顯示Applet。我們可以通過http://192.9.48.9/PRodUCts/plugin/1.3/demos/applets/GraphLayout/example1.html中的例子來學習其工作原理。關于Java插件更具體的資料請參閱Sun公司的網站。

  插件帶來的好處是它可以支持各種操作平臺上的所有瀏覽器,此外,它還提供了一個有保障的執行環境,插件只需要安裝一次,就可以對所有Applet進行緩沖,使再次訪問網站時非常輕易。這一方法的一個最大不足之處是,在運行Applet之前,必須下載一個大小為5MB的插件,這在低速的互聯網連接上尤其令人不能容忍。事實上,假如你的Applet只是一個大小為5KB的網頁頂端的一個鐘表,為此而下載一個5MB的插件是得不償失的。

  方案二:使用Java Web Start

  布署Java應用軟件的另一種方式是Sun公司的Java Web Start,它在本質上與Java插件相似,只是在第一個步驟上有明顯的不同。Java Web Start要求在每臺臺式機上進行人工安裝,這一點遠不如插件的自動安裝。Java Web Start的安裝相當簡單,一旦安裝完畢,依靠Java Web Start的應用程序就可以被下載和安裝。就象插件一樣,應用程序也是通過互聯網發行的。

  根據我的經驗,Java插件在安裝上與Java Web Start相似,但比Java Web Start的用戶親和性更好,原因是它要求的治理員或用戶干預更少。也有一些公司創建了自己的功能類似的布署工具,這些工具有時候比Java Web Start還好用。例如,Sitraka公司的DeployDirector在性能上優于Java Web Start,并且安裝也更簡單。

  總而言之,通過使用Java插件和Java Web Start,基于Swing的應用程序的布署比原來要簡單和安全許多,但仍然比點擊一個只有Javascript的HTML網頁要復雜得多。而且有些用戶可能對在本地機器上安裝JVM所需要完成的步驟有被脅迫的感覺,或者沒有發現Swing所帶來的好處,但假如需要一個動態GUI用戶界面,使用戶享有更多地靈活性,沒有一種方法比采用Swing Applet更好了。

  此外,假如整個開發都是基于Java的,在HTML請求數據和應用程序內部結構之間就無需進行映射。RMI可以提供快速的雙向網絡調用,它可以回叫客戶端應用程序,提醒用戶根據服務器的要求更新顯示內容。

  方案三、以純HTML方式布署Java Swing

  盡管HTML和Swing在開發客戶端應用軟件方面各有利弊,但很明顯的是,理想的解決方案應該是二者都支持。然而,由于這二種技術在本質上具有較大的區別,在一個應用程序中只能采用二者之一。盡管大多數用戶都會喜歡基于Swing的快速交互客戶端應用程序,但下載并在客戶端系統上安裝JRE并非總是一個很好的選擇。有時候,安全和防火墻方面的限制使得RMI很難在網絡上運行。在這種情況下,我們需要的是一種可以在所有系統上運行的交互式客戶端應用程序,即使我們能夠使用的客戶端應用程序只有瀏覽器。CreamTec公司的WebCream可以充當Swing-HTML之間的橋梁。

  WebCream是一種Java工具,它可以為基于GUI的Java應用程序和Applet提供自動的互聯網訪問,可以使我們利用AWT和Swing實現GUI前端應用程序,同時,可以自動地使HTML訪問該應用程序。在一定程度上,可以把WebCream看作是動態的Java-to-HTML轉換工具,它可以即時地把Java中的框架和對話轉換為HTML。然后,將Webpage行為模擬為GUI事件,以保持應用程序原有的邏輯。WebCream不要求對現有的表格和業務邏輯進行修改,也無需學習任何新的API,它旨在發行現有的應用程序和applets。WebCream只是設置互聯網服務器和描述應用程序屬性文件的工具,它的標準版具有全部的功能,而且是免費的。WebCream還無需在客戶端的機器上進行安裝,甚至無需瀏覽器支持Java,因為瀏覽器接收到的全部都是HTML代碼。

  據所我知,只有WebCream才具有這樣的功能,沒有其他的工具可以提供相似的解決方案。但也有一些產品采用不同的方法使原本不是為互聯網設計的應用程序具有互聯網訪問功能。windows 2000中有一種內置的終端服務器(Terminal Server)服務,可以使用戶只要在本地系統登錄就可以通過遠程方式訪問服務器。象Citrix系統公司的MetaFrame那樣,終端服務器向遠程終端發送一個視頻流,并為在服務器上運行的應用程序模擬用戶的行為。它在高速網絡上可以很好地運行,在低速網絡上的表現則不盡人意。它在Java應用程序方面還有問題,因為它們不使用本機的繪制和滾動例程。終端服務器的可伸縮性還不太強,原因是每個用戶都在運行它的一個拷貝。由WebCream轉換過的應用程序在形式上與在本地系統上運行的應用程序有所不同,但它的性能更好,因為只有用戶在提交一個頁面時,才會與服務器進行連接。所有由具有WebCream功能的應用程序服務的用戶可以共享一個JVM,因此也可以大大降低資源的消耗。

  為了演示WebCream的工作原理,下面的2個圖顯示了使用WebCream時,一個樣例GUI應用程序在HTML前端應用程序中是如何運行的。圖1是一個正在運行的GUI應用程序(源代碼),圖2是WebCream治理著同一個應用程序,窗口表示瀏覽器中的網頁。


  Swing-HTML轉換方式并不適合所有的用戶,WebCream在一定程度上答應通過HTML訪問前端應用而提高基于Swing的前端應用程序的價值。有95%的應用程序可以無縫地轉換成HTML,另有5%的程序則需要改變數據的表達和處理方式。

基于XML/XSLT的客戶端應用程序

  在這里,我們假定你已經對XML有了基本的理解,我將重點討論其前端應用程序的開發。與XML相關的用戶界面開發的一個主要特征是內容和表達方法之間互不干涉。簡單地說,就是數據被保存為XML文檔,而不再負責數據的使用和顯示,根據決定數據格式和在網頁上輸出方式的樣式表(XSLT)在HTML、WML、XHTML和其他表達形式中選擇一種數據表達形式。通過使各層之間保持相對的獨立,讓每個層處理各自的任務,這種方法的優點是非常明顯的。

  盡管XML提供了很好的數據發布模式,可以生成不同的表達模式,它仍然不能解決所有的問題。XML值得稱道的是讓開發人員專注于數據的處理,而讓設計人員和藝術家來處理數據的表達形式。應用程序則把生成的XML文件保存在內存或存儲在磁盤上,為得到指定的表達類型,例如HTML,可以通過適當的XSLT類型表對內容進行轉換,該類型表可以將XML文檔轉換為HTML文檔。類型表與判定文檔中的內容應當如何分布在網頁上的模板類似。它還可以轉換數據,執行傳統的命令和循環來處理數據,進行決策,因此它也可能變得非常復雜。

  類型表的優點之一是,假如要從一部移動電話上訪問同一個應用程序,所需要作的全部工作就是再創建一個新的WML類型表。從理論上說,這個應用程序的所有其他部分都無需作任何改變,這使得服務器端的編程工作變得非常高效。采用XML實現一個前端應用程序將使一些任務變得簡單,因為顯示的數據和處理這些數據的代碼都無需改變。開發應用程序各部分的開發小組可以獨立工作,從而加快開發進程。

  然而,我曾經在基于XML的前端應用程序開發中吃過苦頭,它的二個最主要的缺點是缺乏幫助生成XML以及類型表開發方面的工具和處理速度,第一個因素對那些使用Dreamweaver和FrontPage等可視化HTML開發工具創建HTML網頁的開發人員的影響更大。就我本人而言,我還是喜歡使用DreamWeaver,但我實在不能從在文本編輯器中編寫HTML代碼中得到什么樂趣。究竟,現在已經是21世紀了,我們來看一個將XML文檔轉換為HTML的非常簡單的XSLT類型表:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="page">
<html>

<head>
<title><xsl:value-of select="title"/></title>
</head>

<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="title">
<h1><xsl:apply-templates/></h1>
</xsl:template>

</xsl:stylesheet>




  假如所選的XSL類型表適當的話,上面的代碼會生成如下所示的HTML代碼:

<html>
<head>
<title>My first page</title>
</head>

<body>
<h1>Hello, world</h1>
</body>
</html>


  我們會發現,上面的代碼與我們用HTML開發工具得到的代碼不大相同。不幸地是,我們必須用手工的方式對它進行編輯,在一個可以生成HTML文檔的工具中對它進行處理后,然后在瀏覽器中打開生成的文檔。假如僅僅是為了美觀而改變字體的大小,那么就無需這么作了。

  第二個問題是在運行時完成所有的任務需要許多時間。假如數據格式不是XML,還需要生成XML文檔,在類型表對XML進行轉換處理后,才能生成HTML代碼。與在Servlet或JSP應用程序中向內存緩存中寫文件相比,速度和簡潔性實在不是基于XML的前端應用程序的優點。

  總而言之,假如需要動態地生成不同版面和窗體的表達形式時,就需要使用XML。假如表達形式需要經常變化或需要非常靈活,就應該讓設計人員重新設計新的類型表。需要記信的是,設計人員只要把握XML和XSLT就萬事大吉了。

  另一個需要使用基于XML的UI的場合是你需要處理的資料是XML文檔,而不是Java對象或關系數據庫。XML是一種在未來頗有前途的新技術,然而,目前使用JSP開發前端應用不是比較方便的,尤其是HTML是唯一一種前端開發工具時更是如此。使用JavaBeans和JSP標識庫等一些聞名的設計模式則能夠使數據的內容和表達形式很好的分離。隨著自動對XML/XSLT進行編輯的工具的出現,這些技術在使用方面將更加簡單方便。

  結論

  具體到你自己的Java應用程序,這三種前端技術各有利弊,任何一種技術都不能在所有方面超過其他二種。針對具體的應用程序,我們必須對需求、用戶的期望進行具體分析,對這三種技術進行評估。下面是一些基本的準則:

  使用HTML/JSP:

   ━━適合于由大量圖形和美術作品組成的靜態內容。

   ━━前端應用程序的界面面向使用所有平臺的用戶。

   ━━用戶所使用的互聯網連接較慢。

   ━━希望快速地構建功能比較單一的應用程序。

  使用Java Swing:

   ━━適合創建具有內置、與界面相關的邏輯的GUI。

   ━━可以減輕網絡流量,提供盡可能的即時響應。

   ━━假如用戶對界面的質量和功能有較高的期望。

   ━━假如UI的功能比其美感更重要時。

  使用XML/XSLT

   ━━需要支持許多不同的而且經常變化的窗體。

   ━━數據是XML格式。

   ━━需要個性化。

   ━━計劃提供無線訪問等不同的訪問方式。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久九九全国免费精品观看| 久久精品亚洲94久久精品| 狠狠色狠色综合曰曰| 国产精品r级在线| 欧美巨大黑人极品精男| 国产亚洲精品久久久久久牛牛| 国产福利视频一区二区| 精品亚洲男同gayvideo网站| 亚洲福利小视频| 激情亚洲一区二区三区四区| 国模视频一区二区| 国产欧美日韩精品专区| 亚洲精品动漫久久久久| 国产精品视频在线观看| 欧美成人性色生活仑片| 亚洲欧洲日韩国产| 亚洲黄色av女优在线观看| 亚洲欧美激情一区| 亚洲激情在线视频| 亚洲第一视频在线观看| 欧美在线视频免费播放| 亚洲三级免费看| 国产大片精品免费永久看nba| 日韩av在线影视| 欧美性猛交xxxx| 在线精品国产成人综合| 亚洲欧洲日本专区| 日韩欧美成人精品| 欧美精品999| 国产成人91久久精品| 97视频com| 久久久久久久一区二区三区| 欧美性在线视频| 国产精品视频xxxx| 成人一区二区电影| 欧美另类高清videos| 欧美日韩国产成人高清视频| 91精品国产综合久久香蕉| 国产精品成人国产乱一区| 91欧美日韩一区| 人人爽久久涩噜噜噜网站| 高清在线视频日韩欧美| 伊人伊成久久人综合网站| 欧美不卡视频一区发布| 亚洲黄色免费三级| 亚洲欧洲xxxx| 国产精品美女999| 成人h猎奇视频网站| 欧美日韩另类字幕中文| 欧美性猛交xxxx乱大交极品| 国产成人亚洲综合| 日韩精品在线免费观看| 成人情趣片在线观看免费| 国产亚洲精品久久| 精品国产一区二区三区在线观看| 亚洲福利视频网站| 日韩欧美在线视频日韩欧美在线视频| 国产成人综合av| 国产精品久久久久久网站| 日韩欧美第一页| 欧美成人国产va精品日本一级| 日韩欧美一区二区在线| 亚洲免费视频观看| 国产精品18久久久久久首页狼| 欧美风情在线观看| 欧美视频在线视频| 欧美激情综合色综合啪啪五月| 日韩av在线网| 亚洲国产99精品国自产| 亚洲国产欧美一区二区三区同亚洲| 国产精品99久久久久久久久| 国内精品国产三级国产在线专| 久久久欧美一区二区| 国产精品免费小视频| 久久久www成人免费精品| 亚洲a一级视频| 色久欧美在线视频观看| 久久天堂电影网| 久久精品91久久香蕉加勒比| 国产精品99久久久久久久久| 国产精品高潮粉嫩av| 美女999久久久精品视频| 中文字幕日韩精品在线观看| 亚洲在线免费看| 在线观看国产成人av片| 亚洲成在人线av| 欧美香蕉大胸在线视频观看| 日韩中文字幕免费视频| 国内精品视频在线| 亚洲日本成人网| 免费不卡在线观看av| 日本欧美在线视频| 欧美成人激情在线| 九九综合九九综合| 国产丝袜一区二区三区| 国产精品爽爽爽爽爽爽在线观看| 欧美一级黄色网| 91丝袜美腿美女视频网站| 久久久国产精品亚洲一区| 亚洲va久久久噜噜噜| 一区二区三区国产在线观看| 亚洲大胆人体视频| 日韩电视剧免费观看网站| 成人xxxx视频| 亚洲人成网站在线播| 亚洲色图欧美制服丝袜另类第一页| 中文字幕亚洲综合久久筱田步美| 国内精品一区二区三区| 亲爱的老师9免费观看全集电视剧| 午夜精品久久17c| 日韩激情视频在线播放| 亚洲综合精品一区二区| 精品久久久国产精品999| 亚洲无亚洲人成网站77777| 大伊人狠狠躁夜夜躁av一区| 国产精品丝袜久久久久久高清| 一本色道久久综合亚洲精品小说| 亚洲最大福利视频网站| 超碰97人人做人人爱少妇| 日韩中文字幕免费| 78m国产成人精品视频| 亚洲女人天堂视频| 欧美色视频日本版| 欧美男插女视频| 久久久久久高潮国产精品视| 欧美亚洲国产日韩2020| 欧美日本啪啪无遮挡网站| 精品国产一区二区在线| 亚洲片在线资源| 欧美性猛交xxxxx水多| 亚洲精品久久久久国产| 成人黄色激情网| 亚洲天堂男人天堂女人天堂| 国产精品偷伦视频免费观看国产| 国产成人久久久| 性夜试看影院91社区| 性色av一区二区三区在线观看| 精品免费在线视频| 清纯唯美日韩制服另类| 97香蕉超级碰碰久久免费软件| 亚洲国模精品一区| 日韩中文字幕在线视频| 亚洲色图综合久久| 韩国三级日本三级少妇99| 亚洲免费伊人电影在线观看av| 4438全国成人免费| 日韩欧美大尺度| 亚洲国产一区自拍| 国产不卡视频在线| 久久久精品在线| 欧美激情奇米色| 国产精品嫩草影院久久久| 国产精品人成电影| 国产在线视频不卡| 91久久精品美女| 欧美一级视频在线观看| 97福利一区二区| 国产精品成人观看视频国产奇米| 国产精品精品一区二区三区午夜版| 美日韩精品免费观看视频| 欧美性猛交xxxx偷拍洗澡| 国产在线精品一区免费香蕉| 日韩美女视频中文字幕| 日韩成人在线视频观看|