日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring源码解析-applicationContext.xml加载和bean的注册

發布時間:2025/3/8 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring源码解析-applicationContext.xml加载和bean的注册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

applicationContext文件加載和bean注冊流程
? Spring對于從事Java開發的boy來說,再熟悉不過了,對于我們這個牛逼的框架的介紹就不在這里復述了,Spring這個大雜燴,怎么去使用怎么去配置,各種百度谷歌都能查到很多大牛教程,但是,當我們按著教程一步步的把spring的開發框架搭建起來的時候,有沒有一種想搞明白spring的沖動,萬事開頭難,就要從開頭開始,而我認為spring開頭就是如何加載配置文件,并初始化配置文件里面的bean當然也包括了我們用注解Service、Component等注解注解的bean,spring在容器啟動的時候就要去加載這些內容,然后統一管理這些bean(統一管理的是他們的bean definition),這也就是spring的一個重要概念bean的容器。

? applicationContext.xml到底是如何加載的呢?我把他簡化成以下流程,當然了每個環節里Spring的實現都是錯綜復雜的,也是很佩服寫Spring的大神。

Spring初始化
? 當我們初學Spring的教程的時候,教程里面肯定會有這樣的一步操作,就是新建一個applicationContext.xml文件,當然了這是Spring里必須要有的一個文件,在這個文件里面我們可以進行bean的配置等等工作,讓Spring來管理我們的Bean。然后,這個文件放在哪里也是個比較講究的事情,可能對于初學者來說可額能會往WEB-INF文件夾一放就了事了,確實這樣是可以的,因為Spring默認的位置就是這個,但是我們一般不這么做,一般會把這個文件放在resource里面,那這樣子做的話,你就要指定位置,讓Spring知道你這個文件的位置,這就有了下面一段代碼,我們的Spring項目都會在web.xml配置這樣的代碼:

<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value> </context-param>

那問題來了,當項目啟動的時候,spring是怎么去初始化應用的上下文的呢?答案就在類ContextLoader.java里面。當Tomcat啟動時候會調用該類里面的一個方法public WebApplicationContext initWebApplicationContext(ServletContext servletContext),這個方法主要完成,根據我們在web.xml里面配置的contextConfigLocation初始化spring的web的應用上下文。具體看下改方法的實現(非完整代碼,PS:由于太長了):

