精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于Groovy 加速Google App Engine開發

開發 后端
在 Google App Engine 推出后,各類加速該引擎上應用程序開發的框架隨之涌現。使用 Groovy 編寫的 Gaelyk 框架就屬于其中之一,它的作用是簡化利用 Google App Engine 數據存儲的輕量級應用程序的開發。本文將介紹此框架。

本文是IBM developerworks上針對Java 2.0開發系列文章的***一篇,講述了一個基于Groovy的框架Gaelyk是如何加速在Google App Engine上的開發的。原文標題為《Java 開發 2.0: 針對 Google App Engine 的 Gaelyk》。

系列 將探討對于如今及未來的 Java 開發的發展起決定作用的各個技術方面。Java 開發 2.0 的前提開發速度將越來越快,這要歸功于開源領域中的創新以及硬件的商業化。您可以租借其他人的硬件平臺來托管自己的應用程序(主要使用開源庫、工具和框架來裝配),成本只包括獲取和維護自己的基礎設施。

本系列的***期 “使用 Google App Engine” 討論了免費租借 Google 的基礎設施來托管您的 Java 應用程序(不過會犧牲少許靈活性)的概念。在后續文章中,您了解了 App Engine 和 Amazon 的 EC2 之間的差異。上個月的文章 “通過 CouchDB 和 Groovy 的 RESTClient 實現 REST” 調查了關系數據庫的潛在替代方案:CouchDB。CouchDB 缺少模式以及其面向文檔的特性對您來說可能有點新鮮,但您已經目睹了 Google App Engine 實現的另一個無模式數據存儲。

本文又將回過頭來討論 Google App Engine。開源世界已經跳上了 App Engine 列車,針對該平臺的應用程序開發加速架構層出不窮。您將了解 Gaelyk 框架如何利用本系列已經介紹的許多技術來進一步簡化應用程序的開發。

輕量級是全新的趨勢

雖然 Google 的基礎設施大多是可以免費使用的(當存儲空間和帶寬達到 500MB,每月頁面訪問量達到大約 5 百萬次時便要收費),但它會在一定程度上犧牲一些靈活性。Google 的基礎設施支持 Java 技術,但這并不包括所有 的核心 Java 庫和相關開源庫。App Engine 是一個平臺 — 您需要基于它進行開發。但不足為奇的是,開源創新將幫助克服采用 Google App Engine 過程中的障礙。

Gaelyk 框架就是這種項目的一個典型,其目的是加速輕量級應用程序的開發,即使用 Groovy 開發的、適當利用模型-視圖-控制器 (MVC) 模式的應用程序。在 Groovy 的魔力下,Gaelyk 將為 App Engine 的 API 注入一些易用性因素。此外,您還可以將 Gaelyk 與針對 Eclipse 的 Google App Engine 插件結合使用。快速開發和部署 Google App Engine 應用程序將變得非常簡單。

 

通過 CouchDB 和 Groovy 的 RESTClient 實現 REST” 利用一個停車罰單系統演示了面向文檔的數據庫的特性。在本文中,我將繼續創建一個支持創建、更新和刪除停車罰單的 Web 應用程序。Google 持久性架構不是面向文檔的,但其無模式特性實現了一個更加靈活的模型。因此,Web 將盡可能準確地建立一個停車罰單模型,這需要獲取:

  • 警官姓名
  • 日期
  • 位置
  • 違規情況
  • 任何相關注釋

我保留位置為一個普通的文本框,因為一些人可以使用各種方式來表示違規發生的位置 — 比如在 Best Buy 的停車區 或者在 18 號街和 D 大街的拐角處。實際上,我不會嘗試描述一個特定格式,因為它不一定適合這個域。

首先,您需要安裝針對 Eclipse 的 Google App Engine 插件。您還需要從項目的網站下載 Gaelyk JAR 文件。記住這個下載的位置,因為您隨后需要將它移動到一個特定的目錄中。

Gaelyk 框架依賴于 Groovy,因此您還需要***的 Groovy 發行版:在撰寫本文時,它是一個簡單的 JAR 文件,即 groovy-all-1.6.5.jar。***,您需要通過 Google App Engine 管理面板創建一個應用程序 ID。(如果愿意,您可以重用在 “使用 Google App Engine” 中創建的應用程序 ID)。

