999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MVC的食品安全監(jiān)控系統(tǒng)的研究與設(shè)計(jì)

2008-12-31 00:00:00陳良臣孫功星閆曉飛

摘 要:研究了MVC的設(shè)計(jì)思想、設(shè)計(jì)方法、擴(kuò)展以及Struts和Spring等主要框架,結(jié)合食品衛(wèi)生安全實(shí)際業(yè)務(wù)流程以及Struts框架和Spring框架的整合技術(shù),最后設(shè)計(jì)了一種基于MVC設(shè)計(jì)模式的食品安全監(jiān)控系統(tǒng),保證了系統(tǒng)的高效,結(jié)構(gòu)清晰,可擴(kuò)展性和可維護(hù)性。

關(guān)鍵詞:模型—視圖—挖制器模式; 食品安全監(jiān)控系統(tǒng); Struts框架; Spring框架

中圖分類號(hào):TP391 文獻(xiàn)標(biāo)志碼:A

文章編號(hào):1001-3695(2008)07-2091-03

Research and design of food secure monitor system based on MVC

CHEN Liang-chen1, SUN Gong-xing1, ZHAO Rui2,YAN Xiao-fei1,WU Huan1

(1.Computing Center, Institute of High Energy Physics, Chinese Academy of Sciences, Beijing 100049, China; 2.School of Computer Science Technology, North China Electric Power University, Beijing 102206, China)

Abstract:This paper studied the MVC design thinking and methods, expansion, Struts framework and the Spring framework, with the actual business processed of food secure minitor system andthe integration technology of Spring framework and Struts framework, and then presented a design of the food secure monitor system based on the MVC design pattern, and ensuredthe system’s efficiency, a clear structure, extensibility and maintainability.

Key words:MVC(model/ view/ controller) pattern; food secure monitor system; Struts framework; Spring framework



食品是人類賴以生存的物質(zhì)基礎(chǔ),食品安全關(guān)系到人類健康、社會(huì)穩(wěn)定和經(jīng)濟(jì)發(fā)展。食品安全是一個(gè)世界性的問(wèn)題,其重要性不言而喻,而我國(guó)的食品安全的信息化現(xiàn)代化程度卻普遍落后,至今有關(guān)部門還處于手工操作階段,即使具有初步信息化手段的部門大多也采用傳統(tǒng)的C/S層次結(jié)構(gòu)。食品安全由于其行業(yè)的特殊性,除了C/S模式固有的弊端之外,還存在如服務(wù)器數(shù)目過(guò)多、維護(hù)困難、實(shí)時(shí)性不高等問(wèn)題。隨著加入WTO后,企業(yè)之間競(jìng)爭(zhēng)越來(lái)越激烈,食品安全的信息化改造也迫在眉睫。基于上述情況,北京市工商局立項(xiàng)為首都食品衛(wèi)生安全監(jiān)控信息化平臺(tái)的課題開發(fā),通過(guò)先進(jìn)的信息管理平臺(tái)構(gòu)建,提升北京市食品安全的管理層次和信息化水平。

為了使食品安全監(jiān)控系統(tǒng)結(jié)構(gòu)清晰,具有極其良好的可擴(kuò)展性和可維護(hù)性,系統(tǒng)采用基于MVC設(shè)計(jì)模式。MVC模式是一個(gè)復(fù)雜的架構(gòu)模式,其實(shí)現(xiàn)也顯得非常復(fù)雜,但是,多種設(shè)計(jì)模式結(jié)合在一起,使MVC模式的實(shí)現(xiàn)變得相對(duì)簡(jiǎn)單易行,所以它也是國(guó)外用得很多的一種設(shè)計(jì)模式。MVC模式是一個(gè)很好創(chuàng)建軟件的途徑,它所提倡的一些原則,像內(nèi)容和顯示互相分離可能比較好理解,最重要的是應(yīng)該有多個(gè)視圖對(duì)應(yīng)一個(gè)模型的能力。

1 MVC設(shè)計(jì)模式

1.1 MVC設(shè)計(jì)思想

MVC模式,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照model、view、controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分為模型層、視圖層、控制層三層。

模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)顯示視圖。如果用戶通過(guò)某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其他依賴于這些數(shù)據(jù)的視圖都應(yīng)反映這些變化。因此,無(wú)論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一種模型的變化—傳播機(jī)制。模型、視圖、控制器三者之間的關(guān)系和各自的主要功能如圖1所示。

