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

快速啟動一個Java Web編程框架

開發 后端
Reasonable Server Faces (RSF)基于Spring的Java開源Web框架。它是一個極為輕量級的框架,有純粹的XHTML模板和完整的生命周期處理。本文定義并演示RSF的三個主要原則:首要標記,零服務狀態和POST/GET的正確使用。

RSF,不像其他的Java Web框架,主要側重于標記和網頁設計師的作用。網頁設計師不會被框架產生的標記而限制,也不是被迫圍繞內嵌代碼或是偽代碼來設計。模板是純粹的XHTML不需要框架知識來創建或是維護。這個創建了完全分離的顯示和Java代碼隱藏。網頁設計師和開發者可以獨立工作,而且不需要協調他們的工作,這個你將在示例程序中看到。

RSF目的在于用零服務器環境創建一個框架,這樣可以通過在循環的***扔掉組件樹來節省寶貴的服務器資源。這個有別于很多常見的Java框架,例如JSF,憑借框架執行的***個動作來恢復使用從先前要求中出現的組件樹。Session狀態是以此來減小較低利用的服務器資源。

RSF目的是通過遵循一個嚴格的POST->GET重定向以便保留所有的GET請求冪等來遵循在服務器上的正確而有效的瀏覽器行為。這樣,POST純粹是用來發送數據到服務器上的,而GET是用來返回數據到瀏覽器上的。這個可以解決很多問題,就是其他框架所面對的瀏覽器返回鈕行為或是深層鏈接問題。

  Recipe List Application

  快速啟動一個Java Web 編程框架

為了演示這些RSF核心組件的主要目的,我們來構建一個非常簡單的recipe list應用程序。這個程序將創建一個項目列表,通過允許用戶通過網絡形式添加更多的項目。這個簡單的任務將展示很多的功能包括:模板建設,鏈接行為,簡單的國際化和表格粘貼。

為了開始這個簡單的程序,首先你需要為RSF準備好一個環境。RSF的wiki網站有一個很棒的指導來安裝RSF Development Environment,但是不在本文的討論之內。一旦完成安裝,你可以通過在程序中創建XHTML模板來開始程序了。如上述所提到的,這些都是純粹的XHTML模板,用它們唯一所關心的外觀所建立的。對于這個簡單的程序,要有兩頁,所以你需要創建兩個XHTML模板:

  recipelist.html

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"

< html xmlns:rsf="

  < head>

  < meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  < title rsf:id="msg=title">Recipe List< /title>

  < link href="../css/styles.css" type="text/css" rel="stylesheet" media="all"/>

  < /head>

  < body>

  < h1 rsf:id="msg=header">Recipe List< /h1>

  < ul rsf:id="message-for:*" style="margin:0px;">

  < li>Message for user here< /li>

  < /ul>

  < h4 rsf:id="current_count">There are currently {0} item(s).< /h4>

  < ul>

  < li rsf:id="current_items:">

  < span rsf:id="row_item">An Item< /span>

  < /li>

  < /ul>

  < a rsf:id="add_item">Add an Item< /a>

  < /body>

  < /html>


itemForm.html

  快速啟動一個Java Web 編程框架

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"

< html xmlns:rsf="

  < head>

  < meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  < title rsf:id="msg=title">Recipe List< /title>

  < link href="../css/styles.css" type="text/css" rel="stylesheet" media="all"/>

  < /head>

  < body>

  < h1 rsf:id="msg=header">Recipe List< /h1>

  < ul rsf:id="message-for:*" style="margin:0px;">

  < li>Message for user here< /li>

< /ul>

  < form rsf:id="form">

  < fieldset>

  < legend rsf:id="msg=form_legend">Add an Item to the List< /legend>

  < ol>

  < li>

  < label rsf:id="msg=label_item">Item:< /label>

  < input type="text" rsf:id="item" />

  < /li>

  < /ol>

  < div class="buttonwrap">

  < input type="submit" rsf:id="submit" value="Submit" />

  < /div>

  < /fieldset>

  < /form>

  < /body>

  < /html>