public WebApplicationContext initWebApplicationContext(ServletContext servletContext) {......this.context = createWebApplicationContext(servletContext);//主要代碼,創建web應用上下文 ......configureAndRefreshWebApplicationContext(cwac, servletContext);//配置參數并調用初始化方法...... }

在這個方法里面有兩句重要代碼,第一句createWebApplicationContext(servletContext),這個會根據你配置的contextClass創建一個WebApplicationContext對象,但是我們一般不會配置這個參數,所以Spring默認會創建一個XMLWebApplicationContext對象,而這個就是后續操作的的重要對象,然后接下來一句重要代碼configureAndRefreshWebApplicationContext(cwac, servletContext)這個就會去讀取我們在web.xml里面配置的參數并set到變量里頭去,這樣Spring就能找到我們項目的applicationContext.xml文件了,到底如何找到下面會講。接下來我們來看下configureAndRefreshWebApplicationContext方法的實現如下:

protected void configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac, ServletContext sc) {if (ObjectUtils.identityToString(wac).equals(wac.getId())) {// The application context id is still set to its original default value// -> assign a more useful id based on available informationString idParam = sc.getInitParameter(CONTEXT_ID_PARAM);if (idParam != null) {wac.setId(idParam);}else {// Generate default id...wac.setId(ConfigurableWebApplicationContext.APPLICATION_CONTEXT_ID_PREFIX +ObjectUtils.getDisplayString(sc.getContextPath()));}}wac.setServletContext(sc);String configLocationParam = sc.getInitParameter(CONFIG_LOCATION_PARAM);if (configLocationParam != null) {wac.setConfigLocation(configLocationParam);}// The wac environment's #initPropertySources will be called in any case when the context// is refreshed; do it eagerly here to ensure servlet property sources are in place for// use in any post-processing or initialization that occurs below prior to #refreshConfigurableEnvironment env = wac.getEnvironment();if (env instanceof ConfigurableWebEnvironment) {((ConfigurableWebEnvironment) env).initPropertySources(sc, null);}customizeContext(sc, wac);wac.refresh();}

在這個方法中我們只要關注兩個地方,第一個:

String configLocationParam = sc.getInitParameter(CONFIG_LOCATION_PARAM);if (configLocationParam != null) {wac.setConfigLocation(configLocationParam);}

這塊代碼塊就是,講我們配置在web.xml里面的參數set到我們的變量中去。第二個地方就是:

wac.refresh();

調用這個執行后續的加載文件操作等后續操作。

Spring是如何找到applicationContext.xml文件
? 其實,從refresh到Spring里去查找配置文件路徑之間,有很多步驟,這些也都要花點時間去理解的,在這里不展開講,我們只要知道,XmlWebApplicationContext會委托給XmlBeanDefinitionReader類去解析配置文件,在XmlWebApplicationContext類里面有個方法loadBeanDefinitions如下:

protected void loadBeanDefinitions(XmlBeanDefinitionReader reader) throws IOException {String[] configLocations = getConfigLocations();if (configLocations != null) {for (String configLocation : configLocations) {reader.loadBeanDefinitions(configLocation);}}}

該方法就是將一個個的配置文件委托給XmlBeanDefinitionReader去解析配置文件,但是解析之前有句代碼String[] configLocations = getConfigLocations();這個就是查找我們的配置的文件的方法,

protected String[] getConfigLocations() {return (this.configLocations != null ? this.configLocations : getDefaultConfigLocations());}

實現很簡單,就是我們有配置該位置地址就會去讀我們配置的路徑,否則就會去讀默認的配置文件路徑,這就是開篇說到的要是沒配置路徑也能讀取到配置文件,前提就是要跟Spring默認定義好的文件路徑及文件名保持一致才行。getDefaultConfigLocations函數的實現也很簡單:

/** Default config location for the root context */ public static final String DEFAULT_CONFIG_LOCATION = "/WEB-INF/applicationContext.xml";/** Default prefix for building a config location for a namespace */ public static final String DEFAULT_CONFIG_LOCATION_PREFIX = "/WEB-INF/";/** Default suffix for building a config location for a namespace */ public static final String DEFAULT_CONFIG_LOCATION_SUFFIX = ".xml";protected String[] getDefaultConfigLocations() {if (getNamespace() != null) {return new String[] {DEFAULT_CONFIG_LOCATION_PREFIX + getNamespace() + DEFAULT_CONFIG_LOCATION_SUFFIX};}else {return new String[] {DEFAULT_CONFIG_LOCATION};}}

如果配置了namespace就會去找這個名字的xml配置文件,如果沒有配置就去找默認的配置文件。所以不管如何,這個配置文件是必須在spring項目中的。至此,配置文件基本將完,接下來就是重頭戲了,就是解析xml以及xml里面的節點,并注冊到spring的bean容器中去。

將xml文件轉成Document處理對象
如何將xml轉成Document對象,這個也是很復雜的操作,首先將resource讀取InputStream流,在將InputStream流包裝成InputSource對象,在處理成Document對象,直接上代碼:

public int loadBeanDefinitions(EncodedResource encodedResource) throws BeanDefinitionStoreException {Assert.notNull(encodedResource, "EncodedResource must not be null");if (logger.isInfoEnabled()) {logger.info("Loading XML bean definitions from " + encodedResource.getResource());}Set<EncodedResource> currentResources = this.resourcesCurrentlyBeingLoaded.get();if (currentResources == null) {currentResources = new HashSet<EncodedResource>(4);this.resourcesCurrentlyBeingLoaded.set(currentResources);}if (!currentResources.add(encodedResource)) {throw new BeanDefinitionStoreException("Detected cyclic loading of " + encodedResource + " - check your import definitions!");}try {InputStream inputStream = encodedResource.getResource().getInputStream();//獲取流try {InputSource inputSource = new InputSource(inputStream);if (encodedResource.getEncoding() != null) {inputSource.setEncoding(encodedResource.getEncoding());}return doLoadBeanDefinitions(inputSource, encodedResource.getResource());}finally {inputStream.close();}}catch (IOException ex) {throw new BeanDefinitionStoreException("IOException parsing XML document from " + encodedResource.getResource(), ex);}finally {currentResources.remove(encodedResource);if (currentResources.isEmpty()) {this.resourcesCurrentlyBeingLoaded.remove();}}}

接下來又到doLoadBeanDefinitions(inputSource, encodedResource.getResource());方法去了,該方法就是生成Doucument對象的,然后就是解析具體的節點了,部分源碼如下:

protected int doLoadBeanDefinitions(InputSource inputSource, Resource resource)throws BeanDefinitionStoreException {Document doc = doLoadDocument(inputSource, resource);//這就是解析成Document對象的操作return registerBeanDefinitions(doc, resource);...... }

解析Document不展開講了,不是本篇的重點,重點是下面的,spring如何解析xml文件的bean及注解的bean然后注冊到容器中去,registerBeanDefinitions(doc, resource)是下面的重點。

解析Document里面的節點
XmlBeanDfinitionReader本身又不是直接取解析document的,他是委托給了DefaultBeanDefinitionDocumentReader類去實現,源代碼中,會去創建DefaultBeanDefinitionDocumentReader對象實例,然后調用實例的注冊方法,代碼如下:

public int registerBeanDefinitions(Document doc, Resource resource) throws BeanDefinitionStoreException {BeanDefinitionDocumentReader documentReader = createBeanDefinitionDocumentReader();int countBefore = getRegistry().getBeanDefinitionCount();documentReader.registerBeanDefinitions(doc, createReaderContext(resource));return getRegistry().getBeanDefinitionCount() - countBefore;}

首先,我們必須知道,spring的xml文件里面有兩種類型的節點,一種是默認節點,相對于默認節點之外的節點統稱自定義節點,這可以從源碼里面知道,而默認節點有以下幾個:beans、import、alias、bean這幾個節點是默認節點,而相對于這幾個節點之外的都是默認節點,applicationContext里面有幾個自定義節點,如下:property-placeholder、property-override、annotation-config、component-scan、load-time-weaver、spring-configured、mbean-export、mbean-server,這里面常見的有component-scan等,為什么spring要分成默認和自定義節點呢,是因為自定義節點都有特定的業務,比如component-scan,他是去掃描程序包,加載用注解定義的bean,例如開發中的service等bean,所以這些自定義節點都配備了解析器,這些解析器預先初始化好的,解析到什么節點就去獲取相應的解析器去處理相應的業務,自定義節點解析器配置如下:

@Overridepublic void init() {registerBeanDefinitionParser("property-placeholder", new PropertyPlaceholderBeanDefinitionParser());registerBeanDefinitionParser("property-override", new PropertyOverrideBeanDefinitionParser());registerBeanDefinitionParser("annotation-config", new AnnotationConfigBeanDefinitionParser());registerBeanDefinitionParser("component-scan", new ComponentScanBeanDefinitionParser());registerBeanDefinitionParser("load-time-weaver", new LoadTimeWeaverBeanDefinitionParser());registerBeanDefinitionParser("spring-configured", new SpringConfiguredBeanDefinitionParser());registerBeanDefinitionParser("mbean-export", new MBeanExportBeanDefinitionParser());registerBeanDefinitionParser("mbean-server", new MBeanServerBeanDefinitionParser());}

從以上源碼分析,我們可以得到一個推論:

我們自己可以自定義xml的節點,spring可以去解析我們自定義的xml節點。

其實這個推論明顯成立,我們可以看到spring里面到處都是這種自定義的節點的。

這里又引申出一個問題:spring怎么去區分默認節點和自定義節點的呢?答案是通過節點的namespaceUri屬性去判斷,namespaceUri是什么東東?我們來看下,默認節點的namespaceUri是怎么樣的,源碼是這樣定義的:

public static final String BEANS_NAMESPACE_URI = "http://www.springframework.org/schema/beans";

是不是很熟悉,這貨就是我們配置文件里面的beans根節點會寫的東西,如下:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"> </beans>

但是問題又來了,子節點上我們根本沒配置這貨,但是也能讀取到,以下是個人推論:

子節點會繼承父節點的屬性,這就說的通,子節點即使沒配置那一堆東西也能判斷為默認節點。

接下來,就是解析Document的元素,從root元素開始解析,這時候spring是創建了一個解析類的代理類,所有的比較和解析操作都有該類完成,我們來看下spring的源碼實現:

protected void doRegisterBeanDefinitions(Element root) { BeanDefinitionParserDelegate parent = this.delegate;this.delegate = createDelegate(getReaderContext(), root, parent);if (this.delegate.isDefaultNamespace(root)) {String profileSpec = root.getAttribute(PROFILE_ATTRIBUTE);if (StringUtils.hasText(profileSpec)) {String[] specifiedProfiles = StringUtils.tokenizeToStringArray(profileSpec, BeanDefinitionParserDelegate.MULTI_VALUE_ATTRIBUTE_DELIMITERS);if (!getReaderContext().getEnvironment().acceptsProfiles(specifiedProfiles)) {if (logger.isInfoEnabled()) {logger.info("Skipped XML bean definition file due to specified profiles [" + profileSpec +"] not matching: " + getReaderContext().getResource());}return;}}}preProcessXml(root);parseBeanDefinitions(root, this.delegate);postProcessXml(root);this.delegate = parent;}

解析節點的過程是個遞歸的過程,每次都要記錄節點的父節點,首先會創建一個delegate對象,然后再去解析節點,調用parseBeanDefinitions(root, this.delegate);這個方法進行解析操作;

繼續來看下parseBeanDefinitions(root, this.delegate);的實現:

protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) {if (delegate.isDefaultNamespace(root)) {NodeList nl = root.getChildNodes();for (int i = 0; i < nl.getLength(); i++) {Node node = nl.item(i);if (node instanceof Element) {Element ele = (Element) node;if (delegate.isDefaultNamespace(ele)) {parseDefaultElement(ele, delegate);}else {delegate.parseCustomElement(ele);}}}}else {delegate.parseCustomElement(root);}}

很簡單,可以很清晰的看出,解析是分默認節點和自定義節點分開解析的,而自定義的節點的解析其實就是找到對應的解析器各自處理對應的業務,如component-scan會找到ComponentScanBeanDefinitionParser類來處理對應的掃描包注冊bean的操作,而默認的節點的處理有如下幾種,代碼如下:

private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) {//處理importif (delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) {importBeanDefinitionResource(ele);}//處理aliaselse if (delegate.nodeNameEquals(ele, ALIAS_ELEMENT)) {processAliasRegistration(ele);}//處理beanelse if (delegate.nodeNameEquals(ele, BEAN_ELEMENT)) {processBeanDefinition(ele, delegate);}//處理beanselse if (delegate.nodeNameEquals(ele, NESTED_BEANS_ELEMENT)) {// recursedoRegisterBeanDefinitions(ele);}}

import的處理相對其他幾種比較復雜點,但最終還是處理變成其他3種的處理,而beans的處理就重新遞歸上面提到的方法,最重要的是bean的處理,bean的處理其實就是下面要講的內容,解析bean并注冊bean definition的過程。

注冊bean
終于到了最后一個內容了,也是最重要的一個內容,上面講的所有都是為了這個而服務的,讀取配置文件也是為了加載bean,然后注冊到spring的容器里面,讓spring統一管理我們定義的bean。大家都很明白,spring的bean的容器,但是如果沒有去看源碼的話,是不是都認為spring,是把每個實例對象注冊到容器里面然后統一管理的?其實,spring其實不是這樣的做的,spring注冊的bean最終是個bean的定義,即BeanDefinition這個實例,并不是一個個類的具體實例。我們可以簡單理解這些注冊的bean definition是為了方便后續的實例化bean進行的一步準備操作。所謂的注冊,其實就是把各種這些實例用一個Map來管理,所以,spring的bean的容器的底層存儲其實是用Map來實現的(這個之前面試被問過)。接下來,看看源碼的實現:

protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) {BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele);if (bdHolder != null) {//這個是對bean definition進行修改如果有必要,如配置了代理的bean等bdHolder = delegate.decorateBeanDefinitionIfRequired(ele, bdHolder);try {// Register the final decorated instance.BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry());}catch (BeanDefinitionStoreException ex) {getReaderContext().error("Failed to register bean definition with name '" +bdHolder.getBeanName() + "'", ele, ex);}// Send registration event.getReaderContext().fireComponentRegistered(new BeanComponentDefinition(bdHolder));}}

從源碼里可以看出,bean的解析類代理會去解析ele元素,并返回一個BeanDefinitionHolder的實例,而這個BeanDefinitionHolder我們可以簡單理解為BeanDefinition對象的持有對象。然后,通過調用BeanDefinitionReaderUtils工具類去執行具體的注冊操作。繼續看BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry())這個的實現如下:

public static void registerBeanDefinition(BeanDefinitionHolder definitionHolder, BeanDefinitionRegistry registry)throws BeanDefinitionStoreException {// Register bean definition under primary name.String beanName = definitionHolder.getBeanName();registry.registerBeanDefinition(beanName, definitionHolder.getBeanDefinition());// Register aliases for bean name, if any.String[] aliases = definitionHolder.getAliases();if (aliases != null) {for (String alias : aliases) {registry.registerAlias(beanName, alias);}}}

從上面代碼中,spring注冊bean其實注冊的是BeanDfinition,注冊bean其實就是綁定bean的name和BeanDfinition的關系。那么,我們繼續看看bean的具體注冊過程,代碼如下:

public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)throws BeanDefinitionStoreException {Assert.hasText(beanName, "Bean name must not be empty");Assert.notNull(beanDefinition, "BeanDefinition must not be null");if (beanDefinition instanceof AbstractBeanDefinition) {try {((AbstractBeanDefinition) beanDefinition).validate();}catch (BeanDefinitionValidationException ex) {throw new BeanDefinitionStoreException(beanDefinition.getResourceDescription(), beanName,"Validation of bean definition failed", ex);}}BeanDefinition oldBeanDefinition;oldBeanDefinition = this.beanDefinitionMap.get(beanName);if (oldBeanDefinition != null) {if (!isAllowBeanDefinitionOverriding()) {throw new BeanDefinitionStoreException(beanDefinition.getResourceDescription(), beanName,"Cannot register bean definition [" + beanDefinition + "] for bean '" + beanName +"': There is already [" + oldBeanDefinition + "] bound.");}else if (oldBeanDefinition.getRole() < beanDefinition.getRole()) {// e.g. was ROLE_APPLICATION, now overriding with ROLE_SUPPORT or ROLE_INFRASTRUCTUREif (this.logger.isWarnEnabled()) {this.logger.warn("Overriding user-defined bean definition for bean '" + beanName +"' with a framework-generated bean definition: replacing [" +oldBeanDefinition + "] with [" + beanDefinition + "]");}}else if (!beanDefinition.equals(oldBeanDefinition)) {if (this.logger.isInfoEnabled()) {this.logger.info("Overriding bean definition for bean '" + beanName +"' with a different definition: replacing [" + oldBeanDefinition +"] with [" + beanDefinition + "]");}}else {if (this.logger.isDebugEnabled()) {this.logger.debug("Overriding bean definition for bean '" + beanName +"' with an equivalent definition: replacing [" + oldBeanDefinition +"] with [" + beanDefinition + "]");}}this.beanDefinitionMap.put(beanName, beanDefinition);}else {if (hasBeanCreationStarted()) {// Cannot modify startup-time collection elements anymore (for stable iteration)synchronized (this.beanDefinitionMap) {this.beanDefinitionMap.put(beanName, beanDefinition);List<String> updatedDefinitions = new ArrayList<String>(this.beanDefinitionNames.size() + 1);updatedDefinitions.addAll(this.beanDefinitionNames);updatedDefinitions.add(beanName);this.beanDefinitionNames = updatedDefinitions;if (this.manualSingletonNames.contains(beanName)) {Set<String> updatedSingletons = new LinkedHashSet<String>(this.manualSingletonNames);updatedSingletons.remove(beanName);this.manualSingletonNames = updatedSingletons;}}}else {// Still in startup registration phasethis.beanDefinitionMap.put(beanName, beanDefinition);this.beanDefinitionNames.add(beanName);this.manualSingletonNames.remove(beanName);}this.frozenBeanDefinitionNames = null;}if (oldBeanDefinition != null || containsSingleton(beanName)) {resetBeanDefinition(beanName);}}

這段代碼還是比較容易理解的,首先先判斷容器里面有沒這個bean,沒有的話判斷是否在創建過程,如果不是直接將該bean注冊到容器里并設置其他信息。簡單的說,其實就是將一個個的bean的定義跟bean的名稱綁定起來,存放到map里面。至此,spring加載applicationContext.xml的大致流程已經說清楚了,不過這里面涉及很多比較細又難懂的類并沒有體現出來,最終要的是搞清楚spring加載配置文件的過程和注冊bean的過程。要想深入,可以繼續研讀源碼。

總結
通過該篇文章,我們弄清楚了spring的applicationContext.xml文件的加載和bean的注冊過程。可以說配置文件解析只是spring為了后續的bean的實例化操作的準備階段,即為需要實例化的bean準備bean definition。

覺得不錯請點贊支持,歡迎留言或進我的個人群855801563領取【架構資料專題目合集90期】、【BATJTMD大廠JAVA面試真題1000+】,本群專用于學習交流技術、分享面試機會,拒絕廣告,我也會在群內不定期答題、探討。

轉載于:https://blog.51cto.com/13981400/2371123

總結

以上是生活随笔為你收集整理的Spring源码解析-applicationContext.xml加载和bean的注册的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

日韩激情视频 | 99在线精品免费视频九九视 | 亚洲激情精品 | 久久久久福利视频 | 亚洲a色| 69国产盗摄一区二区三区五区 | 免费看日韩 | 免费观看性生活大片 | 一区二区三区不卡在线 | 黄色官网在线观看 | 久久99久久精品国产 | 狠狠狠色丁香婷婷综合久久88 | 久久精品国产免费观看 | 成人毛片在线观看视频 | 在线看成人 | 天天操操操操操 | 久久这里只有精品视频首页 | 在线 视频 一区二区 | 欧美国产日韩激情 | av线上免费观看 | 久久综合五月婷婷 | 国产日产av | 久久99网| 97在线观看免费高清 | 国产亚洲精品成人av久久影院 | a视频在线| 久久午夜色播影院免费高清 | 狠狠干中文字幕 | 国产精品 国内视频 | 少妇bbbb| 天天干天天搞天天射 | 五月婷婷丁香在线观看 | 久久麻豆视频 | 精品成人a区在线观看 | 免费av在| 中文字幕免费久久 | 久久精品国产一区二区 | 在线观看视频h | 久久精品在线视频 | 亚洲欧美日韩国产精品一区午夜 | 81国产精品久久久久久久久久 | 亚洲成色777777在线观看影院 | 91视频在线网址 | 国产精品成人a免费观看 | 亚洲欧美日韩一区二区三区在线观看 | 激情视频在线高清看 | 伊人成人激情 | 成人av中文字幕在线观看 | 国产精品一二三 | 日本精品视频一区二区 | 在线免费黄 | 亚洲国产精品资源 | 国产123区在线观看 国产精品麻豆91 | 国产尤物在线观看 | 日韩欧美一区二区不卡 | 特黄免费av | 国产亚洲精品久久久久久电影 | 日韩中文字幕免费视频 | 欧美精品亚洲精品日韩精品 | 91av在线视频播放 | 亚洲欧洲日韩在线观看 | 91一区啪爱嗯打偷拍欧美 | 激情xxxx | 91福利免费 | 国产精品18毛片一区二区 | 夜夜爱av | 日韩网站视频 | 国产精品嫩草影视久久久 | 一级片免费在线 | 顶级欧美色妇4khd | 91免费日韩 | 久久精品国产一区二区 | 欧美久久久影院 | 日韩电影一区二区在线观看 | 国产成人一级电影 | 俺要去色综合狠狠 | 国产又粗又猛又色又黄网站 | 成人av影院在线观看 | 狠狠色丁香久久婷婷综合丁香 | 日韩理论电影网 | 午夜精品三区 | 久久精品牌麻豆国产大山 | 久久久久久97三级 | 另类五月激情 | 久久久麻豆精品一区二区 | 草久久av | 国产精品视频永久免费播放 | 国产一区二区视频在线 | 麻豆精品视频在线观看免费 | 欧美黑吊大战白妞欧美 | 欧美性做爰猛烈叫床潮 | 国产午夜在线观看视频 | 在线电影a | 国产精品3 | 亚洲欧美精品在线 | www.天天成人国产电影 | 日本黄色大片免费看 | 亚洲免费精品视频 | 伊人婷婷综合 | 国产综合在线视频 | www.香蕉视频在线观看 | 丁香综合av | 久久精品在线视频 | 国产精品1区2区在线观看 | 免费一级片在线 | 国产成人av片 | 亚洲精品视频在线播放 | 99欧美精品 | 亚洲一二三在线 | 99久热在线精品视频 | 免费观看的av网站 | 韩日三级在线 | 最近更新中文字幕 | 日韩精品一区二区三区水蜜桃 | 久久久久久久久久久福利 | 久久久免费精品 | 一区二区丝袜 | 欧美精品一区二区在线观看 | 亚洲最新在线 | 亚洲一一在线 | 中文字幕在线观看第二页 | 欧美激情一区不卡 | 黄色一级在线免费观看 | 中文一区二区三区在线观看 | 在线看av网址| 免费日韩av片 | 亚洲成a人片77777kkkk1在线观看 | 天天操夜操 | 久久视频国产精品免费视频在线 | 国产精品男女视频 | 在线免费视频 你懂得 | 久久免费视频1 | 91丨精品丨蝌蚪丨白丝jk | 开心激情五月网 | 一级黄色网址 | 中文字幕资源在线 | 国产97色| 97色婷婷 | 狠狠干 狠狠操 | 天天操天天射天天 | 美女视频a美女大全免费下载蜜臀 | 国产亚洲精品综合一区91 | 国产日韩欧美在线观看视频 | 青春草免费在线视频 | 99久久精品日本一区二区免费 | 日韩国产在线观看 | 亚洲激情校园春色 | 日韩av在线小说 | av高清网站在线观看 | 麻豆国产网站入口 | 97超碰在线久草超碰在线观看 | 日韩欧美综合在线视频 | 高潮毛片无遮挡高清免费 | 亚洲成a人片77777潘金莲 | 欧美色道 | 五月婷婷伊人网 | 免费成人黄色片 | 中文字幕 婷婷 | 国产成年免费视频 | jizz欧美性9 国产一区高清在线观看 | 亚洲午夜久久久影院 | 午夜精品一区二区国产 | 一级片黄色片网站 | 日韩欧美专区 | 欧美,日韩| 草久在线观看视频 | 国产一区二区高清 | 亚洲男模gay裸体gay | 成人理论电影 | 国产香蕉在线 | 天天干,夜夜操 | 国产精品久久久久久久久久免费 | 婷婷六月丁香激情 | 91一区啪爱嗯打偷拍欧美 | 2018好看的中文在线观看 | 成人三级网站在线观看 | 最近中文字幕免费 | 国语黄色片 | 国产一级电影网 | 亚洲国产综合在线 | 久久99久久99精品免观看粉嫩 | 国产视频综合在线 | 日韩中午字幕 | 久久免费播放视频 | 91香蕉视频好色先生 | 天天干天天操天天拍 | 在线观看色网 | 国产精品美女在线 | 91九色精品 | 日本中文字幕在线 | 美女福利视频 | 91精品导航 | 中文字幕综合在线 | 国产精品免费久久久久影院仙踪林 | 97超碰人人澡人人爱 | 美女网站视频久久 | a国产精品 | 欧美日韩99| 久久字幕 | 欧美色图一区 | 天天操夜操视频 | 玖玖999| 日本久久久久久科技有限公司 | 久久综合一本 | 日精品在线观看 | 日韩中文在线视频 | 天天操天天能 | 久久字幕 | 国产999在线观看 | 国产黄色片久久 | 国产精品毛片 | 四虎国产精品成人免费4hu | 国产精品9999久久久久仙踪林 | 免费麻豆视频 | 国产三级午夜理伦三级 | 成人在线观看资源 | 国产成人亚洲在线观看 | 久久99亚洲精品久久 | 国产一区二区三区免费在线观看 | 99热在线看 | 97国产一区| 久久高清 | 天天射射天天 | 91av电影在线观看 | 男女免费视频观看 | 国产麻豆视频 | 久久久精品免费看 | 亚洲精品国产精品久久99 | 国产91大片| 亚洲va欧美va国产va黑人 | 免费福利在线观看 | 日韩在线观看网站 | 久久免费视频这里只有精品 | 美女黄濒 | 国产专区一 | 六月丁香综合网 | 亚洲综合一区二区精品导航 | 国产在线精品一区 | 久草在线免费资源站 | 黄色精品久久 | 日本h视频在线观看 | 99久久精品免费看国产免费软件 | 在线观看中文字幕一区二区 | 一级黄色片在线免费观看 | 中文字幕在线播放一区二区 | 亚洲激情一区二区三区 | 精品一区二区av | 久久丁香网 | 久久精品国产一区二区三 | 久草 | 国产精品美乳一区二区免费 | 亚洲视频www | 国产精品午夜在线观看 | 国产精品久久久久婷婷二区次 | 69视频在线播放 | 在线久热 | 久久久久久久久久久久国产精品 | 狂野欧美激情性xxxx欧美 | 日韩av电影中文字幕 | 色综合色综合色综合 | 91精品在线免费观看 | 国产黄色播放 | 欧美激情精品久久久久 | 一区二区精品在线视频 | av片在线观看免费 | 成人在线你懂得 | www.操.com| 色综合狠狠干 | 久草在线视频首页 | 久久97超碰| 国产精品美女久久久久久久久 | 九九99 | 99视频一区 | 91在线91拍拍在线91 | 久久视频精品在线 | 久久国产一区二区三区 | 国产小视频在线观看免费 | 久久精品国产免费看久久精品 | 国内视频一区二区 | 伊人五月天婷婷 | 国产免费视频一区二区裸体 | 亚洲精品久久在线 | 91精品秘密在线观看 | 91在线免费看片 | 色综合久久久久久中文网 | 午夜精品久久久久久 | 开心激情久久 | 欧美日韩精品在线观看 | 夜夜躁日日躁狠狠久久av | 激情网婷婷 | 在线观看国产高清视频 | 国产在线播放一区二区 | 日日久视频| 天天拍天天草 | 亚洲专区在线播放 | 一二三区av | 国产午夜精品视频 | 国产热re99久久6国产精品 | 久久论理 | 亚洲五月六月 | 久久久色 | 国产一级在线视频 | 91大神精品视频在线观看 | 国产美女在线观看 | 999国产在线| av看片网| www.在线观看av | 国产成人av网 | 国产精品乱码久久久久久1区2区 | 成人免费在线观看av | 欧美日韩一区二区三区在线免费观看 | 天天操夜夜操 | 在线观看91网站 | 天堂在线一区二区 | 激情网站网址 | 免费色黄 | 深夜免费小视频 | 久久免费看毛片 | 福利电影一区二区 | 国产精品麻豆99久久久久久 | 天天爱天天操天天射 | 日韩电影久久久 | 国产免费视频一区二区裸体 | 狠狠的干 | 免费视频97 | 国产精品久久久久永久免费观看 | 午夜精品一区二区三区在线视频 | 丁香色天天 | 免费观看久久久 | 在线观看的av | 蜜臀久久99精品久久久酒店新书 | 天天摸天天操天天爽 | 91视频免费观看 | 免费看高清毛片 | 免费高清无人区完整版 | 中文在线最新版天堂 | 黄色影院在线播放 | 久久成熟 | 国产在线视频导航 | 91av视频在线免费观看 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 在线视频a | 午夜影视一区 | 成人免费视频播放 | 欧美性极品xxxx娇小 | 色综合天天爱 | 黄色午夜网站 | 国产黄色精品网站 | 九九热在线视频免费观看 | 日韩,精品电影 | 97国产一区 | av视屏在线 | 成人av久久 | 在线一区观看 | 超碰激情在线 | 久久午夜国产精品 | 国产又粗又硬又爽的视频 | 欧美日韩不卡在线视频 | 久久精品国产亚洲精品2020 | 亚洲狠狠婷婷综合久久久 | 日韩高清精品一区二区 | 亚洲一级片免费观看 | 精品久久久久久久久久久久久久久久 | a在线视频v视频 | 93久久精品日日躁夜夜躁欧美 | 高清在线观看av | 91成人免费观看视频 | 国产精品毛片一区视频播不卡 | 日韩欧美中文 | 天天爱天天舔 | 99热在线精品观看 | 久久久久激情 | 免费成人短视频 | 99精品国产在热久久下载 | 精品99久久 | 成人av在线直播 | 国产精品日韩欧美 | 国产97在线观看 | 欧美在线一二区 | 精品久久久一区二区 | 在线亚洲午夜片av大片 | 久久国产精品区 | 狠狠色香婷婷久久亚洲精品 | 久久精品综合 | 麻豆视频成人 | 黄色成人在线观看 | 九九九九九国产 | 在线亚洲人成电影网站色www | 色综合久久五月 | 在线观看第一页 | 国产韩国日本高清视频 | 日日干网| 在线观看黄色国产 | 免费观看完整版无人区 | 国产 成人 久久 | 日本一区二区三区视频在线播放 | 欧美一区免费在线观看 | 奇米影视777四色米奇影院 | 国产免费观看久久黄 | 国产精品手机在线播放 | 国产一区二区三区视频在线 | 99热最新精品 | 婷婷久久亚洲 | 国产手机在线精品 | 永久免费看av | 久久艹影院 | 国产免费一区二区三区网站免费 | 日夜夜精品视频 | 天堂av一区二区 | 日韩色区| 久久久久久久久久久免费av | 久久96| 91成人免费看片 | 超碰在线91 | 亚洲黄污| 国产精品成人一区二区三区吃奶 | 91禁看片 | 美女免费视频黄 | 精品视频亚洲 | av成人亚洲 | 日韩电影在线一区 | 欧美一级日韩免费不卡 | 国产精品免费久久久久 | 五月婷婷久草 | 区一区二区三在线观看 | 网址你懂的在线观看 | 久久久免费视频播放 | 91香蕉视频 mp4 | 成人日批视频 | 久久精品日产第一区二区三区乱码 | 中文字幕不卡在线88 | 久久久综合九色合综国产精品 | 亚洲视频中文 | 亚洲一区视频在线播放 | 精品免费久久久久 | 在线观看欧美成人 | 国产原创av在线 | 999久久精品 | 日韩精品中文字幕一区二区 | 成人午夜电影在线 | 中文字幕在线专区 | 精品在线免费观看 | 日韩二区在线播放 | 2018亚洲男人天堂 | 久草青青在线观看 | 中文字幕 91 | 在线看国产精品 | 97超碰人人澡 | 亚洲伊人色 | 日韩精选在线 | 天天干,天天插 | 国产色就色 | 久草在线免费色站 | 亚洲成人av片在线观看 | 免费视频久久久久 | 免费视频区 | www久久com| 久久高清国产视频 | 中文字幕日本特黄aa毛片 | 免费在线观看的av网站 | 热久久视久久精品18亚洲精品 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 91热精品 | 国产字幕在线观看 | 久久久精品欧美一区二区免费 | 欧美极品xxxxx | 黄网站免费大全入口 | 亚洲做受高潮欧美裸体 | 国产最新在线视频 | 国产精品中文字幕av | 天天射天天爱天天干 | 啪一啪在线| wwwwwww色 | 国产一级视频免费看 | 综合网天天色 | 欧美一级看片 | 久久精品视频中文字幕 | 97综合在线 | 五月天天在线 | 久久视频国产精品免费视频在线 | 最近中文字幕在线播放 | 久久久久国产精品一区二区 | 国产在线一区观看 | 亚洲美女视频在线观看 | 涩涩在线| 久久精品国产第一区二区三区 | 99免费在线 | 国产精品久久久久久久av大片 | 欧美淫aaa免费观看 日韩激情免费视频 | 91人人视频在线观看 | 日韩在线精品 | 99热这里精品 | 成人蜜桃| 97在线观看免费视频 | 国产精品岛国久久久久久久久红粉 | 中文字幕在线观看免费观看 | 中文字幕影片免费在线观看 | 九九九电影免费看 | 美女黄频免费 | 久久久蜜桃一区二区 | 在线免费观看一区二区三区 | 成人黄色电影在线 | 天天操夜操视频 | 美女免费黄视频网站 | 国产视频观看 | 免费国产在线观看 | 日韩在线观看一区二区 | 黄色av一区 | 成人中文字幕+乱码+中文字幕 | 久久精选视频 | 亚洲视频在线看 | 天天天天天天天天操 | 国产精品一区二区在线播放 | 性色av免费看 | 在线视频观看成人 | 久久精品福利 | 国产日韩精品在线观看 | 国产无吗一区二区三区在线欢 | 久久国产高清视频 | 久久艹免费 | 视频在线一区二区三区 | 久久99网站 | 青草视频在线播放 | 亚洲国产小视频在线观看 | 日韩色在线 | 最新午夜电影 | 丰满少妇在线观看网站 | 亚洲日本va午夜在线影院 | 日韩欧美一区二区三区在线 | 999久久久欧美日韩黑人 | 久久久久久久久久久久av | 99精品视频免费全部在线 | 亚洲天堂网视频在线观看 | 香蕉影视在线观看 | 免费在线播放黄色 | 97涩涩视频 | 中文字幕高清免费日韩视频在线 | 91成人天堂久久成人 | 国产1区2 | 98精品国产自产在线观看 | 五月情婷婷 | 久久久久国产免费免费 | 国产精品久久久久久久久久不蜜月 | 手机在线看a | 精品999久久久 | 啪啪免费试看 | 亚洲综合丁香 | 日韩av偷拍 | 91精品国自产在线观看 | 午夜狠狠操 | 日韩在线精品 | 韩日av在线 | 国产免费观看高清完整版 | 视频1区2区| 草在线| 国产一区二区日本 | 黄av资源 | 人人要人人澡人人爽人人dvd | 亚洲视频综合在线 | 天天躁日日| 黄视频色网站 | 久久电影国产免费久久电影 | 国产成人精品一二三区 | 欧美日韩国产一区二 | 月丁香婷婷 | 久久国产色 | aaa黄色毛片 | 亚洲精品人人 | av夜夜操| 国产免费叼嘿网站免费 | www.色五月.com | 日韩一区二区在线免费观看 | 久草在线免费看视频 | 青草视频在线免费 | 91免费日韩 | 涩涩网站在线看 | 久久久久免费 | av在线免费网站 | 久久影视一区 | 久久开心激情 | 久久免费视频在线观看6 | 亚洲成人av在线播放 | 在线观看91精品视频 | 久久中文网 | 亚洲免费观看视频 | 麻豆精品视频 | 日批在线看 | 亚洲精品国产欧美在线观看 | 在线探花| 99欧美视频 | av播放在线 | 天天天干| 欧美日韩精品在线观看视频 | 江苏妇搡bbbb搡bbbb | 久久99精品国产91久久来源 | 精品国产一区二区三区四区在线观看 | 久精品视频免费观看2 | 久久99精品波多结衣一区 | 999国产在线 | 亚洲区另类春色综合小说 | 国产成人av | 色婷婷综合成人av | 国产精品久久久久久久久免费看 | 黄色资源在线观看 | 香蕉看片 | 欧美成人精品三级在线观看播放 | 欧美一区二视频在线免费观看 | 九九热免费精品视频 | 97在线免费视频观看 | 久久av免费 | 午夜精品福利影院 | 久久网站最新地址 | 成人免费视频观看 | 国产亚洲精品bv在线观看 | 91香蕉视频| 日日天天av | 欧美一级激情 | 国产精品午夜在线 | 91久久国产露脸精品国产闺蜜 | 一区二区三区在线看 | 色综合天天做天天爱 | 成人影片在线播放 | 丁香六月av | 日本h在线播放 | 99综合视频| 麻豆影视在线免费观看 | 精品中文字幕在线播放 | 婷婷综合视频 | 在线观看中文字幕网站 | 91精品第一页 | 国产精品自产拍在线观看蜜 | 亚洲区另类春色综合小说 | 国产999精品久久久久久绿帽 | 亚洲最新精品 | 国产高清av | 又黄又爽又刺激的视频 | 亚洲欧美婷婷六月色综合 | 午夜婷婷在线观看 | 久久久视频在线 | 日韩精品一区二区免费视频 | 国产99久久久精品 | 天天夜夜亚洲 | 欧美一级视频在线观看 | 黄色软件视频大全免费下载 | 亚洲国产大片 | 婷婷国产在线 | 久久九九精品 | 久久成人精品视频 | 国产一区二区网址 | 欧美性做爰猛烈叫床潮 | 亚洲国产精品电影在线观看 | 精品久久久影院 | 欧洲精品码一区二区三区免费看 | av丝袜在线 | 久久99精品国产麻豆婷婷 | 综合国产视频 | 久久福利剧场 | 国产裸体bbb视频 | 欧美日本三级 | 中文字幕丝袜制服 | 伊人激情综合 | 久草精品资源 | 99r在线精品| 日本黄色免费网站 | 在线亚洲观看 | 日韩女同一区二区三区在线观看 | 五月综合色| 在线看黄色的网站 | 国产永久网站 | 伊人婷婷久久 | 国产小视频你懂的在线 | 久久不见久久见免费影院 | 97在线看 | 免费久久久久久 | 久久久久久久久久久久av | 国产精品 9999 | 色视频网站在线 | 成人久久免费视频 | 2023亚洲精品国偷拍自产在线 | 精品国产免费看 | 日日干日日 | 亚洲精欧美一区二区精品 | 九九久久久久久久久激情 | 中文字幕五区 | 在线看成人 | 亚洲国产精品久久久久久 | 成人羞羞视频在线观看免费 | 91久久一区二区 | 在线精品观看 | 婷婷色综合网 | 精品999国产 | 久久免费福利视频 | 高清中文字幕av | 成人免费在线观看入口 | 中文字幕a在线 | 国产精品6 | 日韩乱码中文字幕 | 色网站黄 | 色七七亚洲影院 | 在线精品一区二区 | 日本精品视频网站 | 色综合天天在线 | 片网站 | 久久999精品 | 中文字幕在线观看网站 | 久爱精品在线 | 欧洲激情综合 | 欧美日本高清视频 | 亚洲成av人片在线观看香蕉 | 天天爱天天操天天射 | 天天爽天天爽 | 一级黄色片毛片 | 四虎成人免费影院 | 黄色三级免费观看 | 伊人婷婷色 | 日韩久久精品一区二区 | 午夜精品中文字幕 | 天天干,天天射,天天操,天天摸 | 国产色网| 亚洲第一av在线播放 | 国产精选在线 | 日韩久久久久久 | 激情五月av | 国产精品青草综合久久久久99 | 91免费在线看片 | 天天摸日日摸人人看 | 激情偷乱人伦小说视频在线观看 | 在线观看视频国产一区 | 天天看天天干 | 国产免费av一区二区三区 | 97超碰在线免费观看 | 中文字幕精品视频 | 国产亚洲欧美日韩高清 | 日本三级中文字幕在线观看 | 在线观看精品黄av片免费 | 99视频精品视频高清免费 | 成人一级免费视频 | 国产精品免费久久久久 | 国产在线观看你懂得 | 99视频精品 | 91成人网在线播放 | 手机在线欧美 | 在线观看日韩免费视频 | 日本精品视频免费观看 | 亚洲在线看 | 黄色av一级片 | 久久国产精品99久久久久 | 伊人丁香 | 国产在线观看你懂的 | 日本黄区免费视频观看 | 99精品热| 97超视频 | 一区二区欧美日韩 | 在线中文字幕视频 | 久久99这里只有精品 | 97超碰国产精品女人人人爽 | 91亚色视频 | 美腿丝袜av| 99视频+国产日韩欧美 | 亚洲国产精品影院 | 成人久久精品 | 色久av| 狠狠色网| 久久精品网站免费观看 | 日韩av电影中文字幕在线观看 | 精品亚洲在线 | 青青啪 | 91人人干 | 欧美夫妻性生活电影 | 亚洲精品在线免费观看视频 | 探花视频在线观看免费 | 亚洲精品一区二区三区在线观看 | 九九热在线观看 | 欧美日韩视频一区二区三区 | 久久国产精品久久精品国产演员表 | 国产日产精品一区二区三区四区的观看方式 | 韩国av电影在线观看 | 久久激情综合 | 91久久人澡人人添人人爽欧美 | 午夜精品久久久久久久99水蜜桃 | 奇米影视777影音先锋 | 久久久免费播放 | 黄色影院在线播放 | 久久人人爽爽 | 最近日本中文字幕a | 中文在线天堂资源 | 久久视频精品 | 免费一区在线 | 国产成人精品综合 | 日韩亚洲在线观看 | 日韩激情久久 | 国产精品成人一区二区三区吃奶 | 91亚洲狠狠婷婷综合久久久 | 99视频精品全部免费 在线 | 五月婷婷在线视频 | 九色在线视频 | 在线免费观看一区二区三区 | 久久精品视频播放 | 国产精品va在线观看入 | 天天搞天天干 | 日韩免费观看高清 | 欧美精品久久久久久久久久 | 亚洲免费公开视频 | 国产又黄又猛又粗 | 日日夜夜91 | 丁香花中文在线免费观看 | 国产精品久久久免费看 | 国产精品高潮在线观看 | 99久久精品国产欧美主题曲 | 日韩在线观看视频一区二区三区 | 日韩欧美视频二区 | 五月在线 | 亚洲另类人人澡 | 精品久久一区二区三区 | 国产精品国产三级国产aⅴ9色 | 高清av在线免费观看 | 日韩免费电影 | 韩日精品中文字幕 | 免费日韩 | 午夜12点 | 狠狠色丁香婷婷综合欧美 | 免费视频成人 | 香蕉日日 | 久草视频在线新免费 | 天天综合中文 | 99精品乱码国产在线观看 | 日韩欧美精品在线观看视频 | 在线观看mv的中文字幕网站 | 天堂av在线免费 | 久久夜色精品国产欧美乱 | 亚洲国产理论片 | 日韩在线视频播放 | 国产一级黄色av | 国产精品久久综合 | 天天干天天上 | 免费涩涩网站 | 免费三级大片 | 国产精品国产三级国产不产一地 | 亚洲欧美婷婷六月色综合 | 91 在线视频 | 亚洲精品国产自产拍在线观看 | 欧美日韩亚洲国产一区 | 免费h视频 | 久久久久久久久久伊人 | 日本精品视频在线 | 中文字幕日韩高清 | 免费看的黄色 | 视频二区在线视频 | 亚洲精品国产精品99久久 | 国产色中涩| 免费在线一区二区三区 | 婷婷播播网 | 夜夜骑首页 | 久久久国产精品久久久 | 97精品国自产拍在线观看 | 狠狠色丁香婷婷综合橹88 | 欧美日韩国产区 | 国内精品视频在线播放 | 国产一区二区在线免费 | 丁香激情视频 | 久久精品—区二区三区 | 91丨九色丨蝌蚪丨对白 | 中文字幕免费观看全部电影 | 国际精品久久久久 | 超碰国产在线播放 | 国模精品在线 | 狠狠干狠狠插 | 亚洲美女视频在线观看 | 精品国自产在线观看 | 婷婷射五月 | 亚洲另类久久 | 网站在线观看日韩 | 日日躁你夜夜躁你av蜜 | 久久成人视屏 | 精品成人a区在线观看 | 丁香花中文字幕 | 99久久精品国产系列 | 成人免费共享视频 | 精品国产一区二区三区久久影院 | 久久精品精品电影网 | 亚洲天堂精品视频在线观看 | 91视频亚洲 | www.夜夜操.com | 国产福利91精品一区二区三区 | 久青草电影 | 人人干狠狠操 | 97超碰在线免费观看 | 国产成人一区二 | 婷婷丁香激情五月 | 国产精品99在线观看 | 天天射天天干天天操 | 中国精品少妇 | 国产中文字幕第一页 | 国产四虎在线 | 91在线视频播放 | 成人午夜电影网站 | 婷婷丁香花 | 91九色蝌蚪视频 | 手机成人av在线 | 久久精品一二三区白丝高潮 | 人人爽人人舔 | 久久av中文字幕片 | 中文字幕乱码日本亚洲一区二区 | 日韩在线观看高清 | 日韩免费三级 | 国产精品va在线观看入 | 国产精品视频在线看 | 午夜免费福利视频 | 免费观看一级 | 91精品国产综合久久久久久久 | 亚洲精品在线视频播放 | 操操碰| 精品国产午夜 | 97在线观看免费高清完整版在线观看 | 国产91丝袜在线播放动漫 | av黄色在线观看 | 中文字幕乱码在线播放 | 狠狠躁18三区二区一区ai明星 | 日韩一区二区三区视频在线 | 九九视频网站 | 亚洲一二视频 | 人人爽人人香蕉 | 亚洲视频免费在线观看 | 在线视频 国产 日韩 | 成人精品福利 | 亚洲欧美日韩国产精品一区午夜 | 国产精品18久久久久vr手机版特色 | 91成人午夜 | 在线观看国产成人av片 | 欧美一区三区四区 | 亚洲综合干 | 永久免费精品视频 | 美女视频久久黄 | 亚洲资源在线 | 亚洲五月婷 | 久久午夜免费视频 | 亚洲国产电影在线观看 | 天天色天天操综合 | 操操综合网 | 五月婷婷黄色网 | 成人资源在线观看 | 综合天堂av久久久久久久 | 韩国av在线播放 | 四虎国产 | 亚洲一区二区精品视频 | 国产乱对白刺激视频不卡 | 久久噜噜少妇网站 | 欧美激情第28页 | 免费福利片2019潦草影视午夜 | 日韩免费av片 | 成人免费视频在线观看 | 黄色成年片 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产精品国产三级国产不产一地 | 久久99精品国产麻豆婷婷 | 久香蕉| 亚洲japanese制服美女 | 超碰久热 | 中文亚洲欧美日韩 | 999电影免费在线观看 | 亚洲精品毛片一级91精品 | 一级黄视频| 高清不卡毛片 | 天天插日日射 | 91大神在线看 | 一区二区视频免费在线观看 | 97国产情侣爱久久免费观看 | 伊人亚洲综合 | 97激情影院 | 成年人黄色av | 在线亚洲成人 | 91av视频播放 | 在线观看免费高清视频大全追剧 | 97超碰人人模人人人爽人人爱 | 国产精品一区二区三区在线 | 久久成人精品电影 | free,性欧美| 国产高清免费在线观看 | 国产成人99久久亚洲综合精品 | 69国产成人综合久久精品欧美 | 天堂av网址 | 日韩一区二区免费在线观看 | 婷婷新五月| 免费三级影片 | 国产视频一区在线免费观看 | 在线观看网站你懂的 | 黄色av网站在线免费观看 | 国产一级特黄毛片在线毛片 | 香蕉蜜桃视频 | 在线成人免费电影 | 精品国产免费一区二区三区五区 | 日本中文在线 | 亚洲一级在线观看 | 91麻豆精品国产91久久久无限制版 | 中文字幕国产一区 | 免费网址你懂的 | 免费激情网 | 国产亚洲精品中文字幕 |