国产自产第一-国产自产对白一区-国产自产精品-国产自产区44页-国产自产在线-国产自产自拍-国产自产自拍视频-国产自精品

金喜正规买球

使用Grails和Flex開發(fā)JEE應(yīng)用

原創(chuàng)|其它|編輯:郝浩|2009-03-10 15:49:56.000|閱讀 635 次

概述:Java平臺(tái)已經(jīng)逐漸發(fā)展為一個(gè)成熟可靠的企業(yè)應(yīng)用平臺(tái),成熟的應(yīng)用平臺(tái)的一個(gè)標(biāo)志則是它能夠帶動(dòng)大量的衍生技術(shù)以及可以與其他技術(shù)集成的選項(xiàng)。本文將詳細(xì)講述怎樣用Grails這項(xiàng)傳統(tǒng)JEE應(yīng)用開發(fā)的衍生技術(shù),結(jié)合另一項(xiàng)完全不同但卻可以在Java中使用的Flex技術(shù)來開發(fā)JEE。

# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

  Java平臺(tái)已經(jīng)逐漸發(fā)展為一個(gè)成熟可靠的企業(yè)應(yīng)用平臺(tái),成熟的應(yīng)用平臺(tái)的一個(gè)標(biāo)志則是它能夠帶動(dòng)大量的衍生技術(shù)以及可以與其他技術(shù)集成的選 項(xiàng)。本文將詳細(xì)講述怎樣用Grails這項(xiàng)傳統(tǒng)JEE應(yīng)用開發(fā)的衍生技術(shù),結(jié)合另一項(xiàng)完全不同但卻可以在Java中使用的Flex技術(shù)來開發(fā)JEE。這兩 個(gè)平臺(tái)都能大幅度提高開發(fā)效率。兩者相結(jié)合則在為J2EE應(yīng)用創(chuàng)建富客戶端的同時(shí)不影響整體的開發(fā)效率。

  Grails的前身是一個(gè)在 JVM中運(yùn)行的web應(yīng)用,它使用Groovy以及其它幾個(gè)著名的框架,比如Spring和Hibernate。為了實(shí)現(xiàn)快速應(yīng)用開發(fā),它極為依賴 “Convention over Configuration”原則。Groovy擁有很多動(dòng)態(tài)的特性,在定義組件間共同行為方面,功能非常強(qiáng)大。Grails采用plug-in構(gòu)架,因 此很容易把它與其他框架集成,而且也很容易在應(yīng)用間復(fù)用各自的功能。

  Flex是個(gè)RIA開發(fā)套件,由它創(chuàng)建的SWF應(yīng)用只能在 FlashPlayer下應(yīng)用。這是Adobe(前身為MacroMedia)的一個(gè)新型 Flash開發(fā)套件。除了擁有豐富的widget和把各種widget粘合在一起的強(qiáng)大的語言之外,它還能提供一些高端通信解決方案,分布式應(yīng)用程序的開 發(fā)因此變得相當(dāng)容易。它使用兩種語法:MXML和ActionScript。MXML創(chuàng)建在XML語法之上,專門用來定義通用組件的用戶接口;而 ActionScript則用來定義組件之間的動(dòng)態(tài)交互。

  Grails和Flex的集成——難題所在

  要把Grails和Flex這兩個(gè)建立在完全不同基礎(chǔ)上的框架結(jié)合起來,首先會(huì)遇到諸多通信方面的問題:

  一個(gè)框架中的組件如何才能在另一個(gè)框架中找到正確的通信對(duì)象?

 從本質(zhì)上來說,Grails實(shí)際是運(yùn)行在服務(wù)器的JVM上的一個(gè)web應(yīng)用框架。Flex則是擁有客戶端和(瘦)服務(wù)器組件的RIA平臺(tái),服務(wù)器組件以web應(yīng)用的方式部署。因此,這兩個(gè)框架之間的集成實(shí)際上在web應(yīng)用容器內(nèi)進(jìn)行。

  用戶在Flex UI發(fā)起的通信必須通過Grails組件來調(diào)用業(yè)務(wù)邏輯。那么,F(xiàn)lex UI組件該如何找到正確的Grails組件呢?

  框架間如何解析彼此的數(shù)據(jù)?

  Flex采用ActionScript來描述數(shù)據(jù),而Grails則采用Java和Groovy對(duì)象。Flex UI向服務(wù)器發(fā)送的ActionScript對(duì)象應(yīng)該被轉(zhuǎn)述為應(yīng)用程序能夠理解的數(shù)據(jù)結(jié)構(gòu)。這該如何實(shí)現(xiàn)?

  某個(gè)用戶的修改該如何與該應(yīng)用程序的其他用戶交互?

  這是多用戶應(yīng)用程序普遍存在的問題,但同時(shí)運(yùn)用兩個(gè)不同的框架使得問題更加復(fù)雜。難點(diǎn)在于Grails應(yīng)用程序,用戶通過Flex UI來啟動(dòng)這個(gè)應(yīng)用,但如何通過Flex UI與其他用戶通信,讓他們知道該用戶的這一動(dòng)作呢?

  在接下來的三個(gè)部分中,我們詳細(xì)討論上文提到的三個(gè)問題,尋找采用Grails和Flex的解決方案。

  集成——尋找消息接收對(duì)象

  一個(gè)框架中的組件如何才能在另一個(gè)框架中找到正確的通信對(duì)象呢?

  具體到Grails和Flex的話,這個(gè)問題其實(shí)就是在問Flex組件怎樣才能找到正確的Grails組件,進(jìn)而發(fā)送請求數(shù)據(jù),或者以用戶的名義執(zhí)行一些操作。為了更好的理解解決這個(gè)難點(diǎn)的方法,我們首先來了解一下Flex的通信子系統(tǒng)。

  Flex中的客戶——服務(wù)器通信

   Flex的通信子系統(tǒng)可以分為客戶和服務(wù)器兩個(gè)部分。客戶部分包含了那些允許應(yīng)用程序發(fā)送或者接受消息的組件,比如RemoteObject和 Consumer組件。這些組件與服務(wù)器部分特定的“服務(wù)”對(duì)象相關(guān)聯(lián),比如RemotingService和MessagingService。客戶組 件及其相關(guān)聯(lián)的服務(wù)器組件的結(jié)合能夠支持典型的通信模式。比方說結(jié)合Consumer、Producers和MessagingService,應(yīng)用軟件 就能夠使用Publish-Subscribe機(jī)制來通信。

  客戶和服務(wù)器件的通信通過信道(Channel)來完成。信道的實(shí)現(xiàn)方式并不唯一,所有信道中最重要的是AMFChannel和 RTMPChannel。 AMFChannel建立在HTTP基礎(chǔ)上,也就是說建立在請求-回復(fù)的構(gòu)架上。它可以和MessagingService同時(shí)使用,從而支持 Publish-Subscribe構(gòu)架。這種結(jié)合下,信道定期從發(fā)布中讀取新的消息,生成請求。RTMPChannel在這樣的配置下效率更高,它能夠 在TCP/IP的基礎(chǔ)上支持客戶與服務(wù)器間的連接。這樣一來,客戶與服務(wù)器之間能夠立即發(fā)送或接受消息。遺憾的是,Adobe免費(fèi)開源的Flex實(shí)現(xiàn)—— BlazeDS不包含這樣的RTMPChannel實(shí)現(xiàn)。

  Flex中最重要的通信基礎(chǔ)設(shè)施是Destinations。 Destination是通信信道的服務(wù)器端終點(diǎn)。一個(gè)服務(wù)提供一個(gè) Destination,而客戶組件則通過這個(gè)Destination與這個(gè)服務(wù)相關(guān)聯(lián)。關(guān)聯(lián)的客戶組件可以向Destination發(fā)送和讀取消息。 Destinations可以由Factories創(chuàng)建。

  Grails暴露的遠(yuǎn)程接口:服務(wù)

  如何把Flex復(fù)雜的 通信設(shè)施和Grails結(jié)合起來呢?Grails能夠識(shí)別幾類對(duì)象:域?qū)ο蟆⒖刂破鳌⒁晥D和服務(wù)。Grails中的每個(gè)服務(wù)都是通過外部通信信道——比如 HTTP——展示某些功能或者服務(wù)的一個(gè)對(duì)象。而在Flex中,每個(gè)服務(wù)則與一個(gè)Destination相對(duì)應(yīng)。

  這恰恰就是針對(duì) Grails的flex-plugin所提供的解決方案。Grails中所有注明向Flex展示的服務(wù)都將在Flex框架中以Destination的形 式注冊。Grails通過一個(gè)特定的 Factory把注明的服務(wù)添加到Flex中特別配置的RemotingService。這個(gè)特定的Factory會(huì)在Grails使用的Spring上 下文中定位到對(duì)應(yīng)的服務(wù)。所有這些配置都可以在services-config.xml中找到,flex-plugin會(huì)為Grails將這個(gè)文件復(fù)制到 正確的地方。

class UserService {
static expose = ['flex-remoting']
def List all() {
User.createCriteria().listDistinct {}
}
def Object get(id) {
User.get(id);
}
def List update(User entity) throws BindException {
entity.merge();
if (entity.errors.hasErrors()) {
throw new BindException(entity.errors);
}
all();
}
def List remove(User entity) {
entity.delete();
all();
}
}

   這段配置將UserService展示給flex客戶。下面這段MXML代碼則是對(duì)前面這段配置的應(yīng)用。RemoteObject的 destination是userService,這個(gè)userService正是Grails中目標(biāo)對(duì)象提供的服務(wù)名。服務(wù)對(duì)象的所有方法這下都可以作 為遠(yuǎn)程操作調(diào)用。ActionScript可以將這些操作像一般的方法那樣調(diào)用,而方法調(diào)用的結(jié)果或錯(cuò)誤也可以當(dāng)作一般的ActionScript事件來 處理。