正如以上所看到的,這些是幾乎完全有效的XHTML文件,除了額外的一個單一屬性,rsf:id=""。這個是RSF在模板中所代表的唯一機制。事實上,這些模板可以在任何網頁瀏覽器(是忽略額外屬性的瀏覽器)中看到并且可以被驗證。任何在模板中的文本或是其他的特性包括rsf:id屬性將通過RSF被覆蓋,所以模板可以包含如你所希望的"假數據"。這是極其有益的,通過允許假內容的存在,讓設計者與開發者對標記結構的意圖進行溝通。恰當的rsf:id值列表是唯一的契約可以讓設計者和開發者必須互相維持。只要相同的ID以語義上相同的方法來運用,這個想法就會工作。

rsf:id標簽指定一個ID讓RSF rendering engine有地方連線它的數據。帶有冒號(:)的ID使用是一個特殊的協議就是告訴rendering engine這個XHTML節點可能會重復。為了支持國際化,另一個特殊的標簽協議是用于直接將文本從一個標準的Java屬性組合中提取出來。這個使得開發者通過簡單定義一個特殊的rsf:id="msg=property_key"直接連線rsf:id到一個properties bundle key 。對于這個應用程序,所有的頁面文本都被拖動到以下的屬性捆綁中。

   messages.properties 
  title = Recipe List

  header = Recipe List

  form_legend = Add an Item to the List

  label_item = Item:

  current_items_count = There are currently {0} item(s).

一旦你開始使用這些模板,你必須為每一個模板創建一個Component Producer。在RSF中的一個component producer是一種機制讓Java中組件樹可以在其中構建。每一個producer執行ViewComponentProducer接口并且有一個相應的ViewID,可以與模板的文件名相匹配。重載方法fillComponents是組件樹構建的地方,用以在模板中符合rsf:ids。參數UIContainer tofill作為組件樹(這里可以添加所有的組件)的一個父元素。producer將為recipe list的項目構建組件樹,如下:

RecipeListProducer  ...

  public class RecipeListProducer implements ViewComponentProducer, DefaultView {

  public static String VIEW_ID = "recipelist";

  public String getViewID() {

  return VIEW_ID;

  }

  private RecipeListService service;

  public void setService(RecipeListService service) {

  this.service = service;

  }

  public void fillComponents(UIContainer tofill, ViewParameters viewparams,

  ComponentChecker checker) {

  //Build Recipe List

  List< String> items = service.getItems();

  UIMessage.make(tofill, "current_count", "current_items_count", new Object[] {items.size()});

  for (String item : items){

  //Create a new < li> element

  UIBranchContainer row = UIBranchContainer.make(tofill, "current_items:");

  UIOutput.make(row, "row_item", item);

  }

  //Create Link to Add Item Form

  UIInternalLink.make(tofill, "add_item", new SimpleViewParameters(ItemFormProducer.VIEW_ID));

  }

  }

有了這個producer,一些主要的概念被采用了,還有一些RSF的內置組件。上述的RecipeListService簡單的恢復了代表每個recipe list項目的字符串列表。以前,根據研究結果表明用于國際化的信息包文本可以直接通過模板來利用。但是,如果你需要做的不僅僅是輸出靜態文本,你可以選擇使用RSF的UIMessage組件來執行包查找。這里,在從服務器檢索recipe項目的列表之后,你想要顯示項目的總數,可以使用"current_items_count"信息包。使用UIMessage組件,你可以查找綁定的字符串"current_items_count",編排文本格式添加size()到一個占位符,并且附加它到帶有rsf:id="current_count"的DOM節點。

下一步是從服務器上顯示每個項目。如以上所提到的,當創建rsf:id屬性到designate(在DOM中重復的元素)的時候,你使用冒號標記。在模板中,你想要對每一個在recipe list上的項目重復一個< li>元素。要做到這一點, 把rsf:id="current_items:"(注意***的冒號) 給在模板中的元素。還有另一個注意的是顯示的分離。在Java中構建的組件樹不會關注使用哪些標記標簽;它只知道DOM元素是被重復的。通過設計者的自由裁量,< p>很容易用來代替< li>。為了創建匹配的組件樹項目,你可以創建一個UIBranchContainer組件。這個組件可以指示rendering engine,其中在DOM中項目被"綁定"允許循環的發生。每個反復的循環都要創建一個新的UIBranchContainer來告訴組件樹有多少個< li>DOM節點你需要去創建。

一旦你有了分支的< li>,你需要輸出文本項目。使用UIBranchContainer行作為一個父體(parent),你使用UIOutput來輸出recipe list項目的文本到DOM元素,用rsf:id="row_item"。通過設置父體到UIBranchContainer,你會使rsf:id="row_item"元素作為一個子rsf:id="row_item:"元素來呈現。