1.2 MVC 設(shè)計(jì)方法

MVC模式將目標(biāo)系統(tǒng)分為模型、視圖和控制器,并要定義描述三個(gè)部分之間通信的受限連接集合。相應(yīng)地,MVC模式的設(shè)計(jì)包括四個(gè)部分:

a)MVC通信設(shè)計(jì)。在MVC模式中,模型、視圖和控制器這三個(gè)部分之間的通信是通過(guò)定義一個(gè)受限連接的集合來(lái)描述的。如圖l所示,可以采用帶箭頭連線對(duì)在各個(gè)部分之間進(jìn)行的信息和控制傳遞作出形象的表示,并具體描述每個(gè)帶箭頭連線的含義。在實(shí)現(xiàn)上,模型、視圖和控制器這三個(gè)部分之間的通信是通過(guò)相應(yīng)的模型對(duì)象、視圖對(duì)象和控制器對(duì)象之間的消息通信完成的。原則上應(yīng)該盡量減少三個(gè)部分之間的結(jié)合,增強(qiáng)隔離性,使模型部分可以不必了解數(shù)據(jù)表示和與用戶交互的細(xì)節(jié)就可以完成數(shù)據(jù)處理,使視圖不必了解模型進(jìn)行數(shù)據(jù)處理的內(nèi)部實(shí)現(xiàn)就可以完成數(shù)據(jù)表示的功能。

這個(gè)受限連接的集合可以表示為{((Pl,P2),D,(M,…)),…t。其中:(P1,P2)表示從P1部分到P2部分的通信,P1,P2代表模型、視圖或控制器;D是對(duì)從P1~P2方向的通信的詳細(xì)描述;(M,…)表示一個(gè)有限方法集合,M是實(shí)現(xiàn)數(shù)據(jù)或控制傳遞的方法;((P1,P2),D,(M,…))三元組完整地描述了從一個(gè)部分到另一部分之間的通信。

b)模型的設(shè)計(jì)。模型是進(jìn)行數(shù)據(jù)處理的地方,表達(dá)了實(shí)際應(yīng)用中的業(yè)務(wù)處理邏輯。模型由許多模型對(duì)象及這些對(duì)象之間的各種各樣的關(guān)系構(gòu)成。模型對(duì)象是根據(jù)問(wèn)題域中的對(duì)象構(gòu)建的,帶有一些有意義的屬性和方法,它們之間有這樣或那樣的關(guān)系,如一般特殊關(guān)系、整體部分關(guān)系、實(shí)例關(guān)聯(lián)、消息關(guān)聯(lián)等,它們互相交互完成數(shù)據(jù)處理功能。

c)視圖的設(shè)計(jì)。視圖是表達(dá)數(shù)據(jù)顯示邏輯的地方,通常完成或輔助完成GUI功能。視圖對(duì)象通常用于保存一些從模型對(duì)象中得到的信息,但視圖對(duì)象并不完全與模型對(duì)象相同。模型中有的對(duì)象在視圖中可能沒(méi)有,與模型對(duì)象對(duì)應(yīng)的視圖對(duì)象一般也具有與之不同的屬性和方法;反之亦然。主要有兩種方式實(shí)現(xiàn)視圖對(duì)象:

(a)視圖對(duì)象是模型對(duì)象的一個(gè)代表,持有對(duì)相應(yīng)模型對(duì)象的一個(gè)引用,相應(yīng)的,在視圖對(duì)象的方法中通過(guò)該引用將調(diào)用均傳遞到模型對(duì)象中去。

(b) 視圖對(duì)象不必實(shí)現(xiàn)與模型對(duì)象相同的接口方法,它擁有的是一些屬性,反映了滿足顯示需要的數(shù)據(jù),并可以從模型對(duì)象中獲取相應(yīng)的值。

d)控制器的設(shè)計(jì)。控制器在用戶與視圖之間交互,完成接收用戶輸入并控制顯示流程轉(zhuǎn)換的功能,它充當(dāng)了模型與視圖之間的去耦層。控制器中的對(duì)象用于控制對(duì)用戶輸入的響應(yīng)方式,是根據(jù)對(duì)響應(yīng)方式和響應(yīng)流程的定義而獲得的對(duì)象。根據(jù)不同的MVC通信設(shè)計(jì),控制器對(duì)象可以與模型對(duì)象、視圖對(duì)象進(jìn)行不同形式的通信。針對(duì)不同的情況,控制器對(duì)象通常有兩種實(shí)現(xiàn)方法:

(a)采用的設(shè)計(jì)開發(fā)環(huán)境提供了對(duì)控制器的支持,對(duì)控制器對(duì)象的實(shí)現(xiàn)形式以及它與模型對(duì)象和視圖對(duì)象的交互方法提供了專門的支持。

(b)控制器作為模型與視圖之間的一個(gè)去耦層實(shí)現(xiàn),表現(xiàn)為一些普通對(duì)象,但完成去耦功能。

1.3 MVC的擴(kuò)展

通過(guò)在ASP.NET中的MVC模式編寫,具有極其良好的可擴(kuò)展性。它可以輕松實(shí)現(xiàn)以下功能:實(shí)現(xiàn)一個(gè)模型的多個(gè)視圖;采用多個(gè)控制器;當(dāng)模型改變時(shí),所有視圖將自動(dòng)刷新;所有控制器將相互獨(dú)立工作。

這就是MVC模式的好處,只需在以前的程序上稍作修改或增加新的類,即可輕松增加許多程序功能。以前開發(fā)的許多類可以重用,而程序結(jié)構(gòu)根本無(wú)須改變,各類之間相互獨(dú)立,便于團(tuán)體開發(fā),提高開發(fā)效率。下面討論如何實(shí)現(xiàn)一個(gè)模型、兩個(gè)視圖和一個(gè)控制器的程序。其中模型類及視圖類根本無(wú)須改變,與前面的完全一樣,這就是面向?qū)ο缶幊痰暮锰帯?duì)于控制器中的類,只需要增加另一個(gè)視圖,并與模型發(fā)生關(guān)聯(lián)即可。該模式下視圖、控制器、模型三者之間的示意圖如圖2所示。

2 MVC主要框架

MVC是應(yīng)用很多的一種設(shè)計(jì)模式,多種設(shè)計(jì)模式結(jié)合在一起,使MVC模式的實(shí)現(xiàn)變得相對(duì)簡(jiǎn)單易行。包括多種MVC框架:NStruts、Maverick.NET、MaverickLite、Ingenious MVC、Websharp、Struts、Webwork、Spring等。其中Struts和Spring是最具有代表性的兩種框架。

2.1 Struts框架

Struts是一個(gè)基于J2EE平臺(tái)的MVC框架,主要是采用Servlet和JSP技術(shù)來(lái)實(shí)現(xiàn)的。目標(biāo)是利用Java技術(shù)開發(fā)基于MVC模式的Web應(yīng)用提供一個(gè)標(biāo)準(zhǔn)模式,能充分滿足應(yīng)用開發(fā)的需求,簡(jiǎn)單移用,敏捷迅速。

Struts應(yīng)用框架繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),作了相應(yīng)的變化和擴(kuò)展。Struts如何實(shí)現(xiàn)MVC的設(shè)計(jì)模式,將三個(gè)方面結(jié)合在一起。其體系結(jié)構(gòu)如圖3所示。

在Struts框架中包含很多組件,如Action Servlet、Action、RequestProcessor、Action Mapping、Action Forward、ActionForm。這些組件是Struts應(yīng)用框架實(shí)現(xiàn)的關(guān)鍵。表1列出了Struts的核心類。

2.2 Spring框架

Spring Framework是由Rod Johnson創(chuàng)立的一個(gè)開放源碼的應(yīng)用框架。它是輕量級(jí)的J2EE應(yīng)用程序框架,旨在簡(jiǎn)化J2EE的開發(fā),降低J2EE項(xiàng)目實(shí)施的難度。Spring Framework的貢獻(xiàn)包括兩個(gè)部分,首先是為J2EE應(yīng)用提供了一個(gè)優(yōu)雅的基礎(chǔ)結(jié)構(gòu);另外它還提供了許多旨在幫助開發(fā)人員更好地使用J2EE相關(guān)技術(shù)的工具性支持。從結(jié)構(gòu)上看,它分為七個(gè)模塊,其體系結(jié)構(gòu)如圖4所示。

3 基于MVC的監(jiān)控系統(tǒng)設(shè)計(jì)