接下來,在 Eclipse 中創建一個新的 Google Web Application Project,單擊 Next 按鈕并填入適當的信息。確保取消選中了 Use Google Web Toolkit 選項,如圖 1 所示,因為您不需要它:

圖 1. 在 Eclipse 中創建一個 Google Apps Project

在 Eclipse 對話框中創建一個新的 Google Apps Project

單擊 Finish 按鈕,您將建立好代碼基礎。

現在,將 Groovy 和 Gaelyk JAR 復制到新創建項目的 war/WEB-INF/lib 目錄中,如圖 2 所示:

圖 2. Gaelyk 的必需庫

新創建項目的 war/WEB-INF/lib 目錄,Groovy 和 Gaelyk JAR 已復制到其中

要配置 Gaelyk,您需要為 Google App Engine 提供一些額外的信息,方法是編輯 WEB-INF/appengine-web.xml 文件。將您的應用程序 ID 添加到此文件頂部的應用程序部分,并添加一些 XML,如清單 1 所示:

清單 1. 對 App Engine 配置的必要更新

				
<static-files>
 <exclude path="/WEB-INF/**.groovy" />
 <exclude path="**.gtpl" />
</static-files>

添加這些內容將防止 Google App Engine 靜態提供最終在使用 Gaelyk 時會創建的各種文件。如您所見,Gaelyk 將利用一個模板模型。因此,使用 .gtpl 擴展名的文件將類似于 JavaServer Pages (JSP) 并且將通過框架而非 App Engine 進行處理。

接下來,打開 web.xml 文件。該文件也可以在 WEB-INF 目錄中找到。它是標準的 Web 應用程序配置文件。(您將在初次訪問 App Engine 和 EC2 時操作此文件。)該文件需要將各種模式映射到特定的 servlet,因此根據清單 2 調整您的文件:

清單 2. 更新后的 web.xml 文件

				
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
 <servlet>
  <servlet-name>GroovletServlet</servlet-name>
  <servlet-class>groovyx.gaelyk.GaelykServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>TemplateServlet</servlet-name>
  <servlet-class>groovyx.gaelyk.GaelykTemplateServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>GroovletServlet</servlet-name>
  <url-pattern>*.groovy</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>TemplateServlet</servlet-name>
  <url-pattern>*.gtpl</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.gtpl</welcome-file>
 </welcome-file-list>
</web-app>

注意,web.xml 文件指定 welcome 文件為 index.gtpl;因此,將 Eclipse 插件為您生成的 index.html 文件重命名為 index.gtpl。(如果使用 Windows® 操作系統,則只需選擇文件并按下 F2。)

安置好適當的庫并正確配置了兩個 XML 文件之后,您可以驗證一切是否運行正常,這需要編輯 index.gtpl 文件讓它匹配清單 3 的內容:

清單 3. 一個簡單的 GTPL 文件

				
<html>
 <head><title>A Simple GTPL</title></head>
  <body>
   <b><% print "Hello Gaelyk!".replace(" ", " from ") %></b>
   <p>
   <ol>
    <% def wrd = "Groovy"
       wrd.each{ letter ->
    %>
    <li><%= letter %></li>
    <% } %>
   </ol>
   </p>
  </body>
</html>

#t#可以看到,Gaelyk 中的 GTPL 文件(或 Gaelyk/Groovy 模板)類似于 JSP: 您可以在 scriptlet 中添加行為(在本例中,添加的行為是 Groovy)。注意,稍后您也可以使用閉包和引用變量。

保存您的 index.gtpl 文件在 Eclipse 中選擇項目的基本目錄,單擊鼠標右鍵,選擇 Run As 并選擇包含藍色 G 徽標的 Web Application 選項,如圖 3 所示:

圖 3. 作為 Google Web 應用程序運行

選擇包含藍色 G 徽標的 Web Application 選項

默認情況下,此啟動程序將在端口 8080 上啟動一個本地 Jetty 實例。如果要更改端口,請選擇 Run Configurations 選項并通過插件提供的選項面板配置端口。

運行 Gaelyk Web 應用程序的本地實例之后,打開一個 Web 瀏覽器并訪問 http://localhost:8080。index.gtpl 的輸出應如圖 4 所示:

圖 4. Hello world!

index.gtpl 在 http://localhost:8080 中的輸出

非常簡單,不是嗎?

#p#