在producer中的***一步是創建一個內部鏈接到itemform.html網頁。所有鏈接通過RSF來進行內部管理。為了創建鏈接,附加組件樹上一個UIInternalLink組件到模板的rsf:id="add_item"上。既然你不以GET參數形式來傳送數據,你可以利用RSF的SimpleViewParameters。但是,創建自定義的ViewParameters可以傳遞你希望的數據,但是這超出了本程序的范圍。

下一個你創建的producer將構建組件樹來處理允許recipe項目被添加到列表上的表格:

ItemFormProducer.java
  ...

  public class ItemFormProducer

  implements ViewComponentProducer, NavigationCaseReporter {

  public static String VIEW_ID = "itemForm";

  public String getViewID() {

  return VIEW_ID;

  }

  public void fillComponents(UIContainer tofill, ViewParameters viewparams,

  ComponentChecker checker) {

  //Build Form

  UIForm form = UIForm.make(tofill, "form");

  UIInput.make(form, "item", "${RecipeListBean.item}");

  UICommand.make(form, "submit", "#{RecipeListBean.processActionSubmit}");

  }

  public List< NavigationCase> reportNavigationCases() {

  List< NavigationCase> nav = new ArrayList< NavigationCase>();

  nav.add(new NavigationCase("success",

  new SimpleViewParameters(RecipeListProducer.VIEW_ID)));

  return nav;

  }  }

這個簡單的producer構建了需要處理一個成功的POST的表格元素和滾條。首先,使用RFS組件UIForm添加一個表格組件到組件樹中,通過使用在模板中相同的rsf:id="form"。下一步,添加一個組件,UIInput,到UIForm 元素中,這個可以運行用戶可以接收的輸入。同樣的用UICommand組件來構建一個提交按鈕。UIInput 和UICommand組件同時采用一個第三方字符串參數來創建一個有價值的binding。這就是RFS的Expression Language的形成。這個要比在JSF中同樣的EL簡單得多,RSF的EL僅僅指定一個簡單的bean路徑。這樣,當按下提交按鈕時,在調用被UICommand value binding 定義的RecipeListBean.processActionSubmit()之前,在UIInput中的值被直接傳遞到RecipeListBean 的"item"屬性。