通過(guò)信息化的手段,將日常監(jiān)管工作中形成的信息統(tǒng)一歸集到系統(tǒng)中,方便查詢和管理。通過(guò)日常監(jiān)管、監(jiān)控點(diǎn)信息反饋和視頻監(jiān)控等方式,采集食品安全信息,不僅可以掌握食品安全質(zhì)量的總體形勢(shì),而且可以發(fā)現(xiàn)潛在的食品安全風(fēng)險(xiǎn)因素,有針對(duì)性地開展預(yù)防性監(jiān)管。

3.1 監(jiān)控點(diǎn)的選取流程

監(jiān)控點(diǎn)是對(duì)全市食品安全狀況實(shí)行全面管理和監(jiān)控的重要措施,通過(guò)監(jiān)控點(diǎn)的合理選取要能夠?qū)θ械氖称愤M(jìn)行有效監(jiān)控,能夠基本反映全市食品安全狀況,因此在監(jiān)控點(diǎn)的設(shè)立方面需要體現(xiàn)出其代表性,即能夠全面反映全市食品安全狀況。

監(jiān)控點(diǎn)的選取功能設(shè)計(jì)主要可分為三個(gè)方面:a)用戶選擇監(jiān)控點(diǎn)選取功能,系統(tǒng)查詢臨時(shí)監(jiān)控點(diǎn)表中是否有記錄。若有,則轉(zhuǎn)是否增加待選監(jiān)控點(diǎn)。b)用戶輸入監(jiān)控點(diǎn)總數(shù)(C)。系統(tǒng)首先進(jìn)行統(tǒng)計(jì):候選監(jiān)控點(diǎn)總數(shù)(A)、每個(gè)地域候選監(jiān)控點(diǎn)總數(shù)(B)。系統(tǒng)計(jì)算出每個(gè)地域的監(jiān)控點(diǎn)總數(shù)=C×(B/A)。(按照公式計(jì)算)對(duì)每個(gè)地域根據(jù)業(yè)態(tài)隨機(jī)選取監(jiān)控點(diǎn),每種業(yè)態(tài)平均選取,并計(jì)算出每種業(yè)態(tài)占所有業(yè)態(tài)和所有級(jí)別的百分比,并保存在設(shè)置表中。其中對(duì)于具有分級(jí)信息的業(yè)態(tài),才進(jìn)行級(jí)別的平均選取,否則只以區(qū)域和業(yè)態(tài)為監(jiān)控點(diǎn)選取條件。c)系統(tǒng)根據(jù)業(yè)態(tài)和級(jí)別的關(guān)系提供分級(jí)信息是否作為選取條件的選項(xiàng)。系統(tǒng)實(shí)現(xiàn)監(jiān)控點(diǎn)選取程序流程如圖5所示。

3.2 Struts與Spring的整合

在整個(gè)軟件的設(shè)計(jì)中,主要以MVC的設(shè)計(jì)思想為主線,整個(gè)框架的工作流程以Struts框架為基礎(chǔ),表示層主要由Struts框架完成,提供完善的標(biāo)記庫(kù),管理用戶的請(qǐng)求并作出相應(yīng)的響應(yīng),提供一個(gè)控制器,調(diào)用相關(guān)的業(yè)務(wù)邏輯。而業(yè)務(wù)邏輯層和數(shù)據(jù)持久層則由Spring封裝,Spring作為一個(gè)工具庫(kù),提供IOC支持、AOP支持、提供JDBC接口或其他映射等。這樣從框架的整體來(lái)看,Struts將貫穿Web應(yīng)用的設(shè)計(jì),它擔(dān)負(fù)頁(yè)面請(qǐng)求的接收、請(qǐng)求數(shù)據(jù)的規(guī)格統(tǒng)一、邏輯分發(fā)以及處理結(jié)果的返回這些縱向流程。Spring則在其中提供橫向的支持。Struts將請(qǐng)求分發(fā)到Action之后,由Spring接管,它負(fù)責(zé)封裝這些Bean,為它們提供IOC支持和事務(wù)管理機(jī)制,處理完成的結(jié)果返回交到Struts的控制器來(lái)處理。

在整個(gè)設(shè)計(jì)中,主要解決兩個(gè)問(wèn)題:(a)在Struts框架中如何加載Spring的ApplicationContext,使Web容器在初始化時(shí)能夠自動(dòng)獲得Spring設(shè)置的JavaBean對(duì)象;(b)Struts的控制器調(diào)用Action對(duì)象時(shí),采取什么方法將Action對(duì)象納入到Spring容器的管理范圍,從而實(shí)現(xiàn)Struts與Spring的有效結(jié)合。