...
<mx:RemoteObject id="service" destination="userService">
<mx:operation name="all" result="setList(event.message.body)"/>
<mx:operation name="get" result="setSelected(event.message.body)"/>
<mx:operation name="update"/>
<mx:operation name="remove"/>
</mx:RemoteObject>
...
結(jié)論

  flex-plugin為Grails提供的針對(duì)集成的解決方案非常漂亮,易于使用而且?guī)缀跏亲詣?dòng)化的。在Convention-over-Configuration概念下,Destinations動(dòng)態(tài)添加到Flex配置的時(shí)候使用命名規(guī)范。

  數(shù)據(jù)轉(zhuǎn)換

  框架間如何互相轉(zhuǎn)換對(duì)方的數(shù)據(jù)(本文中就是Java和ActionScript對(duì)象轉(zhuǎn)換的問題)?

  這個(gè)問題的關(guān)鍵之處在于兩框架相交接的地方。Flex包含Java(web服務(wù)器)和ActionScript(客戶端)兩個(gè)組件。因此,Grails和Flex之間的邊界就在web服務(wù)器,而這個(gè)服務(wù)器在兩個(gè)框架內(nèi)實(shí)際上都是Java應(yīng)用。

  Flex的Java組件只關(guān)注于與Flex客戶間的通信。基于ActionScript對(duì)象的AMF協(xié)議就用于這樣的數(shù)據(jù)通信。服務(wù)器內(nèi)部的 Java代碼將數(shù)據(jù)轉(zhuǎn)換成ActionScript對(duì)象,這些對(duì)象在信道上實(shí)現(xiàn)系列化。Flex支持Java的基本類型,也支持其標(biāo)準(zhǔn)復(fù)雜類型(比如 Date或者 Collection類型)。由于ActionScript是門動(dòng)態(tài)語言,因此它也支持隨機(jī)對(duì)象結(jié)構(gòu)。Java對(duì)象域會(huì)轉(zhuǎn)換成ActionScript對(duì) 象的動(dòng)態(tài)屬性。但把這些非類型ActionScript對(duì)象轉(zhuǎn)換成Groovy域?qū)ο蟮倪^程則沒那么直接,它會(huì)默認(rèn)生成一個(gè)Map,將屬性以key- Value對(duì)的形式存儲(chǔ)到這個(gè)Map中。

  Flex創(chuàng)建與Groovy域?qū)ο髶碛型瑯訉傩缘腁ctionScript類,通過注解將兩者互相關(guān)聯(lián)起來,這樣一來,數(shù)據(jù)轉(zhuǎn)換更加方便。下面的這個(gè)例子就是這樣一對(duì)關(guān)聯(lián)的Groovy-ActionScript。

Groovy ActionScript
class User implements Serializable {  String username  String password  String displayName} [RemoteClass(alias="User")]
public class User {
public var id:*
public var version:*
public var username:String;
public var password:String = "";
public var displayName:String;
public function toString():String {
return displayName;
}
}


注 解“RemoteClass”將ActionScript類鏈接到由alias屬性指明的Java(或Groovy)類。alias這個(gè)屬性應(yīng)該包含完整 的類名。Grails中的領(lǐng)域類通常都添加到默認(rèn)的類包。Grails類中的所有屬性都會(huì)復(fù)制到ActionScript類。這些屬性的名字都應(yīng)當(dāng)完全一 樣。Grails會(huì)為所有需要“id”和“version”的領(lǐng)域?qū)ο髣?dòng)態(tài)添加這兩個(gè)屬性,領(lǐng)域?qū)ο笠虼丝梢栽谂c客戶端交互的時(shí)候保留這兩個(gè)信息。
結(jié)論
Flex 提供的與Java(或Groovy)間數(shù)據(jù)轉(zhuǎn)換的解決方案會(huì)導(dǎo)致很多重復(fù)的代碼。每個(gè)領(lǐng)域類都會(huì)被定義兩次,一次用Groovy(或Java)定義,另一 次用ActionScript。但是這樣一來,可以添加一些客戶端特定代碼,比如說那些單單用ActionScript編寫的控制對(duì)象顯示的代碼。這也推 動(dòng)編輯器同時(shí)提供兩種代碼的自動(dòng)完成功能。至于用于配置的注解則非常簡便。
多用戶
應(yīng)用程序如何將某個(gè)用戶所作的修改通知到其他用戶?
對(duì)于一個(gè)能同時(shí)支持多用戶的應(yīng)用程序來說,將某個(gè)用戶對(duì)共享數(shù)據(jù)所做的修改通知到其他用戶著實(shí)是個(gè)挑戰(zhàn)。對(duì)于其他用戶來說,這個(gè)過程可以看作是有服務(wù)器發(fā)起的通信。
單個(gè)中央結(jié)點(diǎn)(通常指服務(wù)器)向很多接收點(diǎn)(通常指客戶)發(fā)起通信的時(shí)候,發(fā)布-注冊(publish-subscribe)就非常實(shí)用。客戶在服務(wù)器上注冊之后,服務(wù)器上任何相關(guān)消息的發(fā)布,他們都會(huì)收到通知。
由于Grails可以使用Java,自然就可以用到JMS。JMS是應(yīng)用程序間通信的Java標(biāo)準(zhǔn),它支持publish-subscribe技術(shù),而且應(yīng)用程序也可以通過適配器來集成JMS。
Grails中的JMS配置
在眾多標(biāo)準(zhǔn)中,有一個(gè)特別針對(duì)Grails的jms-plugin,它添加了很多有用的方法可以用來向JMS目的地對(duì)象、向所有的控制器和服務(wù)類發(fā)送消息。在上一章中提到的UserService就可以運(yùn)用這些方法在數(shù)據(jù)發(fā)生變化時(shí)通過JMS向所有的用戶發(fā)送更新消息。
class UserService {
...
def List update(User entity) throws BindException {
entity.merge(flush:true );
if (entity.errors.hasErrors()) {
throw new BindException(entity.errors)
}
sendUpdate();
all();
}
def List remove(User entity) {
entity.delete(flush:true );
sendUpdate();
all();
}
private def void sendUpdate() {
try {
sendPubSubJMSMessage("tpc",all(),[type:"User"]);
} catch (Exception e) {
log.error("Sending updates failed.", e);
}
}
}

   服務(wù)可以決定什么時(shí)候發(fā)送什么樣的消息。無論用戶什么時(shí)候更新或刪除數(shù)據(jù),都會(huì)發(fā)送一條包含了完整的數(shù)據(jù)列表的消息。這條消息會(huì)發(fā)送到特定話題,也就是 這里的“tpc”。任何注冊了這個(gè)話題的用戶都將接收到新數(shù)據(jù)。列表中的對(duì)象類型(本例中也就是“User”)作為元數(shù)據(jù)添加到消息中,接收對(duì)象因此在服 務(wù)器上注冊的時(shí)候特別指明他們所關(guān)注的數(shù)據(jù)類型。

  為了讓Grails應(yīng)用也能夠采用JMS,每個(gè)JMS都需要實(shí)現(xiàn)provider。 Apache有個(gè)免費(fèi)的開源實(shí)現(xiàn),只需簡單配置就能在Grails應(yīng)用程序中使用。你所需要做的是把ApacheMQ類庫添加到Grails應(yīng)用的lib 文件夾下,再將下列代碼段復(fù)制到connection factory所使用的conf/spring文件夾下的resources.xml中。

...
<bean id="connectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="vm://localhost"/>
</bean>
</property>
</bean>
...
在Flex中接收J(rèn)MS消息

   目前的Flex配置僅僅包含一個(gè)RemotingService,依靠它來支持request-response類型的用戶與UserService間 交互。這個(gè)服務(wù)由flex-plugin向Grails中添加。除此之外,我們還需要一個(gè)MessagingService來支持publish- subscribe類型的交互。

...
<service id="message-service" class="flex.messaging.services.MessageService" messageTypes="flex.messaging.messages.AsyncMessage">
<adapters>
<adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter" default="true"/>    </adapters>    <destination id="tpc">
<properties>
<jms>
<message-type>javax.jms.ObjectMessage</message-type>
<connection-factory>ConnectionFactory</connection-factory>
<destination-jndi-name>tpc</destination-jndi-name>
<delivery-mode>NON_PERSISTENT</delivery-mode>
<message-priority>DEFAULT_PRIORITY</message-priority>
<acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode>
<transacted-sessions>false</transacted-sessions>
<initial-context-environment>
<property>
<name>Context.PROVIDER_URL</name>
<value>vm://localhost</value>
</property>
<property>
<name>Context.INITIAL_CONTEXT_FACTORY</name>
<value>org.apache.activemq.jndi.ActiveMQInitialContextFactory</value>
</property>
<property>
<name>topic.tpc</name>
<value>tpc</value>
</property>
</initial-context-environment>
</jms>
</properties>
</destination>
</service>
...

   在services-config.xml文件中,我們需要添加下列這段包含了一個(gè)新的MessagingService和JMSAdapter的代碼 段。添加的這個(gè)適配器將服務(wù)中的destination鏈接到JMS資源。這個(gè)服務(wù)中還包含一個(gè)destination的配置,flex代碼中的用戶可以 通過注冊獲得這個(gè)destination的數(shù)據(jù)更新。Destination中含有很多JMS特定的配置。大部分都是常用的JMS屬性。initial- context-environment中的“topic.tpc”屬性是個(gè)可定制的ActiveMQ屬性,這個(gè)屬性將在上下文中注冊一個(gè)JNDI名為 “tpc”的話題。