這個Producer的***一塊就是NavigationCaseReporter接口的執行。記住RSF通過一個重定向的GET,遵循每個POST提交。默認情況下,GET請求會遵循來自它們的相同看法。為了重定向用戶到不同的地方,可以利用RSF的NavigationCases。Navigation cases被JSF的同樣的命名功能所激發并允許來自POST提交的簡單的流。在表格中,在成功的添加一個項目到列表中之后,你想重新定向recipe項目的列表。NavigationCase告訴RSF當POST綁定方法RecipeListBean.processActionSubmit的時候,返回字符串"success"然后GET 重定向需要返回RecipeListProducer。除了這個簡單的方法之外,RSF也允許其他更先進的創建流的方法。

         RecipeListBean.java   ...

  public class RecipeListBean {

  private RecipeListService service;

  private String item;

  public String processActionSubmit(){

  if (item != null && item.length() > 0) {

  service.addRecipe(item);

  //Return string for NavigationCase

  return "success";

 }else{

  return "failure";

  }

 }

  ... Getters and Setters Omitted...

***一步包括添加eans到在web.xml中定義過的Spring定義中。這個遵循Spring框架的反向控制方法而且非常的直截了當。所有這些配置和整個源代碼提供,以供參考。雖然這個程序非常簡單平常,但是它強調了RSF的一些核心組件。

【編輯推薦】

  1. 使用jQuery和PHP構建一個受Ajax驅動的Web頁面
  2. 視頻教程:ASP.NET Web開發詳解
  3. .NET平臺下Web測試工具橫向比較

【責任編輯:彭凡 TEL:(010)68476606】

責任編輯:彭凡 來源: ctocio
相關推薦

2022-01-06 14:59:53

Java框架magic-api

2023-08-01 07:25:38

Expresso框架API

2017-06-08 15:53:38

PythonWeb框架

2020-11-12 19:37:49

Web 開發項目

2016-03-01 13:48:36

MVVMios快速開發

2015-10-12 16:45:26

NodeWeb應用框架

2022-04-01 15:18:42

Web 框架網絡通信

2016-12-28 13:55:16

Android框架MVP

2009-05-12 09:54:09

JavaRestCoC

2021-10-27 11:29:32

框架Web開發

2010-11-17 12:59:52

2025-08-27 09:33:42

2011-07-19 16:56:09

移動Web編程工具框架

2024-07-12 08:38:05

2024-08-21 08:21:45

CNN算法神經網絡

2024-08-02 10:28:13

算法NLP模型

2024-07-30 08:08:49

2024-06-03 08:09:39

2024-06-06 09:44:33

2024-07-19 08:21:24

點贊
收藏

51CTO技術棧公眾號

欧美一级xxxx| 国产精品无码乱伦| 久久久久久久亚洲| 99re6这里只有精品| 91精品福利在线一区二区三区| 50度灰在线观看| 日韩资源在线| 毛片av一区二区三区| 久久免费福利视频| 四虎永久免费在线观看| 91精品国产色综合久久不卡粉嫩| 亚洲大尺度视频在线观看| 日韩影片在线播放| 午夜精品久久久久久久99热黄桃| 免费亚洲网站| 欧美国产精品va在线观看| www.狠狠爱| youjizz亚洲| 欧美性感一区二区三区| 国产 日韩 欧美在线| 18免费在线视频| av在线播放一区二区三区| 成人免费在线网址| 国产一区免费看| 国产精品全国免费观看高清| 欧美三级一级片| 国产精品99无码一区二区| 香蕉视频一区二区三区| 91精品在线免费| 亚洲欧洲偷拍精品| 少妇黄色一级片| 国产精品亚洲不卡a| www国产视频| 欧美高清你懂的| 色悠悠久久综合| 搞av.com| 久草在线新免费首页资源站| 国产精品久久久一本精品| 日本不卡二区| 日韩porn| 久久综合久色欧美综合狠狠| 国产精品亚洲综合| 亚洲成人久久精品| 国产精品自产自拍| 51成人做爰www免费看网站| 91国内精品久久久| 日韩精品亚洲一区| 日本精品免费一区二区三区| 天天操天天摸天天干| 激情视频一区| 午夜精品久久久久久久男人的天堂 | 成人免费高清完整版在线观看| 精品国产xxx| 亚洲在线一区| 欧洲亚洲免费在线| 东京热一区二区三区四区| 99精品视频免费观看| 国模私拍视频一区| 香蕉视频一区二区| 99成人精品| 91国在线精品国内播放| 国产精品自拍99| 欧美在线综合| 国产精国产精品| 超碰在线97观看| 青娱乐精品视频在线| 国产精品三级美女白浆呻吟 | 久久99精品久久久久久秒播放器| 神马午夜精品95| 久久综合999| 亚洲乱码一区二区三区三上悠亚| eeuss影院www在线观看| 《视频一区视频二区| 麻豆md0077饥渴少妇| 尤物在线网址| 五月天欧美精品| 日本在线观看a| 福利一区二区| 日韩欧美色综合| 亚洲色图14p| 国产午夜一区| 美女精品久久久| 久久午夜免费视频| 久久一区欧美| 亚洲自拍偷拍在线| 天堂在线中文| 亚洲欧美自拍偷拍| 91九色丨porny丨国产jk| 中文av在线全新| 欧美丰满少妇xxxbbb| 久久久久99人妻一区二区三区| 国产精品流白浆在线观看| 亚洲另类xxxx| 日韩成人短视频| 亚洲在线观看| 91九色单男在线观看| 免费观看黄色一级视频| 国产亚洲综合在线| 久久男人资源站| 欧美日韩尤物久久| 日韩精品在线一区二区| 精品人伦一区二区三电影| 99精品美女| 欧美在线观看网址综合| 一二三区在线播放| 成人动漫av在线| 亚洲成人午夜在线| 川上优av中文字幕一区二区| 欧美影院一区二区三区| 国产xxx在线观看| 不卡中文字幕| 海角国产乱辈乱精品视频| 日韩三级一区二区| 成人综合在线观看| 亚洲欧美国产不卡| 美女的胸无遮挡在线观看| 欧美日韩成人一区二区| 久久久亚洲av波多野结衣| 在线精品视频在线观看高清| 国产v综合v亚洲欧美久久| 性色av蜜臀av| 最新国产成人在线观看| 久章草在线视频| 狠狠一区二区三区| 欧美成人精品xxx| 中文字幕欧美人妻精品| 91老师国产黑色丝袜在线| 国产人妻人伦精品| 亚瑟国产精品| 国产亚洲欧美视频| 你懂的国产在线| www.欧美亚洲| 黄色成人在线免费观看| 日本免费在线一区| 日日噜噜噜夜夜爽亚洲精品| 国产免费a视频| 久久久不卡网国产精品二区| 波多野结衣50连登视频| 国产精品2023| 欧美成人精品一区| 91精品国产综合久| 国产精品视频麻豆| 丝袜制服一区二区三区| 欧美激情在线精品一区二区三区| 6080yy精品一区二区三区| 人妻少妇一区二区三区| 夜夜精品视频一区二区 | 成人免费在线网| 无码国模国产在线观看| 欧美成人四级hd版| 精品欧美在线观看| 一区二区三区自拍| 2025中文字幕| 精品99视频| 国产伦精品一区二区三| 91超碰在线播放| 亚洲国产欧美一区二区三区同亚洲| 中文字幕第28页| www.在线欧美| 欧美三级午夜理伦三级| 国产欧美日韩精品一区二区三区 | 亚洲美女自拍偷拍| 高清久久精品| 欧美国产极速在线| 亚洲人妻一区二区| 91激情在线视频| 91香蕉视频污在线观看| 久久99国产乱子伦精品免费| 只有这里有精品| 国产精品极品在线观看| 欧美在线www| 成人性爱视频在线观看| 欧美乱妇23p| 久久久久久久九九九九| av在线不卡网| 9久久婷婷国产综合精品性色| 日韩欧美中字| av一区二区在线看| 黄色在线网站噜噜噜| 尤物九九久久国产精品的特点| 在线视频欧美亚洲| 一区二区三区毛片| 午夜一区二区三区免费| 免费成人在线网站| 8x8x华人在线| 日韩av三区| 国产在线拍揄自揄视频不卡99| 天堂av最新在线| 亚洲欧美国产另类| 国产又大又黄又爽| 欧美日韩美女在线观看| 婷婷国产成人精品视频| 丁香六月久久综合狠狠色| 久久国产色av免费观看| 91精品久久久久久久蜜月| 久久天堂国产精品| 自拍偷拍亚洲| 欧美在线激情网| www在线观看播放免费视频日本| 亚洲精品99久久久久| 中文字幕在线观看免费| 午夜精品福利视频网站| 日韩三级久久久| 久久先锋影音av鲁色资源| 制服丝袜中文字幕第一页| 一区二区高清| 天天操天天干天天玩| 色婷婷精品视频| 亚洲自拍欧美另类| 8av国产精品爽爽ⅴa在线观看 | 久久久久久久国产视频| 欧美国产97人人爽人人喊| 中文字幕天堂网| 国产一区三区三区| 老司机午夜av| 国产精品久久久免费| 男女h黄动漫啪啪无遮挡软件| 蜜桃成人av| 国产丝袜不卡| 欧美影院精品| 国产精品视频26uuu| 中文字幕在线视频网站| 久久久噜噜噜久久久| 黄色小网站在线观看| 亚洲午夜色婷婷在线| 偷拍精品一区二区三区| 欧美tk—视频vk| av在线亚洲天堂| 欧美日本一区二区三区| 69视频免费看| 一本一本久久a久久精品综合麻豆| 欧美成人片在线观看| 亚洲天堂精品在线观看| 精品人妻中文无码av在线| 久久久久国产成人精品亚洲午夜 | 国产精品久久久久久69| 欧美性大战久久久| 精品国产乱子伦| 色欧美日韩亚洲| 国产毛片aaa| 欧美日韩亚洲系列| 可以免费在线观看的av| 午夜精品一区二区三区电影天堂| 久久亚洲AV无码| 一区二区三区高清| 免费中文字幕视频| 亚洲综合一二区| 免费观看一级视频| 亚洲成人av资源| 国产午夜视频在线播放| 亚洲图片有声小说| 国产一级做a爱免费视频| 亚洲线精品一区二区三区| 欧美成人三级视频| 亚洲一区二区精品久久av| 日本少妇xxxx动漫| 天天免费综合色| 99久久久久久久久| 日本久久一区二区| 中文字幕一区二区人妻痴汉电车| 欧美视频一区二区三区| 在线观看中文字幕码| 在线观看亚洲精品| 一级特黄aaaaaa大片| 91精品国产综合久久久久久| 精品人妻少妇嫩草av无码专区| 精品国产一区二区三区四区四| 超碰在线观看99| 亚洲国产精品网站| 久蕉在线视频| 日韩在线免费视频观看| 在线观看h网| 91精品国产亚洲| 亚州一区二区三区| 91久久中文字幕| 狠狠久久伊人| 五码日韩精品一区二区三区视频| 亚洲成av人电影| 一本久道高清无码视频| 美女黄色成人网| 日韩 国产 一区| av中文一区二区三区| 日韩人妻无码精品综合区| 国产精品久久久久久福利一牛影视| 欧美日韩综合一区二区| 狠狠色狠狠色综合日日五| 在线观看色网站| 精品国产a毛片| 国产主播福利在线| 日韩中文字幕国产精品| 1区2区3区在线| 国产精品99久久久久久人| 免费观看亚洲天堂| 乱一区二区三区在线播放| 99视频精品视频高清免费| 国产女大学生av| 另类小说综合欧美亚洲| 一级黄色大片免费看| 国产亚洲精品精华液| 中文字幕av久久爽av| 91成人免费在线视频| 丰满肉肉bbwwbbww| 色婷婷综合久久久久中文字幕1| av中文在线资源| 国产噜噜噜噜久久久久久久久| 牛牛精品成人免费视频| 一本色道婷婷久久欧美| 亚洲欧美日韩国产一区二区| 男人午夜视频在线观看| 久久精品在线免费观看| 精品午夜福利视频| 在线不卡免费av| 美女毛片在线看| 久久噜噜噜精品国产亚洲综合| 欧美亚洲福利| 日韩.欧美.亚洲| 在线亚洲国产精品网站| 999热精品视频| 国产精品无遮挡| 在线观看日本网站| 亚洲爱爱爱爱爱| 在线网址91| 成人免费淫片视频软件| 国内精品久久久久久久影视简单| 久激情内射婷内射蜜桃| 国产一区不卡精品| www.99re6| 欧美网站一区二区| 神马精品久久| 7777精品视频| 国产香蕉精品| 黄色三级中文字幕| 国产成人综合精品三级| 日韩在线观看免| 欧美日韩免费视频| 成人网视频在线观看| 国产suv精品一区二区| 色综合久久中文| 黑人糟蹋人妻hd中文字幕| 成人听书哪个软件好| 日本黄色小说视频| 欧美成人乱码一区二区三区| a黄色片在线观看| 69堂成人精品视频免费| 欧美aa国产视频| 精品无码av一区二区三区不卡| 亚洲日本韩国一区| 国产欧美第一页| 久久国产视频网站| 最新国产精品精品视频| 欧美人与动牲交xxxxbbbb| 丁香天五香天堂综合| 欧美成人aaaaⅴ片在线看| 日韩av最新在线| 日韩理论视频| 欧美一区激情视频在线观看| 久久一区二区三区超碰国产精品| 69精品无码成人久久久久久| 欧美在线观看一区| 3p视频在线观看| 亚洲free嫩bbb| 亚洲天堂偷拍| 欧美大喷水吹潮合集在线观看| 精品国产成人av| 四虎影视在线观看2413| 国产999精品| 日韩欧美视频专区| 人妻换人妻仑乱| 亚洲一区二区三区三| 少妇人妻一区二区| 国产精品黄页免费高清在线观看| 欧美激情理论| 中文字幕第六页| 精品久久久视频| 国产特黄在线| 亚洲综合色激情五月| 日韩网站在线| 影音先锋制服丝袜| 91麻豆精品国产| 97久久人人超碰caoprom| 久久国产日韩欧美| 免费在线观看成人| caoporn91| 亚洲精品国产精品自产a区红杏吧| 免费亚洲电影| 一区二区高清视频| 成人视屏免费看| 亚洲性猛交富婆| 国模吧一区二区| 日韩精品久久| 五月天丁香社区| 欧美三级三级三级| www.8ⅹ8ⅹ羞羞漫画在线看| 亚州欧美一区三区三区在线| 成人免费视频免费观看| 青青国产在线视频| 久久久亚洲精选| 久久要要av| 自拍偷拍亚洲天堂| 日韩欧美美女一区二区三区|