亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Spring的電子政務(wù)設(shè)計(jì)與實(shí)現(xiàn)

        2008-04-12 00:00:00劉雙翼
        現(xiàn)代電子技術(shù) 2008年24期

        摘 要:Spring是J2EE開(kāi)發(fā)的一種輕量級(jí)框架,它是為簡(jiǎn)化傳統(tǒng)J2EE的開(kāi)發(fā)過(guò)程復(fù)雜性而創(chuàng)建的。通過(guò)分析Spring框架結(jié)構(gòu)及其特點(diǎn)和構(gòu)建一個(gè)多層體系結(jié)構(gòu)的電子政務(wù)系統(tǒng),展示了Spring框架技術(shù)在J2EE開(kāi)發(fā)過(guò)程中的強(qiáng)大優(yōu)勢(shì)。實(shí)踐表明,使用Spring可以降低Web應(yīng)用開(kāi)發(fā)的復(fù)雜性,提高開(kāi)發(fā)效率和質(zhì)量。

        關(guān)鍵詞:J2EE;電子政務(wù);Spring;iBatis;反轉(zhuǎn)控制

        中圖分類(lèi)號(hào):TP311.5文獻(xiàn)標(biāo)識(shí)碼:B

        文章編號(hào):1004-373X(2008)24-079-04

        Design and Realization of E-Government System Based on Spring

        LIU Shuangyi,ZHU Li,LI Xiang

        (School of Computer Science,China University of Geosciences,Wuhan,430074,China)

        Abstract:Spring is a lightweight framework based on J2EE and created for simplifying the traditional development process of J2EE.Through analysing the Spring framework and its characters and building E-gorvernment system with multilayer architecture,it shows the good advantage of Spring framework in the J2EE development process.Practice proves that by using Spring,the complexity of Web application development can be reduced so that the efficiency and quality of the development is improved.

        Keywords:J2EE;E-government;Spring;iBatis;inversion of control

        1 引 言

        J2EE(Java 2 Platform Enterprinse Edition)技術(shù)作為一種建立企業(yè)應(yīng)用的標(biāo)準(zhǔn)平臺(tái)出現(xiàn),得到極大的發(fā)展。J2EE 平臺(tái)使用了大量不同的技術(shù)標(biāo)準(zhǔn)如JSP,Java Servlet,EJB,JMS, JNDI等,而且還提供了多層分布式應(yīng)用模型、組件復(fù)用能力、統(tǒng)一的安全模型和靈活的事務(wù)處理,為開(kāi)發(fā)和配置企業(yè)應(yīng)用提供健壯和穩(wěn)定的服務(wù)。

        隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展和成熟,J2EE的不足漸漸暴露出來(lái),如EJB組件開(kāi)發(fā)過(guò)于復(fù)雜、程序中充斥大量重復(fù)代碼、應(yīng)用程序不易測(cè)試等問(wèn)題使得開(kāi)發(fā)過(guò)程變得越來(lái)越困難。與此同時(shí),越來(lái)越多的人們將目光轉(zhuǎn)向輕量級(jí)的框架。Spring作為一種主流輕量級(jí)框架,簡(jiǎn)化了J2EE的開(kāi)發(fā)過(guò)程,使得應(yīng)用程序具有高內(nèi)聚、低藕合、高彈性、易維護(hù)的優(yōu)點(diǎn),更重要的是它可以使用JavaBean完成以前只有重量級(jí)組件EJB才有可能完成的工作。

        J2EE的N層的體系結(jié)構(gòu)向開(kāi)發(fā)者提供一種基于組件的設(shè)計(jì)和開(kāi)發(fā)Web應(yīng)用的模塊化方法。應(yīng)用系統(tǒng)各層的實(shí)現(xiàn)技術(shù)多種多樣,每種技術(shù)都有其優(yōu)缺點(diǎn)和最適用的范圍。如何把這些技術(shù)組合起來(lái)形成一個(gè)適應(yīng)項(xiàng)目需要的穩(wěn)定架構(gòu)是項(xiàng)目開(kāi)發(fā)過(guò)程中一個(gè)非常重要的問(wèn)題。

        2 關(guān)鍵技術(shù)介紹

        2.1 Spring介紹

        Spring是基于IoC(Inversion of Control,反向控制)和AOP的多層J2EE系統(tǒng)的框架[1]。Spring提供Bean的配置基礎(chǔ)、AOP的支持、JDBC的提取框架、抽象事務(wù)支持等。它實(shí)現(xiàn)了MVC,對(duì)不同的數(shù)據(jù)訪問(wèn)技術(shù)提供了統(tǒng)一的接口,采用IoC可以很容易地實(shí)現(xiàn)Bean的裝配。

        Spring由7個(gè)定義良好的模塊組成如圖1所示,分別為:核心模塊(Spring Core)、上下文模塊(Spring Context)、數(shù)據(jù)存取對(duì)象模塊(Spring DAO)、對(duì)象關(guān)系映射模塊(Spring ORM)、AOP支持模塊(Spring AOP)、MVC模塊(Spring MVC)和Web模塊(SpringWeb)。Spring模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理Bean的方式。Spring是一個(gè)服務(wù)于所有層面的應(yīng)用程序框架。但它不強(qiáng)迫用戶必須在每一層中必須使用Spring,因?yàn)榫哂辛己玫哪K化性能,允許用戶根據(jù)自己的需要選擇使用它的某一個(gè)模塊。

        2.2 Spring IoC容器

        Spring的核心是IoC容器,也稱(chēng)為DI(Dependancy Injection,注入依賴(lài))容器,它很好地實(shí)現(xiàn)了IoC模式,幫助組件依賴(lài)關(guān)系的注入,同時(shí)消除程序模塊之間的耦合和代碼中依賴(lài)關(guān)系[2]。Spring的設(shè)計(jì)哲學(xué)是“提供一種無(wú)侵入式的高擴(kuò)展性框架”,因?yàn)榛谇秩胄钥蚣茉O(shè)計(jì)開(kāi)發(fā),會(huì)使得代碼與框架的緊耦合,任何脫離這個(gè)框架的設(shè)計(jì)都將導(dǎo)致整個(gè)系統(tǒng)的崩潰,這正是所需要避免的情況。Spring大量引入了Java的Reflection機(jī)制,通過(guò)動(dòng)態(tài)調(diào)用的方式避免硬編碼方式的約束,并在此基礎(chǔ)上建立了其核心組件BeanFactory,以此作為其依賴(lài)注入機(jī)制的實(shí)現(xiàn)基礎(chǔ)。

        在傳統(tǒng)的OOP的編程中經(jīng)??梢钥吹剑绻粋€(gè)應(yīng)用代碼需要調(diào)用另一個(gè)類(lèi)A,它就必須先告訴容器或框架找到這個(gè)類(lèi),然后再負(fù)責(zé)將其實(shí)例化,并調(diào)用。如果被調(diào)用的類(lèi)A是接口A的實(shí)現(xiàn),它將直接負(fù)責(zé)實(shí)例化一個(gè)子類(lèi)。如圖2所示,從這里可以看到有2個(gè)依賴(lài)關(guān)系存在:應(yīng)用代碼既依賴(lài)接口,也依賴(lài)具體實(shí)現(xiàn)。而在IoC模式中,這樣的“控制”被反轉(zhuǎn),從應(yīng)用代碼轉(zhuǎn)移到了框架或容器上,則創(chuàng)實(shí)例化對(duì)象的任務(wù)將由框架或容器來(lái)實(shí)現(xiàn),即在運(yùn)行期由容器將依賴(lài)關(guān)系注入到組件之中。

        如圖3所示,這時(shí)應(yīng)用代碼只依賴(lài)接口。

        Martin Fowler在[3]關(guān)于DI的文章中提出了3種方式實(shí)現(xiàn):接口注入(Interface Injection),構(gòu)造注入(Construction Injection)和設(shè)值注入(Setter Injection),并且分別命名為:type 1 IoC,type 2 IoC,type 3 IoC。只需在Spring的配置文件中做出具體聲明,就可完成依賴(lài)注入。注入依賴(lài)消除了對(duì)具體實(shí)現(xiàn)類(lèi)的依賴(lài),從而降低了組件之間的耦合度,提高程序的擴(kuò)展性且極大改善代碼的可重用性,真正做到“抽象不依賴(lài)于實(shí)現(xiàn),實(shí)現(xiàn)必須依賴(lài)于抽象”。

        2.3 Spring MVC框架介紹

        MVC是Model-View-Controller的簡(jiǎn)稱(chēng),即模型-視圖-控制器。它是一種設(shè)計(jì)模式,強(qiáng)制性把應(yīng)用程序的輸入、處理和輸出分開(kāi)。Spring Web框架對(duì)Model、View和Controller方面提供了清晰的劃分,實(shí)現(xiàn)了功能模塊和顯示模塊的分離。

        SpringMVC的核心Dispatchservlet,負(fù)責(zé)把處理請(qǐng)求的責(zé)任委托給對(duì)應(yīng)的Controller,所以又稱(chēng)為前置控制器(Front-controller)。它會(huì)根據(jù)處理器映射(Handler Mapping)來(lái)選擇并決定將請(qǐng)求發(fā)送給那一個(gè)控制器(Controller),控制器接受Request和Response參數(shù)并負(fù)責(zé)處理請(qǐng)求。不過(guò),實(shí)際上,一個(gè)良好設(shè)計(jì)的控制器自身并不處理任何信息,而是將其委托給業(yè)務(wù)邏輯層處理。最后得到的原始數(shù)據(jù)(Model)數(shù)據(jù)和將要顯示數(shù)據(jù)的頁(yè)面(View),一起綁定到ModelAndVIew對(duì)象中,并返回給Dispatchservlet,再根據(jù)視圖解析器(ViewResovler)找到View的真實(shí)頁(yè)面并將Model數(shù)據(jù)交由View顯示。

        3 系統(tǒng)構(gòu)架設(shè)計(jì)

        J2EE的N層體系構(gòu)架簡(jiǎn)化了企業(yè)應(yīng)用開(kāi)發(fā)[4] 。它將系統(tǒng)分成表示層(Presentation Layer)、持久層(Persistence Layer)、業(yè)務(wù)層(Business Logic Layer)以及數(shù)據(jù)對(duì)象領(lǐng)域模型(Domin Object Model)。表示層使用MVC模式將其分為視圖層(View Layer)、控制器層(Controller Layer)和模型層(Model Layer)。每一應(yīng)用層在保持彼此獨(dú)立同時(shí)與相鄰的層間都以一種松耦合的方式彼此溝通,這樣可以專(zhuān)注本層設(shè)計(jì),而不必?fù)?dān)心影響到其他層,從而解決了Web應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程中由于系統(tǒng)結(jié)構(gòu)復(fù)雜而帶來(lái)的一些問(wèn)題。

        在技術(shù)上,表示層采用SpringMVC框架、JSP(Java Server Page)和JSTL(JSP Standard Tag Library,JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù))來(lái)設(shè)計(jì),業(yè)務(wù)邏輯層采用Spring框架設(shè)計(jì)相應(yīng)bean,持久層通過(guò)整合Spring框架與iBatis框架來(lái)實(shí)現(xiàn)。領(lǐng)域?qū)ο竽P蛯佑肞OJO來(lái)實(shí)現(xiàn)。整個(gè)系統(tǒng)技術(shù)構(gòu)架圖如圖4所示。

        4 系統(tǒng)實(shí)現(xiàn)

        4.1 領(lǐng)域模型層

        領(lǐng)域模型層的作用是保存其他各層的數(shù)據(jù)和實(shí)現(xiàn)數(shù)據(jù)傳遞。對(duì)于其他層而言,一個(gè)域?qū)ο螅―omin Obect)相當(dāng)于數(shù)據(jù)庫(kù)表中的1條記錄。數(shù)據(jù)庫(kù)表與對(duì)應(yīng)的域?qū)ο箢?lèi)通過(guò)配置文件實(shí)現(xiàn)他們之間關(guān)系的映射。域?qū)ο笫且粋€(gè)具有g(shù)etter和setter風(fēng)格的JavaBean,它可以將狀態(tài)和行為都進(jìn)行封裝。

        持久層具體的DAO實(shí)現(xiàn)類(lèi)將通來(lái)getter\\\\setter訪問(wèn)對(duì)象的持久化數(shù)據(jù)。這里只需面對(duì)DominObject,數(shù)據(jù)庫(kù)對(duì)用戶來(lái)說(shuō)是完全透明的。

        4.2 持久層

        Spring提供了對(duì)如iBatis,JDBC和ORM框架等數(shù)據(jù)訪問(wèn)技術(shù)的支持,本文中使用iBatis框架實(shí)現(xiàn)。無(wú)論選擇那一種持久化機(jī)制,Spring都將很大程度地減少程序開(kāi)發(fā)的復(fù)雜度。

        持久層的實(shí)現(xiàn)也體現(xiàn)了IoC的設(shè)計(jì)思想,正如Spring所提倡的“注入接口編程而不是面向類(lèi)編程”,實(shí)現(xiàn)上通過(guò)設(shè)計(jì)DAO接口類(lèi)和DAOImpl,數(shù)據(jù)訪問(wèn)方法暴露在DAO接口中,具體在DAOImpl中實(shí)現(xiàn)。因此要實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,必須在具體的類(lèi)中調(diào)用具體的操作。

        持久層主要定義應(yīng)用程序通過(guò)具體的類(lèi)與數(shù)據(jù)庫(kù)交互。持久層的設(shè)計(jì)將定義系統(tǒng)中各個(gè)模塊的業(yè)務(wù)入口DAO接口,并定義它的實(shí)現(xiàn)類(lèi)DAOImpl,如圖4所示。通過(guò)DAO接口得到具體業(yè)務(wù)的類(lèi)實(shí)現(xiàn)。通過(guò)和對(duì)應(yīng)模塊的交互,就能對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪查改的操作。

        要實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,必須在具體的類(lèi)中調(diào)用具體的操作,例如update,delete,query等。由于所有的實(shí)現(xiàn)類(lèi)都繼承SqlMapClientDaoSupport類(lèi) ,因此可以通過(guò)直接調(diào)用父類(lèi)的方法,來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。通過(guò)在applicationcontext-ibatis.xml中對(duì)持久化類(lèi)bean的配置程序就可以自動(dòng)尋找到每個(gè)接口的實(shí)現(xiàn)類(lèi)。

        以下例子是accetDaoImpl類(lèi)中根據(jù)狀態(tài)得到列表的方法:

        public List findAcceptByState(Map map) {

        return this.getSqlMapClientTemplate().queryForList(

        \"Accept.findAcceptByState\",map);

        }

        由此可以看出,直接調(diào)用父類(lèi)的getSqlMapClientTemplate()就可以獲取對(duì)數(shù)據(jù)的操作。

        要實(shí)現(xiàn)與業(yè)務(wù)邏輯層的對(duì)話,則需要在業(yè)務(wù)層的實(shí)現(xiàn)中注入持久層的接口。下面程序代碼是對(duì)acceptDao的實(shí)現(xiàn)。

        在業(yè)務(wù)層配置文件的聲明:

        <bean id=\"acceptManager\" class=\"com.sqzx.service.impl.AcceptManagerImpl\">

        <property name=\"acceptDao\">

        <ref bean=\"acceptDao\"/>

        </property>

        </bean>

        由以上的實(shí)例代碼可以看出,業(yè)務(wù)層實(shí)現(xiàn)類(lèi)中的方法通過(guò)對(duì)配置文件中的配置,調(diào)用特定的Dao接口完成具體業(yè)務(wù)對(duì)象的操作流程,這樣業(yè)務(wù)層就與持久層中的數(shù)據(jù)操作聯(lián)系起來(lái)。

        4.3 業(yè)務(wù)邏輯層

        Spring并沒(méi)有為實(shí)際的業(yè)務(wù)邏輯實(shí)現(xiàn)提供太多的支持,但是它對(duì)依賴(lài)注入、驗(yàn)證和事務(wù)管理均提供了良好的支持,這使得它成為一個(gè)理想的業(yè)務(wù)層構(gòu)建平臺(tái)。

        與持久層的類(lèi)的設(shè)計(jì)相似,先對(duì)應(yīng)用程序中的服務(wù)對(duì)象定義一系列接口,所有與業(yè)務(wù)層交互的代碼都應(yīng)該通過(guò)這些接口進(jìn)行。例如,訴求受理acceptManager接口類(lèi)與acceptManagerImpl實(shí)現(xiàn)類(lèi)。如上配置中acceptManagerImpl通過(guò)注入持久層acceptDao接口,可以方便與數(shù)據(jù)庫(kù)進(jìn)行交互。

        4.4 表示層

        表示層負(fù)責(zé)管理用戶的請(qǐng)求和響應(yīng),并提供一個(gè)控制器將調(diào)用委托到具體對(duì)應(yīng)的業(yè)務(wù)邏輯和其他上游處理將業(yè)務(wù)操作的結(jié)果組裝在數(shù)據(jù)對(duì)象中表現(xiàn)到視圖上。這里將采用SpringMVC來(lái)實(shí)現(xiàn)表示層,根據(jù)不同責(zé)任對(duì)其進(jìn)行劃分。

        4.4.1 視圖層

        傳統(tǒng)的表示層使用HTML和Javascript技術(shù)將結(jié)果顯示在瀏覽器中,往往導(dǎo)致頁(yè)面出現(xiàn)很多邏輯代碼,這里通過(guò)使用JSTL標(biāo)簽來(lái)避免在JSP頁(yè)面上直接編寫(xiě),保持頁(yè)面的簡(jiǎn)潔,提高腳本的重用性,有利于腳本的調(diào)試。視圖就由JSP頁(yè)面完成,將業(yè)務(wù)操作所得到的數(shù)據(jù)對(duì)象展示給用戶。

        Spring實(shí)現(xiàn)了很多View接口的類(lèi),提供了對(duì)眾多視圖層實(shí)現(xiàn)的支持,通過(guò)在配置文件中定義org.springframework.web.servlet.view.InternalResourceViewResolver的屬性ViewClass的值為InternalResourceView來(lái)使用JSTL技術(shù)。InternalResourceView是一個(gè)常用的視圖類(lèi),用來(lái)處理Servlet和JSP。

        4.4.2 模型層

        在SpringMVC框架中,幾乎沒(méi)有實(shí)現(xiàn)Model層,因?yàn)椴⒉恍枰狹VC的框架來(lái)實(shí)現(xiàn)。它的實(shí)現(xiàn)取決與程序員對(duì)面向?qū)ο蠹夹g(shù)的掌握,這里用VO作為存數(shù)據(jù)載體來(lái)實(shí)現(xiàn)Model層。

        4.4.3 控制器層

        Spring的缺省處理器是一個(gè)簡(jiǎn)單的控制器(Controller)接口,這個(gè)接口僅定義ModelAndView handleRequest(request,response)方法,所有開(kāi)發(fā)人員自己實(shí)現(xiàn)的應(yīng)用控制器都必須實(shí)現(xiàn)這個(gè)接口。同時(shí)Spring還提供很多控制器實(shí)現(xiàn),例如AbstractController,Abstract CommandController和SimpleFormController。

        通常每個(gè)控制器完成業(yè)務(wù)邏輯處理后,都將會(huì)返回ModelAndView對(duì)象,用來(lái)負(fù)責(zé)傳遞Model層處理后的結(jié)果集合和指定的View層信息。

        通常在配置文件中的設(shè)置如下:

        <bean id=\"acceptOutViewerController\" class=\"com. sqzx.web.controller.accept.AcceptOutViewerController\" parent=\"baseCommandControllerTemplate\">

        <property name=\"acceptManager\">

        <ref bean=\"acceptManager\"/>

        </property>

        </bean>

        如圖6所示,通過(guò)注入業(yè)務(wù)層接口AcceptManager,實(shí)現(xiàn)了表示層與業(yè)務(wù)層的耦合。通過(guò)返回ModelAndView對(duì)象實(shí)現(xiàn)與Model層和View層通信。

        5 結(jié) 語(yǔ)

        Spring是一個(gè)利用依賴(lài)注入方式實(shí)現(xiàn)對(duì)象的初始化,使得開(kāi)發(fā)人員不用自己在代碼中初始化對(duì)象,降低了系統(tǒng)的耦合度,Spring框架技術(shù)在系統(tǒng)設(shè)計(jì)中具有良好的設(shè)計(jì)思想。在表示層中Spring能較好地把業(yè)務(wù)邏輯和頁(yè)面分離,對(duì)數(shù)據(jù)庫(kù)操作和業(yè)務(wù)對(duì)象的管理,通過(guò)整合Spring和iBatis實(shí)現(xiàn)。通過(guò)對(duì)系統(tǒng)的分析及實(shí)現(xiàn)可以看出,Spring作為J2EE一個(gè)解決方案具有廣闊的應(yīng)用前景。

        參考文獻(xiàn)

        [1]Craig Walls.Ryan Breidenbach.Spring In Action[M].manning press,2006.

        [2]郭峰.Spring從入門(mén)到精通[M].北京:清華大學(xué)出版社,2006.

        [3]Martin Fowler. Inversion of Control Containers and the Dependency Injection Pattern. [C/OL].http://www. martinfowler.com/articles/injection.html,2004.

        [4]王可.基于spring和hibernate的框架技術(shù)在聯(lián)通農(nóng)業(yè)信息平臺(tái)系統(tǒng)中的應(yīng)用研究[D].成都:西南交通大學(xué),2007.

        [5]吳高峰.基于Struts+Spring+iBATIS的輕量級(jí)J2EE開(kāi)發(fā)[EB/OL].http://www-128.ibm.com /develop-rworks/cn/ja-va/j-s-s-i/,2005.

        [6]Clinton Begin,Brandon Goodin,Larry Meadors.Ibatis In Action[M].Manning Press,2007.

        [7]閻宏.Java與模式[M].北京:電子工業(yè)出版社,2002.

        [8]Johnson R. Introduction to the Spring Framework [EB/OL].2005-05.http://www.theserverside.com/articles/article.tss? l=SpringFramework.

        [9]羅時(shí)飛.精通Spring[M].北京:電子工業(yè)出版社,2005.

        [10]Apache Software Foundation. iBATIS Sql Maps Developer Guide[EB/OL]. http: //prdownloads. sourceforge. net/ibatisdb/,2005.

        作者簡(jiǎn)介 劉雙翼 男,1981年生,武漢人,碩士研究生。主要研究方向?yàn)閿?shù)據(jù)挖掘與知識(shí)發(fā)現(xiàn)。

        朱 莉 女,1952年生,江西人,教授,碩士生導(dǎo)師。主要研究方向?yàn)閿?shù)據(jù)挖掘及其應(yīng)用。

        李 向 男,1970年生,重慶人,副教授,博士研究生。主要研究方向?yàn)檠莼?jì)算及其應(yīng)用。

        国产又滑又嫩又白| 国产乱人精品视频av麻豆网站| 久久精品国产99国产精品澳门 | 不卡国产视频| 亚洲情精品中文字幕99在线| 人妻夜夜爽天天爽三区丁香花| 女人高潮被爽到呻吟在线观看| 国产亚洲精品自在久久蜜tv| 日韩精品久久不卡中文字幕| 日本护士口爆吞精视频| wwww亚洲熟妇久久久久| 欧美喷潮系列在线观看| 精品粉嫩国产一区二区三区| 国产一区二区三区天堂 | 久久不见久久见免费视频7| 欧美激情精品久久999| av在线入口一区二区| 国产动作大片中文字幕| 免费一级特黄欧美大片久久网| 亚洲av乱码国产精品色| 人妻少妇69久久中文字幕| 帮老师解开蕾丝奶罩吸乳视频 | 欧美性受xxxx狂喷水| 中文字幕乱码日本亚洲一区二区 | 久久精品国产亚洲综合av| 成人影院yy111111在线| 在线视频精品免费| 风韵丰满妇啪啪区老老熟女杏吧| 文字幕精品一区二区三区老狼 | 尤物99国产成人精品视频| 成年人男女啪啪网站视频| 精品厕所偷拍一区二区视频| 日韩人妻无码一区二区三区| 国产精品一区2区三区| 视频国产自拍在线观看| 性无码专区无码| 久久国产精彩视频| 精品国产一区二区av麻豆不卡| 中文字幕免费在线观看动作大片 | 国产女女精品视频久热视频 | 成人伊人亚洲人综合网站222|