...
<mx:Consumer destination="tpc" selector="type = 'User'"
message="setList(event.message.body)"/>
...

   Flex客戶端代碼非常簡單。消息根據(jù)選擇器(selector)被發(fā)送到特定的destination,而Consumer組件因此接受到所對(duì)應(yīng)的 destination中的消息。在這個(gè)例子中,我們通過篩選器指定Consumer所關(guān)注的消息是元數(shù)據(jù)“type”屬性值為&ldquo;User”的內(nèi)容。無論 消息是何時(shí)收到的,消息的內(nèi)容,也就是User-objects列表會(huì)被置為可顯示的內(nèi)部列表。消息內(nèi)容的處理和RemoteObject上“all”處 理的返回值完全一樣。

  結(jié)論

  Grails和Flex中將數(shù)據(jù)變化傳遞給多用戶的解決方案完全可以通過標(biāo)準(zhǔn)組件來實(shí)現(xiàn)。涉及到的組件數(shù)量很多,配置和實(shí)現(xiàn)因此相當(dāng)復(fù)雜。如果配置正確的話,這個(gè)解決方案使用起來就非常方便。

  合并解決方案

  回顧前三章提出的解決方案,你會(huì)發(fā)現(xiàn)還可以把他們合并起來得到一個(gè)更為通用的解決方案來實(shí)現(xiàn)Flex/Grails應(yīng)用程序客戶與服務(wù)器間的關(guān)于領(lǐng)域狀態(tài)信息的通信。本章節(jié)中,我們要討論的就是這樣一個(gè)更為通用的解決方案。

  泛化服務(wù)器端代碼

  問題1和3的解決方案所需要的服務(wù)器端的代碼可以合并到同一個(gè)Groovy服務(wù)中。我們將把它指明為針對(duì)User領(lǐng)域類的服務(wù)。通過Groovy這樣一門動(dòng)態(tài)語言,要把這樣一個(gè)服務(wù)泛化到面向所有領(lǐng)域類的操作非常容易。

import org.codehaus.groovy.grails.commons.ApplicationHolder
class CrudService {
static expose = ['flex-remoting']
def List all(String domainType) {
clazz(domainType).createCriteria().listDistinct {}
}
def Object get(String domainType, id) {
clazz(domainType).get(id)
}
def List update(String domainType, Object entity)
throws BindException {
entity.merge(deepValidate:false, flush:true)
if (entity.errors.hasErrors()) {
throw new BindException(entity.errors)
}
sendUpdate(domainType);
all(domainType);
}
def List remove(String domainType, Object entity) {
entity.delete(flush:true);
sendUpdate(domainType);
all(domainType);
}
private def Class clazz(className) {
return ApplicationHolder.application.getClassForName(className);
}
private def void sendUpdate(String domainType) {
try {
sendPubSubJMSMessage("tpc", all(domainType), [type:domainType]);
} catch (Exception e) {
log.error("Sending updates failed.", e);
}
}
}

   要實(shí)現(xiàn)這個(gè)目的的關(guān)鍵在于讓客戶來決定返回的領(lǐng)域類型。出于這個(gè)目的,我們需要為所有服務(wù)引入一個(gè)參數(shù),通過這個(gè)參數(shù)為服務(wù)器鑒定各個(gè)領(lǐng)域類型。很明 顯,對(duì)于這個(gè)參數(shù)來說,領(lǐng)域類型的類名是無非是最好的選擇。為所有領(lǐng)域?qū)ο筇峁?C(reate)R(etrieve)U(pdate)D(elete)操 作的服務(wù)被稱為CrudService。

  一旦有任何數(shù)據(jù)更改,CrudService都會(huì)向JMS話題發(fā)送更新消息。這個(gè)更新消息包含了應(yīng)用程序所知道的完整的領(lǐng)域?qū)ο罅斜怼榱俗層?戶來決定這是否是自己心儀的更新內(nèi)容,領(lǐng)域類型的類名將以元數(shù)據(jù)方式添加到消息中。

  客戶端代碼

 解決方案1和3中的客戶端ActionScript代碼也可以綜合到同一個(gè)類中。這個(gè)類的實(shí)例可以用來管理客戶端某個(gè)特定領(lǐng)域類型的所有實(shí)例集。

public class DomainInstancesManager
{
private var domainType : String;
public function EntityManager(domainType : String, destination : String) {
this.domainType = domainType;
initializeRemoteObject();
initializeConsumer(destination);
}
private var _list : ArrayCollection = new ArrayCollection();
public function get list () : ArrayCollection {
return _list;
}
private function setList(list : *) : void {
_list.removeAll();
for each (var o : * in list) {
_list.addItem(o);
}
}
internal static function defaultFault(error : FaultEvent) : void {
Alert.show("Error while communicating with server: " + error.fault.faultString);
}
...
}

   實(shí)現(xiàn)客戶端的ActionScript基本上包含兩個(gè)組件:簡化request-response對(duì)話的RemoteObject和用于 producer-subscriber對(duì)話的Consumer組件。上一章節(jié)中,這些對(duì)象通過MXML代碼實(shí)現(xiàn)初始化,但他們也可以通過 ActionScript來創(chuàng)建。上面這段代碼段顯示的是這兩個(gè)組件共同使用的結(jié)構(gòu):包含了實(shí)例和錯(cuò)誤處理的列表。包含實(shí)例的列表根據(jù)任何一個(gè)通信組件發(fā) 送的消息而更新。

 ...
private var consumer : Consumer;
private function initializeConsumer(destination : String) : void {
this.consumer = new Consumer();
this.consumer.destination = destination;
this.consumer.selector = "type ='" + domainType + "'";
this.consumer.addEventListener(MessageEvent.MESSAGE, setListFromMessage);
this.consumer.subscribe();
}
private function setListFromMessage(e : MessageEvent) : void {
setList(e.message.body);
}
...

   這里這段代碼顯示的是Consumer如何通過ActionScript來構(gòu)建,這段代碼用來接收服務(wù)器端發(fā)送的消息。Consumer的 selector屬性僅僅用來接收那些包括了元數(shù)據(jù)中所指明的領(lǐng)域類型的消息。無論什么時(shí)候接收到這樣的消息,event handler都會(huì)被調(diào)用,并且列表也會(huì)得到更新。

  接下來這段代碼段將RemoteObject設(shè)置為request-response型通信的一個(gè)結(jié)點(diǎn)。所有必要的操作都作為操作屬性而添加到RemoteObject上,客戶因而很容易調(diào)用這些操作。

...
private var service : RemoteObject;
private var getOperation : Operation = new Operation();
public function initializeRemoteObject() {
this.service = new RemoteObject("crudService");
var operations:Object = new Object();
operations["all"] = new Operation();
operations["all"].addEventListener(ResultEvent.RESULT, setListFromInvocation);
operations["get"] = getOperation
operations["remove"] = new Operation()
operations["remove"].addEventListener(ResultEvent.RESULT, setListFromInvocation);
operations["update"] = new Operation()
operations["update"].addEventListener(ResultEvent.RESULT, setListFromInvocation);
this .service.operations = operations;
this .service.addEventListener(FaultEvent.FAULT, defaultFault);
// Get the instances from the server.
this.service.all(domainType);
}
public function get(id : *, callback : Function) : void {
var future: AsyncToken = getOperation.send(domainType, id);
future.addResponder(new CallbackResponder(callback));
}
public function update(entity : Object) : void {
service.update(domainType, entity);
}
public function remove(entity : Object) : void {
service.remove(domainType, entity);
}
private function setListFromInvocation(e : ResultEvent) : void {
setList(e.message.body);
}
...

   大部分方法都將任務(wù)委派到服務(wù)的其中一個(gè)操作。所有這些操作都不會(huì)阻塞其它操作,同時(shí)它們都是異步操作。服務(wù)的返回值無論什么時(shí)候都會(huì)由注冊的事件處理 器(eventhandler,本例中為setListFromInvocation)來處理,這個(gè)處理器同時(shí)還會(huì)更新列表。由于返回值在很多地方都會(huì)用 到,“getOperation”就顯得有點(diǎn)特別。CallbackResponder只有注冊了調(diào)用才能得到該調(diào)用的返回值。答復(fù)方也將調(diào)用一個(gè) Function來處理剛接收到的消息的內(nèi)容。

import mx.rpc.IResponder;
import mx.rpc.events.ResultEvent;
public class CallbackResponder implements IResponder {
private var callback : Function;
function CallbackResponder(callback : Function) {
this .callback = callback;
}
public function result(data : Object) : void {
callback(ResultEvent(data).message.body);
}
public function fault(info : Object) : void {
DomainInstancesManager.defaultFault(info);
}
}
使用通用的類包

   怎樣使用這個(gè)通用的類包呢?我們來看一個(gè)例子,這個(gè)例子中我們要實(shí)現(xiàn)的是在第二個(gè)解決方案中提到的管理User對(duì)象的實(shí)例。下面這段MXML代碼定義了 一個(gè)PopUpDialog,這個(gè)PopUpDialog可以用來編輯系統(tǒng)中Users的詳細(xì)信息。這個(gè)對(duì)話框的外觀就如左圖所示。實(shí)例變量 “manager”為User領(lǐng)域類型初始為一個(gè)DomainInstanceManager實(shí)例。界面中包含了所有捆綁到這個(gè)manager的list 屬性的用戶的列表。它顯示了用戶的displayName值。