以下主要討論解決這兩個(gè)問(wèn)題的途徑:

a)加載Spring的ApplicationContext。為了在Web容器初始化時(shí)能夠自動(dòng)獲得Spring設(shè)置的JavaBean對(duì)象,可以在Struts的配置文件Struts-config.xml加入一個(gè)插件Context Loa-derPlugIn。該插件是Spring框架為了集成Struts實(shí)現(xiàn)的org.apache.struts.action.PlugIn接口的類,它在Struts應(yīng)用啟動(dòng)時(shí)被初始化,在應(yīng)用關(guān)閉時(shí)被銷毀。

b)封裝Action實(shí)例。Spring在設(shè)計(jì)時(shí)就充分考慮到了與Struts的協(xié)同工作,通過(guò)內(nèi)置的Struts Plug-in在兩者之間提供了良好的結(jié)合點(diǎn);同時(shí)提供了一個(gè)DelegatingActionProxy方法。該方法繼承了Struts的Action類,實(shí)現(xiàn)了針對(duì)實(shí)際Action的調(diào)用代理,同時(shí)它作為Spring中的一個(gè)Bean,也可以享受到Spring提供的所有服務(wù)(依賴注入、實(shí)例管理、事務(wù)管理等)。當(dāng)Struts加載對(duì)應(yīng)的Action時(shí),DelegatingActionProxy就根據(jù)傳入的path屬性,在WebApplicationContext中尋找對(duì)應(yīng)的Bean,并將其實(shí)例返回給Struts。根據(jù)Struts的工作流程,當(dāng)建立一個(gè)ActionServlet實(shí)例后,Struts會(huì)執(zhí)行它默認(rèn)的Process()方法,而這個(gè)方法實(shí)際上是調(diào)用了RequestProcessor類的Process()方法,在RequestProcessor類的processActionCreate()方法就是創(chuàng)建一個(gè)Action實(shí)例,把它保存在Action緩沖中。也就是在配置文件注冊(cè)的每一個(gè)ActionServlet實(shí)例都會(huì)由控制器將參數(shù)傳遞到RequestProcessor類的Process()方法。因此可以重新加載這個(gè)類。當(dāng)實(shí)現(xiàn)RequestProcessor類時(shí),調(diào)用修改后的processActionCreateQ方法,把ActionServlet實(shí)例納入Spring的容器管理。

這樣,當(dāng)Struts加載某個(gè)Action時(shí),DelegatingStruts根據(jù)傳入的Actionmapping屬性,在SpringContext中尋找對(duì)應(yīng)的Bean,使它享受Spring提供的所有服務(wù)(實(shí)例管理、事務(wù)管理等),并將實(shí)例返回給Struts。

4 結(jié)束語(yǔ)

通過(guò)對(duì)食品安全監(jiān)控系統(tǒng)的具體實(shí)現(xiàn),利用MVC設(shè)計(jì)模式,將Struts MVC以及Spring中的Bean管理、事務(wù)管理融為一體,獲得一個(gè)全面的、成熟的、高效的、自頂而下的Web開發(fā)框架。該框架大大縮短了開發(fā)周期,減少代碼量,增強(qiáng)了系統(tǒng)的可維護(hù)性,同時(shí)利用系統(tǒng)分層的原理,在系統(tǒng)中引入數(shù)據(jù)持久層,通過(guò)數(shù)據(jù)持久層與數(shù)據(jù)庫(kù)交互,這樣使系統(tǒng)各個(gè)層次之間結(jié)構(gòu)分明,各層之間的依賴性減少,有利于程序的可重用性。

MVC模式是一個(gè)復(fù)雜的架構(gòu)模式,其實(shí)現(xiàn)也顯得非常復(fù)雜,但是,多種設(shè)計(jì)模式結(jié)合在一起,使MVC模式的實(shí)現(xiàn)變得相對(duì)簡(jiǎn)單易行,所以需要總結(jié)出更多可靠的設(shè)計(jì)模式,使MVC模式運(yùn)用更加方便有效。

參考文獻(xiàn):