簡單的持久性

罰單系統非常簡單。它提供了一個 Web 表單,可用于創建罰單以及在列表中查看、刪除和編輯罰單。我首先將通過 Gaelyk 模板創建一個簡單的 HTML 表單,并將它命名為 createticket.gtpl。如圖 5 所示,這個表單將嘗試捕獲與各停車罰單相關的數據:

圖 5. 一個簡單的罰單表單

一個簡單的空白罰單表單

表單將提交給一個 groovlet;相應地,在項目的 WEB-INF 目錄中創建一個 groovy 文件夾。您的 groovlet 將存放在此處。(您在 “使用 Google App Engine” 中也完成了此操作。創建罰單(create-ticket)表單將提交給一個 createticket.groovy 文件。在新創建的 groovy 目錄中創建此文件。

毫無疑問,您可以在 Gaelyk 中使用 JDO 和 Java Persistence API (JPA) 代碼,但是也可以采用另外一種方法來與底層數據存儲交互:即使用 Google 的 Entity 對象。Gaelyk 團隊已憑借一些 Groovy 魔力簡化了持久對象的操作,從而增強了 Entity 對象。

在本例中,我希望獲取通過 createticket.gtpl 頁面提交的表單元素,并在系統中創建一個新罰單。通過使用 Entity 類,我不需要定義一個類似于 POJO 的對象來表示罰單(就像我在 “使用 Google App Engine” 中創建 Triathlon JDO 對象時所做的一樣)。我可以采用 Groovy 的方式建立一個罰單模型,并毫不費力地保存它。

因此,我可以通過 Gaelyk 的 params 對象(Grails 也以某種形式提供了此對象)獲取由表單提交的參數,并創建一個 Entity 實例,如清單 4 所示:

清單 4. 創建一個 Entity

				
def formatter = new SimpleDateFormat("MM/dd/yyyy")
def offensedate = formatter.parse("${params.of_month}/${params.of_day}/${params.of_year}")

def ticket = new Entity("ticket")
ticket.officer = params.officer
ticket.license = params.plate
ticket.issuseDate = offensedate
ticket.location = params.location
ticket.notes = params.notes
ticket.offense = params.offense

注意,ticket 變量是 Entity 的一個實例。"ticket" String 表示的就是這種實體。它可以非常便捷地搜索罰單。接下來,我將自動為與罰單相關的 Entity 實例分配屬性值。現在,ticket.officer 表示通過 Web 頁面表單提交的 officer 參數的值。由于該表單包含三個日期字段,我也使用 SimpleDateFormat 創建一個日期實例,并將該值設置為 issueDate

至此,我已經創建一個用于表示罰單的對象。現在,我要做的就是使用以下代碼保存它:

ticket.save()

現在,我已經持久化了一個罰單,我將把用戶定向到一個可查看罰單的頁面。這也非常簡單。我只需要定向到 view-ticket Groovlet(以便處理):

redirect "viewticket.groovy?id=${ticket.key.id}"

如您所見,我已經創建了一個名稱為 id 的參數,并將它設置為已保存罰單(由 Google App Engine 生成)實例的鍵。可見,create-ticket Groovlet 非常簡明和強大 — 這得益于 Gaelyk。

簡易視圖

在上一個示例中,當我創建了 ticket 實例之后,我繼續將請求重定向到另一個 Groovlet — 它可以簡化罰單的查看過程。在此 Groovlet 中,我編寫了一個 Google App Engine “read”。傳遞的 id 將用于查找新創建的實例。在本例中,我將使用 Google 的 KeyFactory,它用于創建 Google 的 Key 對象的實例。然后,Key 將用于通過 datastoreService 查找相應的罰單實例,而 Gaelyk 已將它們添加到框架中的任何 Groovlet 實例中,如清單 5 所示:

清單 5. 查看 Entity

				
import com.google.appengine.api.datastore.KeyFactory

if (params["id"]) {
 def id = Long.parseLong(params["id"])
 try {
   def key = KeyFactory.createKey("ticket", id)
   def ticket = datastoreService.get(key)

   request.setAttribute "ticket", ticket

   forward "viewticket.gtpl"

   } catch (Throwable t) {
    //forward to some error page...
   }
} else {
 forward "index.gtpl"
}

找到相應的 ticket 之后,罰單將被添加到 HTTP request 對象(它已經出現在 Groovlet 中),然后將處理轉交給 viewticket.gtpl 頁面。與 Web 應用程序中的任何其他 JSP 一樣,這個 Web 頁面將顯示與傳入罰單相關的相應屬性。

從清單 6 中可以看出,Gaelyk 支持 includes。也就是說,在您的 .gtpl 文件中,您可以包括其他文件,就像普通 JSP 文件一樣。同樣,所有 .gtpl 文件都有一個 HTTP Request 對象的實例可用(通過 request 變量)。

清單 6. 查看 Entity GTPL

				
<% include "/WEB-INF/includes/header.gtpl" %>

<% def ticket = request.getAttribute("ticket") %>

<div class="info">
 <h2>Parking Ticket</h2>
 </div>

<table>
<tr>
	<th>Issuing Officer</th>
	<th>Vehicle Plate</th>
	<th>Date</th>
	<th>Offense</th>
	<th>Location</th>
	<th>Notes</th>
  </tr>
 <tr>
	<td>${ticket.officer} </td>
	<td>${ticket.license}</td>
	<td>${ticket.issuseDate}</td>
	<td>${ticket.offense}</td>
	<td>${ticket.location}</td>
	<td>${ticket.notes}</td>
  </tr>
 </table>

<% include "/WEB-INF/includes/footer.gtpl" %>

至此,您或許可以發現 Gaelyk 使得在 Google App Engine 上創建輕量級 Web 應用程序輕而易舉。并且,操作 App Engine 的持久庫也變得再簡單不過。您在操作 Entity 時使用的低級 API 確實需要花一些時間習慣。查詢需要一些思考(在某些方面類似于使用 CouchDB 執行查詢)。舉例來說,查看已創建罰單的列表需要一些如清單 7 所示的代碼:

清單 7. 查看一組 Entity

				
import com.google.appengine.api.datastore.Query
import static com.google.appengine.api.datastore.FetchOptions.Builder.withLimit

try {
 def query = new Query("ticket")
 query.addSort("issuseDate", Query.SortDirection.DESCENDING)
 def preparedQuery = datastoreService.prepare(query)
 def tickets = preparedQuery.asList( withLimit(10) )

 request.setAttribute "tickets", tickets
forward "index.gtpl"
} catch (Throwable t) {
 forward "index.gtpl"
}

清單 7 使用了 App Engine 的 Query 對象。如您所見,您可以為查詢添加類似于排序的特性,甚至還能限制返回結果的方式。不需要使用 SQL,但需要確保數據已存儲并且可以檢索,只存在少許不同。

#t#如 “使用 Google App Engine” 所述,部署到云的過程也非常簡單。通過插件,只需要單擊 Deploy App Engine Project,其余的事情就由 Google 來完成了。事實上,您可以 下載 本文的代碼來完成此操作。代碼將填入一些間隔,因此我無法在一篇文章列出所有代碼。舉例來說,我實現了刪除罰單的功能,并且用戶與罰單之間的交互也稍有增強,因此您可以或多或少感受到 Gaelyk 的效果。

快速開發更加輕松

受到開源技術支持的云和無模式數據存儲無疑是未來 Java 開發中的一部分。兩者的采用門檻都較低;在本文的示例中,硬件和軟件都是免費的。并且,一旦 Google 開始收費,那么肯定要自力更生 — 每月 5 百萬的點擊率是巨大的流量。Gaelyk 框架加快了 Web 開發的步伐。Java 開發始終在日臻完善,不是嗎?

責任編輯:yangsai 來源: IBMDW
相關推薦

2009-04-14 11:01:33

GoogleApp EngineGroovy

2009-04-13 15:48:54

Google AppJavaSun

2009-09-10 10:11:44

Google App Java開發2.0

2009-05-22 14:52:33

App Engine免費配額

2009-04-08 16:47:11

GoogleApp EngineJava

2009-08-11 11:23:41

什么是GAEGoogle App

2009-04-09 08:54:07

App EnginegoogleJava

2011-09-06 14:53:01

Google App

2009-02-16 09:11:42

Google App SDKGQL

2009-10-16 09:08:59

App Engine

2009-09-02 11:34:09

Google App

2011-09-15 10:29:13

架構

2013-07-30 12:29:19

Google App Google技術Engine

2009-09-08 09:45:23

App Engine性

2009-04-09 09:53:43

GoogleAppEngineJava

2010-12-01 10:49:52

Google App

2009-08-07 13:53:14

App Engine

2012-08-01 14:12:45

IBMdW

2009-04-16 09:59:16

Google App PHPJava

2009-05-14 09:47:30

GoogleApp EngineJava SDK
點贊
收藏

51CTO技術棧公眾號

日本一区二区三区免费乱视频| 久久久精品五月天| 精品欧美久久久| 少妇高潮喷水在线观看| 麻豆导航在线观看| 久久99精品久久只有精品| 欧美麻豆久久久久久中文| 伊人网综合视频| 日韩一级二级| 一区二区三区**美女毛片| 久久狠狠久久综合桃花| 中文字幕 亚洲视频| 欧美精品色网| 亚洲视频在线观看| 亚洲熟妇一区二区| 国产精品字幕| 亚洲国产乱码最新视频| 神马一区二区影院| 欧美视频久久久| 美女网站色91| 国产91|九色| 成人性生活毛片| 精品免费视频| 亚洲国产高清自拍| 伊人五月天婷婷| av有声小说一区二区三区| 一区二区三区四区av| 欧美三级电影在线播放| av手机免费看| 麻豆视频观看网址久久| 26uuu另类亚洲欧美日本一| 91 在线视频| 国产乱码精品一区二区亚洲| 欧美mv日韩mv| 日韩欧美中文视频| 国产极品嫩模在线观看91精品| 性久久久久久久| 欧美 日韩 国产精品| 91精彩视频在线观看| 91伊人久久大香线蕉| 91麻豆蜜桃| 91成人一区二区三区| 日日夜夜精品视频免费| 2019中文字幕免费视频| 日本中文字幕网| 欧美日韩国产综合网| 久热精品视频在线| 国产白丝一区二区三区| 禁断一区二区三区在线| 亚洲久久久久久久久久| 亚洲中文字幕无码av| www.欧美视频| 欧美片网站yy| 91制片厂毛片| xxxxx.日韩| 在线观看av不卡| 老司机午夜av| 国产一区二区三区朝在线观看| 欧美午夜丰满在线18影院| 久久久性生活视频| 亚洲综合影视| 亚洲麻豆国产自偷在线| 亚洲图色在线| 色网站免费在线观看| 中文字幕高清一区| 亚洲成人蜜桃| 免费av在线网站| 日韩一区在线看| 小说区视频区图片区| 国精产品一区| 亚洲一区二区三区四区在线免费观看 | 精品视频在线播放免| 黄色免费看视频| 日韩有码av| 亚洲视频视频在线| 中文字幕资源站| 欧美成人午夜| 91精品91久久久久久| 探花视频在线观看| 免费成人在线影院| 999精品视频一区二区三区| 丰满人妻妇伦又伦精品国产| 99精品国产一区二区三区不卡| 免费h精品视频在线播放| 国产剧情在线观看| 亚洲欧美二区三区| 日本少妇高潮喷水视频| 成人在线爆射| 欧美一区二区三区在线观看视频| 91av免费观看| 美女亚洲一区| 久久久精品国产网站| 日韩欧美亚洲国产| 日本大胆欧美人术艺术动态| 91色视频在线观看| 日韩偷拍自拍| 亚洲精品中文字幕乱码三区| 免费看国产曰批40分钟| 国产91在线播放精品| 精品奇米国产一区二区三区| 色欲AV无码精品一区二区久久 | 在线精品免费视| 蜜桃视频免费观看一区| 999热视频在线观看| 噜噜噜噜噜在线视频| 亚洲色图都市小说| 黄色免费观看视频网站 | 官网99热精品| 久热av在线| 亚洲蜜桃精久久久久久久| 午夜精品久久久久久久无码| 日本电影久久久| 亚洲精品xxxx| 一区二区在线观看免费视频| 久久久久网站| 国产精品日韩一区二区| 日本中文字幕在线播放| 欧美性xxxx18| 香蕉在线观看视频| 99热国内精品永久免费观看| 欧美做受高潮1| 风流老熟女一区二区三区| 国产精品国产三级国产aⅴ无密码| 午夜精品久久久久久久无码 | 国产精品久久国产愉拍| 1区1区3区4区产品乱码芒果精品| 国产综合视频一区二区三区免费| 亚洲第一在线综合网站| 亚洲第一区第二区第三区| 女人av一区| 69精品小视频| 欧美一区二区三区激情| 综合久久久久久久| 日韩av片网站| 视频精品在线观看| 欧美专区国产专区| 午夜在线观看视频18| 亚洲伊人伊色伊影伊综合网| 能看毛片的网站| 99久久.com| 国产欧美久久一区二区| 大乳在线免费观看| 色婷婷综合视频在线观看| 精品国产一区在线| 在线观看不卡| 国产精品日韩欧美一区二区三区 | 亚洲三级电影网站| 可以看污的网站| 久久看人人摘| 国产精品视频精品| 亚洲成人影院麻豆| 欧美性xxxxxxxx| 法国空姐电影在线观看| 首页综合国产亚洲丝袜| 欧美日韩一区在线观看视频| 在线免费三级电影网站| 国产婷婷成人久久av免费高清 | 日本中文字幕在线看| 欧美日韩一区二区三区在线看 | 午夜精品久久久久久久99热浪潮| 国产偷拍一区二区| 一区二区三区四区精品在线视频| av影片在线播放| 亚洲黄色av| 久久久久久久久久久久久久一区 | 亚洲成人免费| 亚洲iv一区二区三区| 日日夜夜天天综合入口| 精品久久久网站| 国产成人亚洲精品自产在线| 97久久精品人人做人人爽| 欧美 国产 小说 另类| 国产精品美女久久久久久不卡 | 精品国产美女在线| 国产成人精品白浆久久69| 一区二区三区av电影| 亚洲精品乱码久久| 日韩精品欧美精品| 宅男av一区二区三区| 视频精品一区| 欧美性受xxxx黑人猛交| 高清av在线| 在线播放91灌醉迷j高跟美女| 国产亚洲欧美精品久久久久久 | 金瓶狂野欧美性猛交xxxx| 亚洲国产精品国自产拍av秋霞| 国产无遮挡呻吟娇喘视频| 中文字幕av一区二区三区高 | 成人污网站在线观看| 99精品国产一区二区三区2021| 668精品在线视频| 香港伦理在线| 亚洲大尺度美女在线| 中文字幕在线欧美| 亚洲靠逼com| 四虎影成人精品a片| 国产做a爰片久久毛片| 精品国产一区三区| 国产精品不卡| 久久99精品久久久久久久青青日本| 快播电影网址老女人久久| 日韩一区二区三区国产| 熟妇高潮一区二区三区| 欧美精品在线一区二区三区| 日韩无码精品一区二区三区| 国产欧美日产一区| 稀缺呦国内精品呦| 美国毛片一区二区三区| 毛片在线视频播放| 91精品国产91久久久久久密臀| 久久99精品国产99久久| 粉嫩一区二区三区在线观看| 日韩免费在线免费观看| 四季久久免费一区二区三区四区| 亚洲天堂男人天堂| 日本免费网站在线观看| 欧美高清一级片在线| www.国产com| 亚洲国产三级在线| 国产稀缺精品盗摄盗拍| 久久久久久影视| 性猛交╳xxx乱大交| 日本aⅴ亚洲精品中文乱码| 色欲色香天天天综合网www| 国产精品精品| 亚洲国产精品毛片| 日韩极品在线| 国产日韩欧美二区| 国产精一区二区| 国产精品中文字幕久久久| 亚洲欧美小说色综合小说一区| 欧美激情18p| 大片免费在线看视频| 国产一区二区三区视频在线观看 | 成人黄色在线视频| 亚洲一区二区图片| 久久99精品国产.久久久久久| 97xxxxx| 在线亚洲成人| 亚洲 自拍 另类小说综合图区| 欧美在线二区| 大地资源网在线观看免费官网| 清纯唯美日韩| 亚洲人一区二区| 日韩av有码| 婷婷久久青草热一区二区| 在线日本制服中文欧美| 欧美激情论坛| 国产乱码精品一区二区三区四区| 久久精品美女| 九九久久精品| 欧美一区二区综合| 国产a久久精品一区二区三区| 蜜桃视频在线观看91| 免费久久精品| 欧美日韩一区二区三区在线观看免 | 男人天堂久久久| 中日韩美女免费视频网站在线观看| 毛片免费在线播放| 深夜福利亚洲导航| 成人短视频在线| 欧美国产日韩一区二区在线观看 | 久久精品国产露脸对白| 激情综合色综合久久| 视频区 图片区 小说区| 国产成人亚洲综合a∨婷婷| wwwxxx色| 99re在线视频这里只有精品| 成人影视免费观看| 国产日韩欧美不卡| 免费在线观看a级片| 一区二区三区丝袜| wwwxxx亚洲| 欧美最新大片在线看| 国产伦精品一区二区三区四区 | 国产91成人在在线播放| 欧美天堂视频| 国产在线98福利播放视频| 欧美激情三级| 久久99久久精品国产| 精品国产91乱码一区二区三区四区 | 欧美一区二区三区黄片| 亚洲人成电影网站色…| 瑟瑟视频在线| 97视频在线观看成人| 亚洲www啪成人一区二区| 91麻豆国产语对白在线观看| julia中文字幕一区二区99在线| 蜜桃视频在线观看91| 欧美第一精品| 国内精品在线观看视频| 日韩1区2区日韩1区2区| 女人扒开双腿让男人捅| 久久嫩草精品久久久精品一| 一级性生活免费视频| 动漫精品一区二区| 国产女人高潮时对白| 精品网站999www| a天堂中文在线官网在线| 日本欧美一级片| 欧美成年网站| 日韩免费电影一区二区三区| 欧美日本中文| 国产aaaaa毛片| 99麻豆久久久国产精品免费优播| 欧美另类69xxxx| 黄网动漫久久久| 99热这里只有精| 亚洲午夜未满十八勿入免费观看全集 | 免费精品一区二区三区在线观看| 久久免费看av| 欧美日韩一区二区国产| 亚洲黄色小视频在线观看| 成人精品国产福利| 五月天色婷婷丁香| 日韩欧美在线视频日韩欧美在线视频| 国产露脸国语对白在线| 亚洲图片欧美日产| √最新版天堂资源网在线| 成人午夜激情免费视频| 精品国产一级毛片| 5月婷婷6月丁香| 成人av中文字幕| 特级片在线观看| 欧美精品精品一区| 阿v免费在线观看| 青青久久av北条麻妃海外网| 一区中文字幕| 日本一级淫片演员| 毛片一区二区三区| 性欧美精品男男| 色婷婷久久久久swag精品 | 国产成人av在线影院| 男女全黄做爰文章| 欧洲在线/亚洲| 黄网在线观看| 日产日韩在线亚洲欧美| 日韩理论电影中文字幕| 精品这里只有精品| 99视频超级精品| 成人免费视频毛片| 日韩av在线网| 绿色成人影院| 久久av一区二区三区亚洲| 亚洲精品孕妇| 99久久免费看精品国产一区| 偷窥少妇高潮呻吟av久久免费| 亚洲精品97久久中文字幕| 欧美大片免费观看在线观看网站推荐| 国产一区二区在线观| 成人在线观看www| 国产乱一区二区| 青青操国产视频| 日韩一区二区精品葵司在线| 中国av在线播放| 国产精品污www一区二区三区| 韩国一区二区三区在线观看| 国产精品入口麻豆| 欧美日韩国产丝袜另类| 日本不卡免费播放| 国产成人精品在线播放| 欧美色就是色| 美女在线视频一区二区 | 国产主播在线观看| 亚洲福利视频免费观看| 日韩理论视频| 日本欧洲国产一区二区| 美腿丝袜在线亚洲一区| 老湿机69福利| 日韩精品中午字幕| 日韩在线伦理| 涩涩涩999| 国产麻豆精品视频| 精品人妻在线播放| 亚洲人在线观看| 亚洲男人在线| www.av毛片| 国产日韩欧美激情| 国产浮力第一页| 777精品视频| 日韩一区亚洲二区| 麻豆免费在线观看视频| 日韩欧美视频一区二区三区| 一广人看www在线观看免费视频| 亚洲综合在线做性| 亚洲欧美日韩视频二区| 人妻互换一区二区激情偷拍| 日韩欧美一二三| 美女一区网站| 国产高清免费在线| 99精品在线观看视频| 91国内精品久久久| 97免费视频在线| 日韩在线二区| yy1111111| 欧美高清你懂得| 在线男人天堂| 国产av不卡一区二区| 久久色视频免费观看| 国产黄色片免费|