<mx:TitleWindow xmlns:mx="//www.adobe.com/2006/mxml" xmlns:users="users.*" title="User Manager">
<mx:Script>
<![CDATA[
import crud.DomainInstancesManager;
import mx.managers.PopUpManager;
[Bindable]
private var manager : DomainInstancesManager = new DomainInstancesManager("User", "tpc");
private function resetForm() : void {
selectedUser = new User();
secondPasswordInput.text = "";
}
private function setSelected(o : Object) : void
{
selectedUser = User(o);
secondPasswordInput.text = selectedUser.password;
}
]]>
</mx:Script>
<users:User id="selectedUser"
displayName="{displayNameInput.text}"
username="{usernameInput.text}"
password="{passwordInput.text}"/>
<mx:List height="100%" width="200" dataProvider="{manager.list}" labelField="displayName"
itemClick="manager.get(User(event.currentTarget.selectedItem).id, setSelected)"/>
<mx:VBox height="100%" horizontalAlign="right">
<mx:Form>
<mx:FormItem label="Display Name">
<mx:TextInput id="displayNameInput" text="{selectedUser.displayName}"/>
</mx:FormItem>
<mx:FormItem label="User Name">
<mx:TextInput id="usernameInput" text="{selectedUser.username}"/>
</mx:FormItem>
<mx:FormItem label="Password">
<mx:TextInput id="passwordInput" text="{selectedUser.password}" displayAsPassword="true"/>
</mx:FormItem>
<mx:FormItem label="Password">
<mx:TextInput id="secondPasswordInput" text="" displayAsPassword="true"/>
</mx:FormItem>
</mx:Form>
<mx:HBox width="100%">
<mx:Button label="New User" click="{resetForm()}"/>
<mx:Button label="Update User" click="{manager.update(selectedUser);resetForm()}"/>
<mx:Button label="Remove User" click="{manager.remove(selectedUser);resetForm()}"/>
</mx:HBox>
<mx:Button label="Close" click="PopUpManager.removePopUp(this)"/>
</mx:VBox>
</mx:TitleWindow>

   一旦點(diǎn)擊列表中的數(shù)據(jù)項(xiàng),你就可以從服務(wù)端讀取對(duì)應(yīng)的user對(duì)象的數(shù)據(jù),這些數(shù)據(jù)存儲(chǔ)在界面的“ selectedUser”中。這個(gè)屬性在MXML中定義,因此很容易用來與表單中的域綁定。 “selectedUser”屬性的屬性和表單中的input域是雙向綁定,所以“selectedUser”屬性值的改變(由服務(wù)器端的事件引發(fā)的修 改)會(huì)影響到input域,而input域的值的改變(由用戶輸入值所引發(fā)的修改)也會(huì)影響到“selectedUser”屬性值。界面上的按鈕是鏈接到 manager的方法,這個(gè)方法的參數(shù)就是&ldquo;selectedUser&rdquo;屬性值。方法調(diào)用的結(jié)果會(huì)影響到manager維護(hù)的表單,也會(huì)影響到界面上顯示 的列表內(nèi)容,因?yàn)檫@兩者也是互相綁定的。

  注意事項(xiàng)

  需要注意的是,在使用這個(gè)通用類庫的時(shí)候,你需要在客戶端維護(hù)一個(gè)包含了系統(tǒng)所識(shí)別的某個(gè)特定類型的所有對(duì)象的列 表。有些你所期望使用的引用數(shù)據(jù)和數(shù)據(jù)本身可能會(huì)在實(shí)例的數(shù)量上有一定的限制,這沒什么問題。另外還有一些數(shù)據(jù)你可能不是必須的,甚至不可能維護(hù)一個(gè)完整 的列表,這時(shí)候你可以在這個(gè)完整的表單的子集上采用同樣的原理。

  有趣的是,無論客戶何時(shí)修改數(shù)據(jù)(無論是保存、更新或是刪除領(lǐng)域?qū)?象),他都會(huì)得到一個(gè)包含了新的列表的回復(fù)。他還會(huì)接收到一個(gè)消息表明其他用戶也都收到了更新的列表。因此,用戶會(huì)因?yàn)樽约旱拿總€(gè)修改而收到兩條更新消 息。第一條(針對(duì)他請求的回復(fù))可以被丟棄,但這條消息會(huì)添加到系統(tǒng)中,因?yàn)橹苯踊貜?fù)常常比通過JMS發(fā)送消息更費(fèi)時(shí)間。

  另外一個(gè)值得 提及的是,由于消息中包含的更新(本例中就是完整的列表)來自于不同的信道,這個(gè)模型中可能存在并發(fā)問題。消息有可能被延遲,用戶可能在收到一個(gè)更新消息 之后再收到收到上一個(gè)更新的消息。這也意味著用戶看到的是失去實(shí)效的數(shù)據(jù)。解決這個(gè)問題的一個(gè)方法是在消息中添加一個(gè)序列號(hào),然后在每次接收消息的時(shí)候通 過檢驗(yàn)這個(gè)序列號(hào)來查看這條信息是否是最新的。

  結(jié)論

  通用的類包以易于使用的形式包含了前面幾章中討論的解決方案。

  本文中提到的解決方案能夠?yàn)殚_發(fā)使用Flex和Grails的JEE應(yīng)用程序提供堅(jiān)固的基礎(chǔ)。采用這個(gè)工具箱的JEE開發(fā)人員的開發(fā)將可以更快、更敏捷,也許更重要的是開發(fā)將變得更有趣!

  關(guān)于作者

 Maarten Winkels是具有五年Java和JEE開發(fā)經(jīng)驗(yàn)的軟件開發(fā)工程師和咨詢師。他最近從荷蘭搬遷到印度,宣傳Xebia所提供的分布式敏捷開發(fā)過程。 Xebia是一家專于Java技術(shù)、海外Agile項(xiàng)目、Agile咨詢和培訓(xùn)、IT構(gòu)架和審核的公司。


標(biāo)簽:

本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉(zhuǎn)載自:infoq

為你推薦

掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
主站蜘蛛池模板: 另类欧美! | 日韩影片欧美在线素人 | 国产午夜无码福利视频 | 国产久青草 | 成人午夜a级毛 | 国产呦在线观看 | 午夜美女影院 | 国产三四区| 日韩欧美在现 | 日韩无砖专 | 河南国产乱子伦 | 91视频网入口 | 日韩综合在线观看 | 国产在AJ精品 | www.日本道色 | 尹人精品 | 日韩一二三四精品免费 | 日韩变态网 | 中国免费三级片 | 三级精品在线免费观看 | 国产99视频精 | 城中村嫖妓露脸自拍 | 日韩午夜伦y448 | 日韩免费观看 | 美女全黄网站 | 激情五月成人 | 这里有精品| 国产在线观看啊 | 天堂午夜成人福利在线 | 日韩亚洲国产综合一区 | 成人三级在线播放 | 激情视频小说在线观看 | 激情小说图片综合网 | 狼友视频免费在线观看 | 色婷婷激情网 | 国产m豆传媒 | 五月婷婷激情网 | 国产另类图片 | 日韩无码高清免费 | 无码不卡一区 | 午夜利视频 | 久久综合东京热 | 久久这里只有精品9 | 成人午夜福利在线看 | 日韩亚洲制服欧美综合 | 日韩欧美首页分区 | 午夜视频软件 | 欧美成人视屏在线 | 美女精品| 五级A片 | 日韩激情一区二区 | 男同gv网站 | 国产福利区一 | 日韩欧美动漫一区二区 | 97超操| 精品人妻一二三区 | 日韩亚洲欧美在线观看 | 成人精品午夜无码免费 | 国产啪亚洲国 | 成人免费大片 | 日韩理论片在线观看 | 成人无码免费毛片A片 | 国产原创| 日韩视频免费在线 | 日韩欧美一级视频喷潮 | 午夜成人无码精品福利 | 国产勾搭在线 | 蜜桃二区 | 国产综合区 | 一区二区蜜桃臀 | 日逼精品 | 极品一区 | 国产精品三级片在线 | 国产丝袜福利 | 丝袜美腿视频一区 | 日韩丝袜欧美综合 | 成人午夜福利 | 丝袜性爱 | 中文乱伦字幕 | 老熟女重口HD | 久久精品66| 日韩中文在线免费视频 | 午夜成人无码免费视频 | 亚洲国产一 | 美女91| 桃色在线视频 | 97狠狠插 | 日韩在线视频二 | 美女精品视频 | 国产精品人aⅴ | 久久综合中文字幕 | 91偷拍经典 | 日韩国产精品乱久 | 国产99区一区二区 | 三级成人视频在线观看 | 日韩电影在线观看视频 | www.日本在线观看 | 全网三级视频在线观看 | 人妖网站在线 | 97视频免费在线观看 | 无码区国产区在线播放 | 日韩欧中文字幕精品 | 日韩专区欧 | 亚洲色片在线观看 | 国产色情一区二区三区 | 老湿机看片| 偷拍自拍第一页 | 91丨露脸丨熟女精品 | 成人羞羞在线观看网站 | 亚洲天堂2025| 国产色片网 | 成人不卡在线 | 国产ts人妖在线观看 | 午夜福利在线视频 | 日韩二区欧美三区 | 中国三级片完整版 | 日韩无码网站 | 福利三区 | 国产91香蕉网 | 国产aa免费 | 人妻无码系列 | 国产中文字幕网 | www日本免费| 日韩欧美电影在线观看 | 国产人妖ts在线 | 久久精品这里只有精品 | 三级成人片在线观看 | 岛国大片在线一 | 日韩暖暖 | 亚洲国产成人无码影视 | 性久久久久 | 日韩欧美亚洲激情 | 激情小说视频网 | 久久综合综合久久 | 91原创国| 日韩一区二区免费电影 | 久久影视综合 | www.色日本睡觉 | 精品自拍偷拍视频 | 自拍偷拍第6页 | 午夜成年影院 | 国内自产自拍 | 日韩成人激情 | 丁香综合网 | 国产性爱精品在线观看 | 国产清草 | 日韩在线视频 | 日韩在线一二三 | 日本三级a| 日韩日产欧美亚洲综合 | 欧美黑人性爱 | 日韩最新网站 | 成人黄色大片 | 尤物视频在线观看视频 | 国产人妖视频 | 日韩亚洲影 | 狼友永久视频 | 午夜视频官网 | 激情四房网| 日韩不卡高 | 午夜无码在线观看视频 | 无码少妇啪啪 | 玖玖视频 | 三级免费 | 午夜体验区| 日韩一本道 | 成人欧美日韩在线观看 | 国产在线色 | 日韩精品欧美在线视频 | 国产日逼视频 | 黄色三级成人网站 | 成人黃色A片免费 | 超碰超碰超 | 五月丁香婷婷综合在线 | 日本成人不卡 | 97福利导航 | 妊娠孕妇一二三区视频 | 精品精免费精品产品 | 丰满少妇户外野外啪 | 国产精品高清网站 | 成人高清视频 | 老湿机免费福利 | 久草资源网 | 日韩先锋影音中文 | 日韩a在线播放 | 日韩在线小视频 | 国产剧情一区二区 | 日韩免费影视 | 精品女同一区二区 | 日韩在线亚洲 | 午夜在线观看 | 国产精品狼友 | 福利在线 | 韩国床震无遮挡 | 成人午夜在线播放 | 午夜成人免费网站 | 国产91白丝在线播放 | 另类欧美尿交 | 欧美国产性爱 | 日韩精品 欧美 | 一区二区动漫 | 欧美91| 日韩成a人在线观看 | 国产大片特黄高清视频 | 国产三级三级在线观看 | 三级片在线观看视频 | 国产福利91 | 日韩国产午夜在线精品 | 日韩曝门国产在线观看 | 国模大胆一区二区三区 | 欧美国产精品 | 国产精品1234 | 91av免费看| 国产xxxx在线观看 | 日韩精品三级在线观看 | 日韩免费高清大片在线 | 又黄又刺激的视频 | 亚洲国产精品在线 | 成人a在线观看 | 做爱在线免费观看网站 | 欧美怡春院 | 三级国产裸 | 中文字幕一级片 | 日韩热映专区视频合集 | www色日本 | 午夜视频在线网站 | 一区二区免费看视频 | 成人免费A网站 | 国产ts精品人妖系列 | 性爱在线观看 | 中文字幕日本人妖 | 国产91精品 | 国产性自拍| 人妖网站免费 | 国产丝袜第一页 | 在线天堂资源 | 国产2页| 国产午夜视频在线 | 国产成人在线不卡 | 精品熟妇 | 玖玖色资源 | 欧美性爱欧美性爱 | 欧美一曲二曲三曲 | 性爱自拍第一页 | 国产91高清精品 | 国产www污污 | 在线成人三级片 | 国产日夜 | 午夜成人精品福利 | 五月丁香六月 | 三级综合精品乱伦 | 日韩一区二区三区激情 | 激情四房网| 亚洲激情图片小说伦 | 国产伦理视频 | 日韩精品第五页 | 日韩伦理视频 | 国产AV剧情 | 日韩午夜看片成人精品 | 在线中文国产 | www.日本色色 | 成人超碰97 | 国产一区导航 | 日韩电影app | 口爆在线| 91社中文| 人妖网站国产 | 日韩精品欧美三级 | 午夜成人精品视频 | 日韩精品大片 | 亚洲狠狠干 | 玖玖爱精品在线 | www.三级片 | 日韩精品三期 | 三级成人在线观看 | 国产91精品露脸国语 | 午夜福利视频 | 夜夜夜夜夜夜操 | 日韩在线播放视频 | 99导航| 日韩高清一二三区 | 在线观看国产h | 超碰97观看 | 成人深爱网| 欧美一曲二曲三曲 | 欧美日韩精品在线 | 日韩免费高清大片在线 | 流白浆视频 | 日韩成人一区 | 日韩视频 中文字幕 | 成人a大片在线观看 | 国产日产亚洲 | 五月不婷婷深爱月天 | 成人三级片在线 | 国产裸体美女免费 | 午夜爱婷婷 | 日韩换脸一区二区三区 | 午夜福利在线视频 | 国产japanese | 日韩欧美国产一区三 | 成人免费午夜福利 | 夜夜干天天爽 | 日韩AV女优在线观看 | 福利所第一导航福利 | 图片在线视频小说成人 | 日韩国产欧美精品综 | 欧美另类重口味 | 三级直播视频在线观看 | 成人高清网站 | 亚洲二页 | 夜福利视频观看视频 | 成人午夜免费 | 日韩欧美亚洲中文字幕 | 欧美另类在线 | 日韩另类美女黑人 | www色日本| 日韩成人免费在线 | 三级视频在线观看网站 | 午夜无码影院 | 簧片视频免费观看 | 欧美日韩中文 | 成人午夜在线视频网站 | 日韩成人成色 | 日韩视频男人的天堂 | 国产成人精品国内自产 | 日韩成人亚洲 | 另类激情图区 | 美女内射网站 | 成人深夜在线观看 | 日韩欧美亚洲系列 | 日韩加勒比 | 欧美成人在线视频 | 日韩免费精品大片 | 97在线免费观看视频 | 99九九视频 | 精品男女在线观看 | 午夜成人影院催经视频 | 日韩国产电影 | 午夜福利网午夜福利网 | 欧美日韩一 | 国产aa片| 午夜成人精品视频 | 成人午夜看片在 | 国产理论片在线观看 | 在线三级片视频 | 福利片国产视频区 | 日韩a级毛 | 成人视频午夜 | 成人福利导航在线观看 | 成人a无码 | 国产三级在线网站 | 日韩网站免费观看 | 日韩成人影院 | 国产盗拍视频一区二区 | 日韩高清免 | 国产岛国在线观看 | 正在播放城中村嫖妓 | 日韩a片| 国产日韩性爱 | 福利所视频导航 | 国产精品一二区 | 久久不卡一区 | 另类欧美一 | 成人午夜福利剧场 | 午夜体验区| 日韩AV二区| 日韩福利视颁精品专区 | 深夜福利无码视频 | 国产aⅴ一区二区 | 午夜视频影院 | 日韩欧美啪啪操 | 深夜福利网址 | 三级黄色网页 | 婷婷五月香 | 人人草超碰 | 国内乱伦网 | 成人看片网址 | 日韩欧美国产亚洲中文 | 日韩精品一区二区三 | 日韩丝袜欧美综合 | 另类四虎| 成人午夜精品福利 | 偷自拍99 | 69福利 | 伦理二区 | 日韩在线你懂得 | 日韩国产欧美制服中文 | 国产看片免费 | 国产精品伊人 | 日韩亚洲精品在线观看 | 国产高清视频在线 | 中国人妖和人妖ⅩXX | 天天操天天碰 | 亚洲国产激情 | 无码网站在线 | 日韩另类亚洲欧美 | 成人网站三级片 | 97人人超| 国产美女裸体网站 | 日韩精品成人一 | 日韩欧美国产一区免费 | 久久青青 | 成人艳情一二三区 | 国产va在线视频 | 午夜在线观看福利 | 足交在线玉足 | 男人的天堂黄色 | 91页性爱 | 91自拍精品 | 国产青青第 | 日韩丰满一区二区 | 日韩国产欧美精品 | 免费a级毛片 | 不卡成人网 | 乱伦中字 | 国产美女在线观看 | 国产在线无码播放 | 日韩美女性感 | 自拍偷拍免费 | 日韩国产片 | 欧美一区二区不卡视频 | 天天爽爽夜夜爽爽 | 国产欧美中文 | 日韩专区国产在线 | 日韩主播午夜 | 日韩欧美偷拍精品一区 | 中文字幕久荜 | 欧美日韩一二区 | 午夜伦不卡 | 国产一区美女视频 | 成人三级视频在线 | 黄色网址无码 | 日本天堂在线观看 | 色老板亚洲 | 亚洲激情小说 | 国产在线看片 | 日韩色色图 | 成人免费观看视 | 国产女人 | 亚洲国产精品精 | 免费无码不卡在线观看 | 国产午夜福利在线 | 日韩逼网 | 日韩福利视频在线观看 | 麻豆秘精品国产免费 | 久久综合官网 | 国产乱伦中文字幕 | 人人操97| 亚洲精品国产精品国产 | 国产一区二区无码不卡 | 另类人妖 | 国产a级毛多妇女视频 | 河南国产乱子伦 | 欧美黑人性爱视频 | 夜深福利 | 久久这里只有是精品 | 国产精品一级爱 | 91视频诱惑 | 夜间福利在线观看 | 精品久久久久性 | 日韩性视频在线播 | 三级片在线观看国产 | 日韩国产激情在线 | 另类潮喷 | 丁香五月丁香 | 成人午夜在线观看 | 91影院在线观看 | 久久足交 | 日韩伦理电影院 | 91视频一区二 | 成人日韩视频 | 日韩高清在线中文字幕 | 无码不卡免费在线观看 | 日韩午夜五码 | 日韩午夜福利成人 | 国产无码不卡在线 | 日韩在线亚洲 | 91视频精选| 久久精品2025 | 成人国产综 | 午夜美女网站 | 九九热精品| 亚洲激情小说网 | 成人h动漫精品一区 | 三级片国产网站 | 精品国产一区二区久 | A片三级三级三级网站 | 亚洲国产成人综合色 | 日本中文字幕在线观看 | 国产精品狼人 | 日韩精品欧美一区二区 | 国产大片线上免费看 | 天天干天天弄 | 国产大片黄在线观看 | 91av福利| 日韩国产精品中文 | 日韩欧美视频在线观看 | 国产偷拍 | 老湿影院免费体验区 | 亚洲激情小说图片 | 日韩午夜福利免 | 日韩精品视频新区乱码 | 深夜福利免费看 | 麻豆视频网站在线观看 | 狠狠操亚洲| 午夜精品成人无码 | 成人精品免费视频 | 国产午夜免费啪 | 日韩免费不卡 | 日韩亚洲人成在线 | 成人伦理网 | 国产足交 | 日韩欧美在线导航 | 国产自精品 | 国产丝袜人妖在线 | 欧美高清精品一区二区 | 91影院| 日韩精品999 | 黄色深夜福利小视频 | 国产三级片在线免费 | 日韩视频-熊猫成人网 | 欧美性xxxx | 日韩高潮喷水 | 三级片免费国产 | 欧美国产性爱 | 国产精品www. | 自慰一区 | 精品成人 | 成人高清在线视频 | 国产免费a| 91蜜臀| 日韩亚洲精品在线观看 | 超碰美女 | 国产精品国产三级国产 | 成人影院| 亚洲国产三级在线观看 | 国产女和黑人 | 日韩美女视频一区 | 国产性在线 | 孕妇被操视频 | 日韩免费一区二区 | 激情小说图片亚洲 | 91最新国| 日韩在线看视频 | 亚洲国产无码在线观看 | 成人中文乱幕日 | 东京热大乱w姦在线 | 国产自约视频 | 91制片厂免费 | 欧美精品不卡 | 午夜视频在线观看网站 | 日韩午夜福 | 成人三级在线播放 | 激情小说激情图片 | 日韩亚洲人成在线 | 成人欧美视频 | 极品美女在线 | 欧美一级性 | 啪啪啪在线观看国产 | 91直播视频| 日韩杏导航 | 91swag| 三级在线观看成人 | A级免费毛片 | A级毛片一区二区三区 | 国产91丝袜在线动漫 | 国产手机精品视频 | 黄色A片三级A片 | 天堂网一区 | 日韩综合欧美 | 人人操97 | 午夜福利播放 | 性欧美精品 | 加勒比无码人妻 | 成人美女视频在 | 午夜视频福利网 | 亚洲国产精品电影 | 日韩另类一区 | 成人A毛片 | 欧美成人免费在线观看 | 日韩理论午夜 | 国产在线线路一 | 日本中文字幕网 | 午夜三级伦理片 | 看毛片的网址 | AV第一福利大全导航 | 97社区资源网 | 国产免费自拍视频 | 视频一区二区视频 | 亚洲人成免费网站 | 日韩欧美亚洲国产永 | 自拍偷拍第99页 | 东京热黄| 孕妇av在线 | 岛国搬运www久 | 日韩在线视精品在 | 日韩热映专区视频合集 | 玖玖中文字幕 | 国产精品成 | 国产三级在线观看免费 | 在线观看三级网站 | 成人精品电影在线 | 91视频青| 国产精品一曲二曲 | 国产亚洲免费看 | 日韩女神福利在线观看 | 99精品视频在线观看 | 91天天在线 | 国产无码高清一区 | 日韩A级片| 国产在线第一页 | 涩涩涩导航 | 成人午夜看片 | 国产精品无码AV | 视频在线一区二区 | 97社区资源网 | 国产精品成人三级 | 日韩在线一区 | 国产午夜伦理片 | 午夜免费福利 | 国产福利在线视频 | 成人久久| 亚洲玖玖 | 日韩欧美一区二区尤物 | 黄色A片三级A片 | 九九精品九九 | 乱色熟女| 国产午夜一级毛 | 高清无码一卡二卡 | 蜜桃色播| 国产香蕉片| 国产ts人妖另类专区 | 超碰97人人艹 | 天堂网一区 | 天天操穴 | 国产视频一 | 成人国产精品秘片多多 | 无码专区一 | 黄视频三级 | 嗯啊舒服视频 | 日韩āv高清在线看片 | 午夜青青草| 中国三级片在线播放 | 亚洲夜夜操 | 变态另类 | 午夜在线看 | 日韩好片一区二 | 三级在线免费 | 午夜伦理片电影 | 日韩字幕在线 | 国产三级在线播放 | 岛国三级 | 国产三级影院 | 国产ts人妖视频网站 | 色屋视频 | 国产欧美日本 | 91视频是什么 | 欧美日韩在线观看一区 | 国产三级手机在线观看 | 自拍偷拍网址 | www.五月天婷婷 | 三级日本69一区二区 | 午夜婷婷网站 | 国产精成人品免费观看 | 成人激情文学 | 福利视频导航在线观看 | 日韩福利在线视频 | 日韩性爱在线视频 | 三级黄色在线观看 | 日本中文字幕α片 | 精品免费囯产一区 | 国产欧美一区二区在线 | 国产91小视频 | 国模大胆一区二区三区 | 国产亚洲精品 | 亚洲深夜福利 | 无码爆乳一区二区三区 | 精品日韩一区二区 | 日韩中文字幕无线码 | 国产午夜福利在线 | 玖玖爱www | 国产精品宾馆 | 美女精品视频 | 日韩一区免费观看 | 农村成人激情文学 | 精品一区二区三区人妻 | 成人无码涩 | 美女av毛片 | 日本韩国电影一区二区 | 成人高清在线观看免费 | 国产91专区 | 综合偷拍 | 精品国产第一页 | 91小仙女 | 深夜电影免费在线看 | 日韩一区二线视频 | 中文字幕毛片 | 日韩日韩无砖专区 | 毛茸茸的熟女 | 五月丁香在线观看 | 中字毛片 | 欧美另类z0z| 国产又白又嫩又爽又黄 | 国产精品免费大 | 制服丝袜在线播放 | 老湿影院av | 日韩精品肉片视 | 成人香蕉网 | 国产手机精品视频 | 双飞在线 | 激情熟妇| 国产久久| 性爱自拍第一页 | 日韩电影中文字幕亚洲 | www.内射| 在线国内自拍 | 日韩有码在线播放 | 97超碰人人干 | 黄色av观看| 国产精品成人爰爱在线 | 日韩国产第一页 | 成人免费伦理视频 | 日韩欧美中文一区 | 国产精品美女在线观看 | 日韩a优精 | 三级片在线看 | 日本中文字幕在线观看 | 一区二区三区午夜 | 欧美成人在线视频观看 | 国产又黄又猛 | 日韩国产综合在线 | 国产熟睡乱子伦 | 午夜黄色 | 岛国精品一区免费视频 | 成人高清在线观看免费 | 中文字幕成人动漫 | 久久在线综合 | 亚洲我射 | 欧美成年视频 | 国产97视 | 午夜福利视频导航 | 国产精品美脚玉 | 五月婷婷丁香综合 | 综合福利导航 | 日韩一区二区超清视频 | 欧美精品国产一区 | 91视频黄色污 | 午夜影视剧场 | 日韩理论片在线 | 日韩成人影院在线观看 | 国产91精品一区二 | 日韩伦理电影免费观看 | 日韩女同一区二区三区 | 一区二区视频在线观看 | 台湾午夜四级福利片 | 成人午夜视频二区三区 | 国产中文字幕在线 | 91无码在线秘入口 | 欧美人妖乱伦 | 中国三级片完整版 | 福利精品 | 日韩在线伦理 | 成人黃色A片三級免费 | 日韩无码高清无码 | 欧美在线视频不卡 | 国产91在线看 | 成人性做| 做爱在线观看网站 | 欧美性爱日韩性爱 | 国产人妖视频网站 | 无码三级网 | 亚洲精品AⅤ一区二 | 日本一区不卡 | 国产白丝喷水 | 老湿机网| 加勒比人妻 | 日韩按摩片 | 日韩免费成人网站 | 午夜无码在线观看视频 | julia在线视频 | 国产女技师足疗无删减 | 深夜福利视频一区 | 国产小视频在 | 国产不卡电影 | 日韩精品第一在 | 日韩精品网5| 强奸乱伦视频网址 | 日韩精品专区中文字幕 | 欧美另类影院 | 天天插夜夜干 | 欧美群伦AAAAA片 | 麻豆成人免费网站入口 | 国产淫秽视频在线观看 | 成人免费精品一二三区 | 国模吧在线视频 | 国产又黄又粗又长视频 | 蜜臀av.com| 久久精品只有这里有 | 日韩精品亚洲电影天堂 | 91在线观看 | 97免费| 一期二期三期视频 | 日韩欧美自 | 国内精品福利视频 | 国产三级国产三级国产 | 国产精品三级在线播放 | 国产999精品视频 | 中文字幕精品日本A∨ | 国产123| 丁香五月网站 | 国产亚洲无码在线观看 | 日韩欧美视频第二区 | 国产精选在线观看 | 国产第一页影院 | 日韩亚洲人成影院 | 精品AV| 狠狠操夜夜操 | 三级欧美日本国产 | 激情图片小说网站 | 国内精品免费 | 在线观看无码不卡视频 | 日韩精品在线观看一区 | 91视频免费看| 性在线观看 | 欧美日韩精品一区二区 | 无码成人A片在线观看 | 国产传媒精品91一区 | 偷拍自拍在线视频看看 | 日韩一区二区三区四区 | 欧美在线成人视频 | 日韩中文字幕在线视频 | 日韩看片 | 在线观看加勒比网站 | 日韩欧美视频专区 | 亚洲成人内射 | 日韩午夜在线免费观看 | 国产孕妇一区二区三区 | 日屄视频在线观看 | 天堂资源在线观看 | 精品天堂网 | 日韩新片快播网 | 一区二区视屏 | 国产精品无码无码 | 三级精品在线免费观看 | 日韩二区三区无 | 成人免费一区二区三区 | 日韩精品丝袜第一页 | 国产精品呻吟 | 91视频综合 | 日韩国产欧美区一区二 | 91桃色最新版 | 国产资源站 | 国产传媒在 | 午夜片在线观看 | 午夜亚洲无码 | 三级在线观看大全免费 | 91神马| 午夜拍国产精品 | 69成人天堂无码免费 | 日韩视频欧美视频 | 国产美女精品一区 | 网站91免费入口 | 岛国AV免费看 | 日本激情小说视频 | 日韩论理论片在线观看 | 国产αv无| 成人免费理论片 | 国产又黄又粗又爽 | 五月天婷婷影院 | 国产熟女av | 玖玖爱中文字幕 | 精品国产第一页 | 国产三级在线观看专区 | 日本不卡视频 | 久久这里只 | 成人深夜羞 | 国产浓毛大泬熟妇视频 | 国产69| 久草视频资源 | 日韩一级欧美一级视频 | 91视频a| 日韩欧中文字幕精品 | 成人精品动漫小舞 | 天天干夜夜肏 | 国产情侣在线视频 | 国产黄色大全 | 成人黄色免费视频 | 日韩中文字暮精品 | 午夜福利成人在线观看 | 午夜神马伦理 | 天堂网毛片 | 97国产v欧美 | 日韩不卡在线视频 | 日韩无码第1页 | 国产麻豆精东果冻传媒 | 日韩成人A视频 | 国产伦理 | 国产夫妻片| 日韩国产最新在线观看 | 国产亚洲高清无码 | 国产在线精选 | 东京热大乱 | 中文字幕一级毛片 | 成人免费影院 | 91色站| 国产激情精品一 | 日韩欧美亚洲国产精品 | 日韩成片 | 91在线欧美| 中文字幕人 | 亚洲日韩国产成人另类 | 国产精品秘果 | 精东传媒在线观看视频 | 日韩a片| 综合久久888| 国产精品熟女一 | 午夜精品成人福利 | 成人a大片在线观看 | 日韩精品在线播 | 国产妓女AV | 日韩一区二区三区极品 | 日韩高清免费观看 | 日韩操逼视频 | 性久久久久久 | 日韩午夜福 | 日韩中文在线观看 | 午夜寂寞视频 | 91视屏 | 日韩成人精品免费观看 | 日韩成人精品在线 | 日韩看片网站 | 午夜免费体验区 | 午夜成人精品视频 | 国产无码片观看 | 日韩无码影视 | 午夜成人福利免费 | 日韩乱码一区二区 | 日韩精品二区三区 | 护士肉欲39系列 | 91伊人 | 亚洲一卡二卡在线观看 | www日韩欧美 | 92福利影院| 国产污网 | 日韩欧美国产手机在线 | 校园激情综合网 | 午夜在线福利社 | 人人看97 | 国产极品一区二区 | 日本丰满少妇做爰爽爽 | 国产69精品xxxx | 激情小说在线视频观看 | 91免费观看网站入口 | 91香蕉影院 | 毛片中文| 在线视频一 | 国产v视频| 日韩高清国产 | 一区二区三区乱伦 | 老湿影院免费观看 | 日韩精品第一 | 日韩中文字码无砖 | 老湿机免费看 | 玖玖综合网 | 日韩欧美国产精品免费 | 久久sao| 五月丁香婷中文 | 色婷婷一区二区三区 | 国产传媒果冻天美传媒 | 草莓午夜 | 成人午夜国产福利 | 97爱蜜桃网| 国产成人精品AV片 | 超碰人人操国产 | 日韩无码高清免费视频 | 亚洲卡一卡二在线观看 | 日韩精品免费一区二 | 激情文学第一页 | 日韩电影中 | 三级中文字幕不卡 | 日韩精品电影亚洲一区 | 国产乱国产乱 | 国产无码不卡视频 | 国产露脸自拍 | 上床啪啪啪在线网站 | 日韩一区二区在线电影 | 日韩伦理一区二区三区 | 日韩中文字幕乱伦 | 日韩亚洲中文高清 | 无码国模 | 激情文学综合 | 国产美女操逼 | 另类女同 | 天堂天堂网 | 成人国产三级在线 | 色网在线sewang | 又黄又爽的视频 | 三级国产一区 | 日韩有码中文 | 国产初高中生视 | 国产精品性欲久久 | 免费三级在线 | 日韩成年视频 | 日韩欧美亚洲国产精品 | 日韩丝袜中文字幕 | 日韩黄在线 | 妓女一区 | 韩日在线视频 | 日韩高清国产 | www国产在线 | A黄视频 | 成人妇女免费播放 | 成人午夜激情视频 | 日韩偶在线 | av三级网 | 日韩在线亚字幕精品 | 日韩电影一区 | 欧美福利一区二区 | 日韩综合国产中文字幕 | 国产小视频91 | 岛国AV免费在线 | www.heyzo| 日韩中文在线视频 | 午夜视频观看 | 色屋视频| 欧美精品一区二区三 | 97伦理剧| 日韩最热国产在线 | 亚洲日本三级 | 加勒比在线 | 91视频影院 | 成人香蕉网 | 91网视频| 麻豆免费网 | 亚洲熟妇色 | 天天艹夜夜干 | 丁香五月婷婷五月 | 久久性欲视频 | 日韩日韩无砖专区 | 日韩在线国产播放 | 日韩理论在线播放 | 欧美孕妇三级网 | 不卡在线国产 | 日韩国产在线一区二区 | 日韩簧片在线观看 | 加勒比视频在线观看 | 日韩精品 在线视频 | 国产mba| 国产人妖专区 | 精品AV一区 | 骚妇久久| 亚洲另类激情小说网 | 91视频污导航| 成人图片视频小说 | 日韩国产综合 | 国产浓毛大泬熟妇视频 | 日韩中字 | 日韩精品中文不卡视频 | 国产毛卡片卡2 | 成人影院免 | 三级视频在线观看网站 | 午夜激情视频网站 | 国产精品秘麻豆免费版 | 日韩欧美亚洲中 | 国产成人精品AV | 国产初高中小泬视频 | 国产精品九九九 | 国产在线操 | 黄色av电影在线观看 | 日韩亚洲无| 午夜精品福利在线 | 欧美另类xxx | 午夜成人精品福利 | 日韩新片在线观看网 | 日韩欧美啪啪操 | 久久精品综合 | 蜜桃色网| 日韩美女一区二区三区 | 国产在线观看a | 日韩经典| 日韩中文字幕电影网站 | 91一区视频 | 国产尤物视频在线观看 | 三级片国产网站 | 日韩伦理片在线 | 欧美乱妇视频 | 成人无码A级 | 欧美日韩性爱视频 | 国产在线成人 | 久久精品这里只有精品 | 日韩成人AV一区二区 | 午夜福利导航在线 | 日韩国产在线一区二区 | 成人激情图片网 | 三级艳女伦交在线观 | 丁香五月婷婷综合在线 | 91天堂久久 | 成人福利视| 国产不卡视频 | 国产三级在线免费观看 | 国产麻豆精品免费 | 国产寡妇性视频 | 国产盗摄-老牛影视 | 午夜福利体验区 | 三级欧美 | 午夜福利片在线观看 | 国产丝袜人妖在线 | 国产大全今日最新 | 美女AV片| 日韩欧美一级片AA | 午夜成人免费看 | 国产91成人永久观看 | 97超碰人人操人人干 | 欧美精品欧美精品系列 | 三级精品在线制服丝袜 | 午夜在线免费看 | 亚洲免费国产精品 | 天天干天天日 | 亚洲中文字幕2025 | 国产乱轮网址 | 久久停停| 日韩精品第二页 | 国产白白视 | 日韩欧美大片精品黄 | 日韩视频第二页 | 日本久久一道 | 夜夜嗨国产 | 97看片| 日韩中文字幕精品一区 | 97操操| 国产福利高清在 | 日韩欧洲在线高清一区 | 午夜成人精品在线 | 四虎久久| www.加勒比| 国产精品在线观看 | 伦理电影一区二区 | 久久机这里只有精品 | 高潮喷水无码 | 久久综合东京热 | 亚洲国产精品AV | 五月激情天 | 自拍偷拍第八页 | 蜜桃色网 | 午夜精品在线观看 | 日韩欧美亚洲精品在线 | 城中村嫖妓视频 | 成人午夜视频在线观看 | 国产三级无码在线 | 日韩本国成人精品 | 欧美性爱第一 | 午夜免费成人 | 午夜福利影视 | 国产a精彩 | 亚洲a视频| 天天插天天 | 三級AV黃色毛片 | 91人人草| 午夜成人AⅤ在线观看 | 日韩成人一区 | 成人激情小说图片 | 毛茸茸老熟女 | 国产激情二区 | 日韩伦理片网站 | av日韩一区| 日韩无码高清一区 | 国产a一级无| 午夜激情成人 | 国产原创精品 | 国产人妖第二 | 国产情侣露脸 | 天天干天天操 | 国产兄妹在乱搞 | 欧美亚韩一区二区三区 | 日韩午夜顶级在线观看 | 成人三级电影在线播放 | 国产免费美女视频 | 高清A级毛片 | 国模二区| 日韩成人免费视频 | 另类天亚 | 日韩欧美在现 | 精品在线观看视频 | 果冻传媒出品在线观看 | 欧美精品欧美精品系列 | 日韩欧美国产视频 | 中国三级片国产网站 | 国产在线无码一区 | 日韩美女视频 | 国产尤物在线视频 | 91视频专区 | 日韩欧美影院 | 91影院在线观看 | 三级片网站国产 | 国产三级免费网站 | 国产无码电影网站 | 精品动漫一区二区 | 国产专区第一页 | 日日夜夜天天综合网 | 成人国产欧美在线 | 日韩欧美永久中文 | 福利姬网址| 午夜男女视频0 | 日韩色图在线观看 | 福利姬视频网站 | 拍偷第一页 | 日韩伦理一区二区三区 | 狠狠操天天操 | 东京热综合网 | 超碰97在线资源站 | 国产av天堂 | 国产专区91 | 动漫一区二区三区 | 福利电影一区 | 成人伦理 | 超碰人人干人人 | 成人A片在线观看 | 午夜AV在线 | 午夜成年人影院 | 国产99视频精品 | 日韩国产精 | 午夜视频观看 | 日韩先锋影音中文 | 婷丁五月 | 都市激情第一页 | 日韩一级欧 | 午夜在线网址 | 欧美19p| 国产精品尤物视频 | 日韩午夜激情电影 | 国产又粗又大又爽 | 国产熟女软件 | 国产在线精品国自产拍 | 成人午夜视频网址 | 国产精品自拍露脸 | 国产操女人 | xxx.日本在线观看 | 日韩精品三区 | 亚洲五月天综合网 | 成人在线观看三级片 | 加勒比精品在线 | 国产在线9| 成人午夜婬片免费观看 | 麻豆精品A∨在线观看 | 国产精品国产三级国产 | 日韩在线视频点击观看 | 成年人午夜免费视频 | 狠狠操夜夜操 | 日韩情网 | 拍国产真实乱人偷精品 | 日韩激情精品 | 成人A级免费毛片 | 色老大综合 | 国产做受高潮在线观看 | 国产91福利在线精 | 日韩亚洲第一中文字幕 | 成人欧美视频 | 偷偷撸在线 | 丝袜美臀在线观看 | 日韩成人激情影院 | 日韩另类 | 国产又大又粗又硬 | www欧美| 91视频国 | 日韩精品国产另类专区 | 国产性欧美综合 | 深夜福利在线视频 | 亚洲乱欲| 在线国产不卡 | 在线偷自拍 | 欧美孕妇疯狂一区二区 | 成人片a免看 | 国产欧美日韩 | 午夜影院老线观 | 国产开操网 | 国产乱对白精彩 | 精品一区在线播放 | 91在线亚洲 | 日本高清色www | 自拍偷拍免费观看 | 最新日韩无码 | 午夜在线观看 | 欧美日韩精品一区二 | 日韩在线免费观看视频 | 国产无码一区在线 | 日韩a在线播放 | 国产青青草草 | 狼友视频久久 | 五月婷婷丁香综合 | 日韩电影免费 | 五月六月丁香 | 久久精品骚妇内射 | 日韩区一区二区三区四 | 欧韩日喷水 | www.东京热 | 夜福利在线观看 | 亚洲v无码蜜桃 | 日韩成年人 | 国产欧美久 | 东京热大乱w姦在线 | 日韩不卡一区 | 成人免费看三级片 | 国产宅男网 | 双飞在线| 天堂网久久 | 亚洲午夜电影 | 精东A片| 国产在线|中文 | 国产第一页影院 | 日本人妻中文 | 国产白丝jk被疯狂输 | 国产精品成人品 | 三级片在线播放视频 | 欧美偷拍一区二区三区 | 色屋网站 | 国产视频三 | 国产精品国产精品 | 国产精品麻豆 | 一区二区三区伦理片 | 成人片观看? | 国产在线视频 | 国产午夜在线观看 | 三级片视频网址 | 国产成人在线不卡 | 国产成人a毛片 | 成人午夜福利专区 | 强奸乱伦视频网址 | 性爱网站在线观看 | 日本不卡一二三区 | 日韩精品在线二区三区 | 成人免费精品一二三区 | 欧美福利一区二区 | 日韩精品视频欧美国产 | 国产尤物精品 | 日韩精品一线二线 | 在线观看国产三级 | 午夜影视福利 | 欧美不卡视频 | 韩国床震无遮掩 | 成人国产免 | 日韩在线观看视频网站 | 日韩伦理网站 | 91啦丨露脸丨熟女 | 国产真人亲妺妺A片 | 三级视频频 | 超碰www | 深夜福利视频一区 | 日韩a级电影 | 中文字幕免费毛片 | 欧美另类电影 | 成人夜间福利视频 | 国产亚洲高清无码 | 在线观看污网站 | 中文字幕在线观看不卡 | 免费A片试看网 | 成人欧美视频在线观看 | 国产a级毛片 | 日韩亚洲精品在线观看 | 国产亚洲天堂 | 成年人午夜福利 | 国产乱人| 日韩欧美视频专区 | 成人午夜a级毛 | 国产区第一页 | 人妖操伪娘 | 在线观看国产无码 | 亚洲图片激情文学 | 国产妻精品一区 | 日韩欧美成综合 | 国产精品蜜臀 | 日韩美女视频在线播放 | 日韩动漫一区二区 | 日韩亚洲视频一 | 狠狠干夜夜操 | 国产精品三级 | 欧美午夜精品 | 自拍偷拍在线观看视频 | 91男同 | 日韩新片在线观看网 | 亚洲国产精品在线 | 日本激情网站 | 精东影业秘国产传媒 | 日韩免费成人网站 | 国产一曲二曲三曲 | 三级免费黄 | 日韩乱码在线观看 | 免费成人结网站 | 玖玖爱网站免费 | 午夜免费电影网 | 国产中文第一页 | 国产欧美黄片 | 午夜男女爽爽爽 | 国产无码www | 日韩亚洲欧美中文三级 | 国产在线无码一区 | 欧美视频一区在线观看 | 加勒比综合在线19p 加勒比综合在线 | 日韩视频男人的天堂 | 日本成人网站在线观看 | 做爱网站在线播放 | 国产伦理电影 | 婷婷色AV| 国产高潮视频在线观看 | 国产乱人视频 | 国产拍白 | 自拍偷拍第6页 | 国产三级在线观看网址 | 日韩精品肉片视 | 天天操天天爽天天干 | 午夜免费成人电影 | 日韩欧美国产高清 | 狠狠操夜夜 | 日韩不卡久久 | 日韩不卡在线观 | 激情图片激情小说 | 成人午夜在线播放 | 国产三级片在线观 | 国产m豆传媒 | 精品国自产拍在线观看 | 精品午夜成人 | 偷拍自拍视频在线观看 | 国产69| 日韩电影一区二区三区 | www.激情| 免费福利小视频 | 日韩国产一区香蕉区 | 国产精品92 | 国产成a人片在 | 三级网站大全 | 日屄屄视频 | 深爱五月激情五月 | 不卡一区| 老湿机视频在线 | 日韩免费看片 | 日韩优在线 | 性久久AV | 日韩在线中文字幕视频 | 日韩视频一区二区 | 日韩欧美国产第二区 | 福利导航在线观看 | 91香蕉污 | 人妻系列无码 | 国产91影视 | 日韩午夜一区 | 福利影院在线 | 成人影院一 | 日韩欧美一中文在 | 国产欧美日韩一区 | 成人午夜免费视频在线 | 国产尤物网站 | 日韩欧美高清国产视频 | 日韩手机在线 | 深夜成人在线 | 三级A片黄色| 高清无码专区 | 成人精品日韩亚洲专区 | 成人午夜免费观看 | 日韩精品欧美大片 | 欧美丝袜性爱 | 日韩亚洲欧美另类一区 | 91视频在线看 | 中文字幕精品久久22 | 国产a片 | 亚洲综合激情 | 久艹福利| 午夜性福利 | 成人午夜免费视频在线 | 成人福利影视在线观看 | 偷拍综合网 | 福利在线观看入口 | 三级视频在线观看播放 | 屁屁福利影院 | 欧美另类视频区 | 97超操| 伦理二区 | 午夜伦理在线一 | 国产日韩欧美一区二区 | 东京热九九 | 国产午夜小视频 | 国产午夜视频在线观看 | 日韩一区二区三区av | 欧美另类综合网 | 九七精品| 午夜视频网站在线观看 | 日韩一区二区中文字幕 | 国产传媒 | 成人午夜在线免费观看 | 91视频你懂得 | 国产91丝袜高跟系列 | 91爽爽| 玖玖爱精品| 亚洲国产精品色色 | 三级片孕妇 | 久久一线| 午夜爽爽爽爽 | 日韩成人AV一区二区 | 日韩精品第1页 | 日韩高清无码专区 | 国产嫩草 | 欧美日韩精品一区二 | 国产美女主播在线播放 | 国产va一| 日韩日韩日韩日韩 | 国产精品第3页 | 色欧美视频| 国产精品性欲久久 | 天堂网wwww| 国产女技师足疗无删减 | 午夜无码视频在线 | 天堂资源在线观看 | 成人性做| 日韩福利短片在线观看 | 玖玖综合色 | 国产大陆亚洲精品 | 午夜久操 | 人妖精品 | 97插逼| 国产99精品| 国产尤物视频 | 成人软件视频 | 久草福利资源站 | 午夜激情成人 | 91福利视频网 | 国产人妖精品视频 | 日韩精品xx| 成人午夜亚洲精品无 | 福利直播导航在线观看 | 日韩精品在线观看视频 | 中国一区二区在线观看 | 麻豆操逼网站 | 玖玖精品| 亚洲卡一卡二在线观看 | 自拍揄拍第一区 | 久久不卡影院 | 狼友视频精品免费播放 | 国产成人无码av亚洲 | 久操精品在线观看 | 午夜精品在线观看 | 国产成人精品在线 | 午夜片在线观看 | 日韩伦欲片| 福利性导航 | 国产成人精品自拍 | 欧美精品二区三区 | 成人国产精品免费视频 | 日韩精品第十页 | 三级在线国产 | 日韩在线色 | 日韩国产综合 | 欧美成人精品AAA | 国产在线资源站 | 欧美另类高清 | 日韩欧美国产免费看片 | 成人三级影片 | 日韩在线观看视频免费 | 成人亚洲欧美一区 | 天堂AV黄色 | 国产高潮白浆喷 | 日韩精品999 | 国产a在亚洲线播放 | 日韩午夜免费电影 | 偷拍自拍区 | 日韩国产另类激情图区 | 日韩国产精品一区二区 | 97午夜伦理片 | 日韩高清无码一区 | 成人精品一区二区三区 | 成人妇女免费播放 | 五月婷婷天 | 国产刺激视频在线观看 | 欧美一区二区三区不卡 | 91原创| 欧美综合国产 | 深夜福利在线视频 | 日韩国产高清 | 日韩在线观看网址 | 国产大秀视频 | 精品日韩一区二区三区 | 天堂AV黄色 | 国内三级在线观看 | 日韩高清在线中文字幕 | 中文字幕日本人妖 | 狠狠干狼人综合网 | 日韩色图视频 | www.超碰97| 国产精品免费精品一区 | 在线免费看三级片 | 精品处破女学生 | 国产精品极品 | 这里有精| 国产夫妻在线视频 | 韩日精品在线观看 | 东京无码| 激情国产在线 | 国产性爱AV| 日韩精品极品视频在 | 国产成年人在线观看 | 三级中文字幕在线播放 | 日韩av一卡二卡 | 欧美成人色图 | 国产古装三级在线播放 | 欧美成人视屏在线 | 国产不卡在线播放 | 日韩欧美一级影片 | 成人国产视频网站 | 爆乳二区| 日韩AV女优在线观看 | 国产三级精品在线观看 | 国产人妖一区 | 精品免费囯产一区二区 | 不卡在线无码 | 国产性欧美综合 | 成人午夜免费在线视频 | 国产a级免费视频 | 成人影院一 | 成人免费漫画 | 三级片毛片网站 | 国产成熟人 | 成人午夜视 | 成人毛片免费 | 成人免费淫片视频观 | 日韩看片 | 日韩在线视频免费播放 | 国产午夜在线视频 | 成人午夜视频在线视频 | A黄视频| 日韩国产中文欧美 | 国产真实乱子伦视频 | 欧美性爱com| 成人免费一级A片 | 日韩丝袜美腿在线视频 | 日韩视频第| 国产传媒86精品免 | 亚洲国产成人免费 | 狼友福利免费在线观看 | 激情综合小说网 | www.bbbbb| 日韩精品无 | 午夜视频网站在线观看 |