[1]任中方,張華,閆明松,等.MVC模式研究的綜述[J] .計(jì)算機(jī)應(yīng)用研究,2004,21(1):1-4.

[2]陸榮幸,郁洲.J2EE平臺(tái)上MVC設(shè)計(jì)模式的研究與實(shí)現(xiàn)[J] .計(jì)算機(jī)應(yīng)用研究,2003,20(3):144-146.

[3]姚延濤,王煜,沈鈞毅,等.采用增強(qiáng)的MVC模式提高面向?qū)ο髴?yīng)用能力[J] .小型微型計(jì)算機(jī)系統(tǒng),2002,12(6):23-25.

[4]何成萬(wàn),余秋惠.MVC模型2及Struts軟件框架的研究[J] .計(jì)算機(jī)工程,2002,5(6):274-275.

[5]透明.Model-view-controller模式[J].程序員,2002,10(3):55-56.

[6]孫衛(wèi)琴,李洪成.精通Struts:基于MVC的Java Web設(shè)計(jì)與開發(fā)[M] .北京: 電子工業(yè)出版社,2004:253-324.

[7]劉曉華,陳亞強(qiáng).J2EE應(yīng)用開發(fā)詳解[M].北京: 電子工業(yè)出版社,2004:204-315.

[8]SHALLOWAY A,JAMES R T.設(shè)計(jì)模式解析[M] .徐言聲,譯.北京: 人民郵電出版社,2006:245-356.

[9]DEACON J. Model-view-controller(MVC) architeture[EB/OL].(2000-08)[2005-04].http://www.jd1.co.uk/ridfings/MVC.pdf. 

[10]JAAKSI A.MVC++ application architecture[EB/OL].(2003).http://www.cs.uta.fi/jyrki /ohtdy/mvc/ppt.

注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。”

主站蜘蛛池模板: 91免费观看视频| 中文字幕不卡免费高清视频| 国产亚卅精品无码| 女人18一级毛片免费观看| 色婷婷狠狠干| 黄片一区二区三区| 亚洲av色吊丝无码| www.99精品视频在线播放| 国产成人h在线观看网站站| 72种姿势欧美久久久大黄蕉| 国产精品无码制服丝袜| 欧美有码在线| JIZZ亚洲国产| 一级一级一片免费| 欧洲av毛片| 亚洲综合第一区| 国产精品部在线观看| 亚洲国产天堂久久综合226114 | 国产精品成人久久| 亚洲欧洲自拍拍偷午夜色| 97免费在线观看视频| 女人18毛片水真多国产| 婷婷综合色| 国产精品浪潮Av| 在线观看无码a∨| 思思热在线视频精品| 亚洲精品视频免费看| 日韩国产黄色网站| 久久久噜噜噜| 噜噜噜综合亚洲| 8090午夜无码专区| 欧美日本在线观看| 国产美女无遮挡免费视频网站| 亚洲av成人无码网站在线观看| 精品91在线| 九九香蕉视频| 一区二区三区成人| 无码aⅴ精品一区二区三区| 国产精品成人第一区| 久久青草精品一区二区三区| 四虎免费视频网站| 真实国产乱子伦视频| 在线视频一区二区三区不卡| 国产69精品久久久久孕妇大杂乱| 免费福利视频网站| 一级香蕉人体视频| 亚洲午夜片| 国产精品第| 日韩毛片在线播放| 无码'专区第一页| 婷婷色中文网| 国模在线视频一区二区三区| 国产精品对白刺激| 亚洲Va中文字幕久久一区| 天天操天天噜| 这里只有精品在线| 国产精品制服| 久久特级毛片| 精品国产成人三级在线观看| 亚洲最大情网站在线观看| 尤物午夜福利视频| 国产成人精品在线| 国产成人精品一区二区| 人人91人人澡人人妻人人爽| 乱系列中文字幕在线视频| 精品综合久久久久久97| 国产又粗又猛又爽视频| 亚洲区视频在线观看| 91区国产福利在线观看午夜| 国产精品嫩草影院视频| 国产精品 欧美激情 在线播放| 亚洲欧洲AV一区二区三区| 玖玖精品在线| 亚洲无码91视频| 亚洲成肉网| 久久黄色一级视频| 天堂av综合网| 精品久久蜜桃| 四虎影视永久在线精品| 99re这里只有国产中文精品国产精品| 久久免费视频6| 国内精品久久久久久久久久影视 |