成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > SpringMVC 數(shù)據(jù)綁定實(shí)例詳解

SpringMVC 數(shù)據(jù)綁定實(shí)例詳解

熱門標(biāo)簽:泰州泰興400電話 怎么申請 如何用中國地圖標(biāo)注數(shù)字點(diǎn) 地圖標(biāo)注市場怎么樣 企業(yè)怎么在聯(lián)通申請400電話 百度地圖添加標(biāo)注圖標(biāo)樣式 好操作的電話機(jī)器人廠家 南昌市地圖標(biāo)注app 南京新思維電話機(jī)器人 聊城智能電銷機(jī)器人外呼

 SpringMVC 數(shù)據(jù)綁定

查看spring源碼可以看出spring支持轉(zhuǎn)換的數(shù)據(jù)類型:

org.springframework.beans.PropertyEditorRegistrySupport:

/** 
 * Actually register the default editors for this registry instance. 
 */ 
private void createDefaultEditors() { 
  this.defaultEditors = new HashMapClass, PropertyEditor>(64); 
 
  // Simple editors, without parameterization capabilities. 
  // The JDK does not contain a default editor for any of these target types. 
  this.defaultEditors.put(Charset.class, new CharsetEditor()); 
  this.defaultEditors.put(Class.class, new ClassEditor()); 
  this.defaultEditors.put(Class[].class, new ClassArrayEditor()); 
  this.defaultEditors.put(Currency.class, new CurrencyEditor()); 
  this.defaultEditors.put(File.class, new FileEditor()); 
  this.defaultEditors.put(InputStream.class, new InputStreamEditor()); 
  this.defaultEditors.put(InputSource.class, new InputSourceEditor()); 
  this.defaultEditors.put(Locale.class, new LocaleEditor()); 
  this.defaultEditors.put(Pattern.class, new PatternEditor()); 
  this.defaultEditors.put(Properties.class, new PropertiesEditor()); 
  this.defaultEditors.put(Resource[].class, new ResourceArrayPropertyEditor()); 
  this.defaultEditors.put(TimeZone.class, new TimeZoneEditor()); 
  this.defaultEditors.put(URI.class, new URIEditor()); 
  this.defaultEditors.put(URL.class, new URLEditor()); 
  this.defaultEditors.put(UUID.class, new UUIDEditor()); 
 
  // Default instances of collection editors. 
  // Can be overridden by registering custom instances of those as custom editors. 
  this.defaultEditors.put(Collection.class, new CustomCollectionEditor(Collection.class)); 
  this.defaultEditors.put(Set.class, new CustomCollectionEditor(Set.class)); 
  this.defaultEditors.put(SortedSet.class, new CustomCollectionEditor(SortedSet.class)); 
  this.defaultEditors.put(List.class, new CustomCollectionEditor(List.class)); 
  this.defaultEditors.put(SortedMap.class, new CustomMapEditor(SortedMap.class)); 
 
  // Default editors for primitive arrays. 
  this.defaultEditors.put(byte[].class, new ByteArrayPropertyEditor()); 
  this.defaultEditors.put(char[].class, new CharArrayPropertyEditor()); 
 
  // The JDK does not contain a default editor for char! 
  this.defaultEditors.put(char.class, new CharacterEditor(false)); 
  this.defaultEditors.put(Character.class, new CharacterEditor(true)); 
 
  // Spring's CustomBooleanEditor accepts more flag values than the JDK's default editor. 
  this.defaultEditors.put(boolean.class, new CustomBooleanEditor(false)); 
  this.defaultEditors.put(Boolean.class, new CustomBooleanEditor(true)); 
 
  // The JDK does not contain default editors for number wrapper types! 
  // Override JDK primitive number editors with our own CustomNumberEditor. 
  this.defaultEditors.put(byte.class, new CustomNumberEditor(Byte.class, false)); 
  this.defaultEditors.put(Byte.class, new CustomNumberEditor(Byte.class, true)); 
  this.defaultEditors.put(short.class, new CustomNumberEditor(Short.class, false)); 
  this.defaultEditors.put(Short.class, new CustomNumberEditor(Short.class, true)); 
  this.defaultEditors.put(int.class, new CustomNumberEditor(Integer.class, false)); 
  this.defaultEditors.put(Integer.class, new CustomNumberEditor(Integer.class, true)); 
  this.defaultEditors.put(long.class, new CustomNumberEditor(Long.class, false)); 
  this.defaultEditors.put(Long.class, new CustomNumberEditor(Long.class, true)); 
  this.defaultEditors.put(float.class, new CustomNumberEditor(Float.class, false)); 
  this.defaultEditors.put(Float.class, new CustomNumberEditor(Float.class, true)); 
  this.defaultEditors.put(double.class, new CustomNumberEditor(Double.class, false)); 
  this.defaultEditors.put(Double.class, new CustomNumberEditor(Double.class, true)); 
  this.defaultEditors.put(BigDecimal.class, new CustomNumberEditor(BigDecimal.class, true)); 
  this.defaultEditors.put(BigInteger.class, new CustomNumberEditor(BigInteger.class, true)); 
 
  // Only register config value editors if explicitly requested. 
  if (this.configValueEditorsActive) { 
    StringArrayPropertyEditor sae = new StringArrayPropertyEditor(); 
    this.defaultEditors.put(String[].class, sae); 
    this.defaultEditors.put(short[].class, sae); 
    this.defaultEditors.put(int[].class, sae); 
    this.defaultEditors.put(long[].class, sae); 
  } 
} 

下面挑選一些常用的數(shù)據(jù)類型,舉例說明它們的綁定方式

1. 基本數(shù)據(jù)類型(以int為例,其他類似):

    Controller代碼:

@RequestMapping("test.do") 
public void test(int num) { 
   
} 

    JSP表單代碼:

form action="test.do" method="post"> 
  input name="num" value="10" type="text"/> 
  ...... 
/form> 

表單中input的name值和Controller的參數(shù)變量名保持一致,就能完成基本數(shù)據(jù)類型的數(shù)據(jù)綁定,如果不一致可以使用@RequestParam標(biāo)注實(shí)現(xiàn)。值得一提的是,如果Controller方法參數(shù)中定義的是基本數(shù)據(jù)類型,但是從jsp提交過來的數(shù)據(jù)為null或者""的話,會出現(xiàn)數(shù)據(jù)轉(zhuǎn)換的異常。也就是說,必須保證表單傳遞過來的數(shù)據(jù)不能為null或"",所以,在開發(fā)過程中,對可能為空的數(shù)據(jù),最好將參數(shù)數(shù)據(jù)類型定義成包裝類型,具體參見下面的第二條。

2. 包裝類型(以Integer為例,其他類似):

    Controller代碼:

@RequestMapping("test.do") 
public void test(Integer num) { 
   
} 

   JSP表單代碼:

form action="test.do" method="post"> 
  input name="num" value="10" type="text"/> 
  ...... 
/form> 

和基本數(shù)據(jù)類型基本一樣,不同之處在于,JSP表單傳遞過來的數(shù)據(jù)可以為null或"",以上面代碼為例,如果jsp中num為""或者表單中無num這個(gè)input,那么,Controller方法參數(shù)中的num值則為null。

3. 自定義對象類型:

    Model代碼:

public class User { 
 
  private String firstName; 
 
  private String lastName; 
 
  public String getFirstName() { 
    return firstName; 
  } 
 
  public void setFirstName(String firstName) { 
    this.firstName = firstName; 
  } 
 
  public String getLastName() { 
    return lastName; 
  } 
 
  public void setLastName(String lastName) { 
    this.lastName = lastName; 
  } 
 
} 

    Controller代碼:

@RequestMapping("test.do") 
public void test(User user) { 
   
} 

    JSP表單代碼:

form action="test.do" method="post"> 
  input name="firstName" value="張" type="text"/> 
  input name="lastName" value="三" type="text"/> 
  ...... 
/form> 

非常簡單,只需將對象的屬性名和input的name值一一對應(yīng)即可。

4. 自定義復(fù)合對象類型:

    Model代碼:

public class ContactInfo { 
 
  private String tel; 
 
  private String address; 
 
  public String getTel() { 
    return tel; 
  } 
 
  public void setTel(String tel) { 
    this.tel = tel; 
  } 
 
  public String getAddress() { 
    return address; 
  } 
 
  public void setAddress(String address) { 
    this.address = address; 
  } 
 
} 
 
public class User { 
 
  private String firstName; 
 
  private String lastName; 
 
  private ContactInfo contactInfo; 
 
  public String getFirstName() { 
    return firstName; 
  } 
 
  public void setFirstName(String firstName) { 
    this.firstName = firstName; 
  } 
 
  public String getLastName() { 
    return lastName; 
  } 
 
  public void setLastName(String lastName) { 
    this.lastName = lastName; 
  } 
 
  public ContactInfo getContactInfo() { 
    return contactInfo; 
  } 
 
  public void setContactInfo(ContactInfo contactInfo) { 
    this.contactInfo = contactInfo; 
  } 
 
} 

    Controller代碼:

@RequestMapping("test.do") 
public void test(User user) { 
  System.out.println(user.getFirstName()); 
  System.out.println(user.getLastName()); 
  System.out.println(user.getContactInfo().getTel()); 
  System.out.println(user.getContactInfo().getAddress()); 
} 

    JSP表單代碼:

form action="test.do" method="post"> 
  input name="firstName" value="張" />br> 
  input name="lastName" value="三" />br> 
  input name="contactInfo.tel" value="13809908909" />br> 
  input name="contactInfo.address" value="北京海淀" />br> 
  input type="submit" value="Save" /> 
/form> 

User對象中有ContactInfo屬性,Controller中的代碼和第3點(diǎn)說的一致,但是,在jsp代碼中,需要使用“屬性名(對象類型的屬性).屬性名”來命名input的name。

5. List綁定:

    List需要綁定在對象上,而不能直接寫在Controller方法的參數(shù)中。

    Model代碼:

public class User { 
 
  private String firstName; 
 
  private String lastName; 
 
  public String getFirstName() { 
    return firstName; 
  } 
 
  public void setFirstName(String firstName) { 
    this.firstName = firstName; 
  } 
 
  public String getLastName() { 
    return lastName; 
  } 
 
  public void setLastName(String lastName) { 
    this.lastName = lastName; 
  } 
 
} 
 
    public class UserListForm { 
 
  private ListUser> users; 
 
  public ListUser> getUsers() { 
    return users; 
  } 
 
  public void setUsers(ListUser> users) { 
    this.users = users; 
  } 
 
} 

    Controller代碼:

@RequestMapping("test.do") 
public void test(UserListForm userForm) { 
  for (User user : userForm.getUsers()) { 
    System.out.println(user.getFirstName() + " - " + user.getLastName()); 
  } 
} 

    JSP表單代碼:

form action="test.do" method="post"> 
  table> 
   thead> 
     tr> 
      th>First Name/th> 
      th>Last Name/th> 
     /tr> 
   /thead> 
   tfoot> 
     tr> 
      td colspan="2">input type="submit" value="Save" />/td> 
     /tr> 
   /tfoot> 
   tbody> 
     tr> 
      td>input name="users[0].firstName" value="aaa" />/td> 
      td>input name="users[0].lastName" value="bbb" />/td> 
     /tr> 
     tr> 
      td>input name="users[1].firstName" value="ccc" />/td> 
      td>input name="users[1].lastName" value="ddd" />/td> 
     /tr> 
     tr> 
      td>input name="users[2].firstName" value="eee" />/td> 
      td>input name="users[2].lastName" value="fff" />/td> 
     /tr> 
   /tbody> 
  /table> 
/form> 

其實(shí),這和第4點(diǎn)User對象中的contantInfo數(shù)據(jù)的綁定有點(diǎn)類似,但是這里的UserListForm對象里面的屬性被定義成List,而不是普通自定義對象。所以,在JSP中需要指定List的下標(biāo)。值得一提的是,Spring會創(chuàng)建一個(gè)以最大下標(biāo)值為size的List對象,所以,如果JSP表單中有動(dòng)態(tài)添加行、刪除行的情況,就需要特別注意,譬如一個(gè)表格,用戶在使用過程中經(jīng)過多次刪除行、增加行的操作之后,下標(biāo)值就會與實(shí)際大小不一致,這時(shí)候,List中的對象,只有在jsp表單中對應(yīng)有下標(biāo)的那些才會有值,否則會為null,看個(gè)例子:

    JSP表單代碼:

form action="test.do" method="post"> 
  table> 
   thead> 
     tr> 
      th>First Name/th> 
      th>Last Name/th> 
     /tr> 
   /thead> 
   tfoot> 
     tr> 
      td colspan="2">input type="submit" value="Save" />/td> 
     /tr> 
   /tfoot> 
   tbody> 
     tr> 
      td>input name="users[0].firstName" value="aaa" />/td> 
      td>input name="users[0].lastName" value="bbb" />/td> 
     /tr> 
     tr> 
      td>input name="users[1].firstName" value="ccc" />/td> 
      td>input name="users[1].lastName" value="ddd" />/td> 
     /tr> 
     tr> 
      td>input name="users[20].firstName" value="eee" />/td> 
      td>input name="users[20].lastName" value="fff" />/td> 
     /tr> 
   /tbody> 
  /table> 
/form> 

這個(gè)時(shí)候,Controller中的userForm.getUsers()獲取到List的size為21,而且這21個(gè)User對象都不會為null,但是,第2到第19的User對象中的firstName和lastName都為null。打印結(jié)果:

aaa - bbb 
ccc - ddd 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
null - null 
eee - fff 

6. Set綁定:

    Set和List類似,也需要綁定在對象上,而不能直接寫在Controller方法的參數(shù)中。但是,綁定Set數(shù)據(jù)時(shí),必須先在Set對象中add相應(yīng)的數(shù)量的模型對象。

    Model代碼:

public class User { 
 
  private String firstName; 
 
  private String lastName; 
 
  public String getFirstName() { 
    return firstName; 
  } 
 
  public void setFirstName(String firstName) { 
    this.firstName = firstName; 
  } 
 
  public String getLastName() { 
    return lastName; 
  } 
 
  public void setLastName(String lastName) { 
    this.lastName = lastName; 
  } 
 
} 
 
public class UserSetForm { 
 
  private SetUser> users = new HashSetUser>(); 
   
  public UserSetForm(){ 
    users.add(new User()); 
    users.add(new User()); 
    users.add(new User()); 
  } 
 
  public SetUser> getUsers() { 
    return users; 
  } 
 
  public void setUsers(SetUser> users) { 
    this.users = users; 
  } 
 
} 

    Controller代碼:

@RequestMapping("test.do") 
public void test(UserSetForm userForm) { 
  for (User user : userForm.getUsers()) { 
    System.out.println(user.getFirstName() + " - " + user.getLastName()); 
  } 
} 

    JSP表單代碼:

form action="test.do" method="post"> 
  table> 
   thead> 
     tr> 
      th>First Name/th> 
      th>Last Name/th> 
     /tr> 
   /thead> 
   tfoot> 
     tr> 
      td colspan="2">input type="submit" value="Save" />/td> 
     /tr> 
   /tfoot> 
   tbody> 
     tr> 
      td>input name="users[0].firstName" value="aaa" />/td> 
      td>input name="users[0].lastName" value="bbb" />/td> 
     /tr> 
     tr> 
      td>input name="users[1].firstName" value="ccc" />/td> 
      td>input name="users[1].lastName" value="ddd" />/td> 
     /tr> 
     tr> 
      td>input name="users[2].firstName" value="eee" />/td> 
      td>input name="users[2].lastName" value="fff" />/td> 
     /tr> 
   /tbody> 
  /table> 
/form> 

基本和List綁定類似。

需要特別提醒的是,如果最大下標(biāo)值大于Set的size,則會拋出org.springframework.beans.InvalidPropertyException異常。所以,在使用時(shí)有些不便。暫時(shí)沒找到解決方法,如果有網(wǎng)友知道,請回帖共享你的做法。

5. Map綁定:

    Map最為靈活,它也需要綁定在對象上,而不能直接寫在Controller方法的參數(shù)中。

    Model代碼:

public class User { 
 
  private String firstName; 
 
  private String lastName; 
 
  public String getFirstName() { 
    return firstName; 
  } 
 
  public void setFirstName(String firstName) { 
    this.firstName = firstName; 
  } 
 
  public String getLastName() { 
    return lastName; 
  } 
 
  public void setLastName(String lastName) { 
    this.lastName = lastName; 
  } 
 
} 
 
public class UserMapForm { 
 
  private MapString, User> users; 
 
  public MapString, User> getUsers() { 
    return users; 
  } 
 
  public void setUsers(MapString, User> users) { 
    this.users = users; 
  } 
 
} 

    Controller代碼:

@RequestMapping("test.do") 
public void test(UserMapForm userForm) { 
  for (Map.EntryString, User> entry : userForm.getUsers().entrySet()) { 
    System.out.println(entry.getKey() + ": " + entry.getValue().getFirstName() + " - " + 
                 entry.getValue().getLastName()); 
  } 
} 

    JSP表單代碼:

form action="test.do" method="post"> 
  table> 
   thead> 
     tr> 
      th>First Name/th> 
      th>Last Name/th> 
     /tr> 
   /thead> 
   tfoot> 
     tr> 
      td colspan="2">input type="submit" value="Save" />/td> 
     /tr> 
   /tfoot> 
   tbody> 
     tr> 
      td>input name="users['x'].firstName" value="aaa" />/td> 
      td>input name="users['x'].lastName" value="bbb" />/td> 
     /tr> 
     tr> 
      td>input name="users['y'].firstName" value="ccc" />/td> 
      td>input name="users['y'].lastName" value="ddd" />/td> 
     /tr> 
     tr> 
      td>input name="users['z'].firstName" value="eee" />/td> 
      td>input name="users['z'].lastName" value="fff" />/td> 
     /tr> 
   /tbody> 
  /table> 
/form> 

打印結(jié)果:

x: aaa - bbb 
y: ccc - ddd 
z: eee - fff 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • SpringMVC實(shí)現(xiàn)數(shù)據(jù)綁定及表單標(biāo)簽
  • SpringMVC 參數(shù)綁定意義及實(shí)現(xiàn)過程解析
  • SpringMVC中使用@PathVariable綁定路由中的數(shù)組的方法
  • SpringMVC中利用@InitBinder來對頁面數(shù)據(jù)進(jìn)行解析綁定的方法
  • 一篇文章帶你了解SpringMVC數(shù)據(jù)綁定

標(biāo)簽:白銀 烏蘭察布 臨汾 山南 銅川 開封 自貢 吉林

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SpringMVC 數(shù)據(jù)綁定實(shí)例詳解》,本文關(guān)鍵詞  SpringMVC,數(shù)據(jù),綁定,實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SpringMVC 數(shù)據(jù)綁定實(shí)例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于SpringMVC 數(shù)據(jù)綁定實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    99视频免费播放| 欧美精品在欧美一区二区| 国产河南妇女毛片精品久久久| 91成人国产综合久久精品| 国产精品白丝一区二区三区| 黄色一级大片在线免费看产| 特级西西444www大精品视频免费看| 欧美视频亚洲视频| 色激情天天射综合网| 两个人免费视频观看日本| 女人被狂躁到高潮的免费| 夜夜爽妓女8888视频免费观看| 精品成人在线视频| 精品女同一区二区三区在线观看| 免费一区二区三区视频导航| 97精品久久久| 欧美精品综合| 国产视频一视频二| 全球中文成人在线| 国产在线观看一区二区三区| 久久丫精品忘忧草西安产品| 黑人精品无码一区二区三区AV| 在线观看a视频| 欧美自拍资源在线| 波多野结衣在线播放| 精品国产乱码久久久久久1区2匹| 国模人体一区二区| 懂色av色香蕉一区二区蜜桃| 91社区视频在线观看| 国产精品福利在线| 成人欧美一区二区三区黑人一| 海角社区69精品视频| 欧美精品色图| 在线观看免费黄色小视频| 97超碰人人看人人| 搡老岳熟女国产熟妇| 国产一区二区精品| 污污污www精品国产网站| 亚洲天堂久久久久久久| 96国产粉嫩美女| av在线免费不卡| 四季av中文字幕| 国产精品美女久久久久久久久久久| 亚洲精品视频在线观看网站| 爱情岛论坛亚洲自拍| 国产欧美日韩精品高清二区综合区| 色图在线观看| 天堂网一区二区三区| 大胆国模一区二区三区| 麻豆亚洲av成人无码久久精品| 日韩欧美中文在线观看| 精品久久人妻av中文字幕| 日韩精品一区二区三区中文在线| 在线视频你懂得一区| 国产理论片免费观看| 亚洲图片激情小说| 男女激情视频一区| 精品国产一区二区三区av性色| 色婷婷精品大视频在线蜜桃视频| 丁香婷婷综合五月| 国产精品久久久久久麻豆一区软件| 伊人久久一区二区三区| 国产伦一区二区三区色一情| 免费在线观看黄网站| 成人在线免费观看视频网站| 超碰在线caoporn| 蜜桃av噜噜一区二区三区| 亚洲精品日韩在线观看| 国产精品久久久午夜夜伦鲁鲁| 成人羞羞网站入口免费| 成人免费在线观看视频网站| 丁香婷婷久久| 精品剧情v国产在线观看| 性xxxx奶大欧美高清| 欧美刺激午夜性久久久久久久| 久草在线最新视频| 99精品热6080yy久久| 九色综合日本| 久久精品久久99精品久久| 日本国产精品视频| 97免费在线视频| 成年人黄国产| 亚洲精品第一国产综合精品| 91在线导航| 欧美精品momsxxx| 国产精品免费观看久久| 国产精品久久久999| 色狠狠一区二区三区香蕉| 成人中文字幕视频| 2019天天操夜夜操| 久久精品人人做人人爽| 午夜精品久久久久久99热软件| 无码人妻精品一区二| 免费毛片在线| 亚洲国产免费av| 99re6热在线精品视频播放| 亚洲麻豆精品| 国产精品18久久久久久首页狼| 91麻豆精品91久久久久同性| 成人免费视频观看| 国产成人精品免费| 日韩护士脚交太爽了| 成人在色线视频在线观看免费大全| 成人av片网址| 16—17女人毛片毛片| 92久久精品一区二区| 国产厕拍一区| 日韩一区二区三区在线观看视频| 久久久久人妻一区精品色欧美| 超级碰碰视频| 欧美福利视频| 亚洲高清国产拍精品26u| 黄网在线观看视频| 亚洲国产无线乱码在线观看| 国产永久免费高清在线观看| 男人添女荫道口喷水视频| 亚欧精品在线| 男人插曲女人视频免费| 免费高清在线一区| 国产又粗又长又爽视频| 色婷婷综合缴情免费观看| 日本免费在线视频不卡一不卡二| 日批视频在线播放| 国产永久免费| 狠狠干狠狠搞| 国产真实老熟女无套内射| 欧美国产精品va在线观看| 亚洲视频中文字幕在线观看| 中文字幕 欧美激情| 国产一区二区在线观看免费播放| 国产美女性感在线观看懂色av| 91蝌蚪91九色| 国产美女久久久久久| 樱花草在线观看www| 国产在线色视频| 婷婷中文字幕一区| 日韩一区二区三区四区五区六区| 国产一区二区在线视频观看| 亚洲欧美tv| 精品福利影视| 精品久久久三级| 亚洲精品视频自拍| 91中文在线视频| 日韩影片在线观看| 亚洲另类中文字| 亚洲一区在线视频观看| 992tv人人草| 中文字幕在线观看91| 国产精品色婷婷在线观看| 久久精品视频99| 影音先锋2020资源| 国产精品一区二区三区在线播放| 日韩丝袜视频| 日本少妇激三级做爰在线| japanese色国产在线看视频| 91网址在线播放| 妺妺窝人体色www看人体| 神马午夜电影一区二区三区在线观看| 国产精品一区免费在线观看| 国产乱人视频免费播放| jizzjizz中国精品麻豆| 国产精品亚洲视频| 国产探花精品一区二区| 99精品福利视频| 日韩欧美高清一区二区三区| jizz.日本| 国产不卡在线| 免费黄频在线观看| 欧美三级日韩三级| 激情黄产视频在线免费观看| 91麻豆精品久久毛片一级| 一区二区三区四区在线观看国产日韩| 国产高清视频免费最新在线| 国产精品呻吟| 美女性感视频久久| free性护士videos欧美| 国产一区三区三区| 给我免费播放片在线观看| 免费观看成人av| 欧美做爰爽爽爽爽爽爽| 成人在线免费观看网站| 国产精品久久久久久久久久直播| 亚洲av无码专区在线播放中文| 丁香花免费高清完整在线播放| 国产不卡精品| 圆产精品久久久久久久久久久| 久久久亚洲国产美女国产盗摄| a级片在线免费观看| 9色porny| 日本久久一区| 一级特黄特色的免费大片| 欧美怡红院在线| 国产精品普通话| 免费黄色av电影| 日韩欧美猛交xxxxx无码| 国产中文一区二区三区| 日韩精品一级二级| 九九99九九精彩| 国产suv精品一区| 亚洲国产精品女人久久久| 高清亚洲高清| 国产精品扒开腿做爽爽爽视频软件| 欧美视频在线视频| 国产女教师bbwbbwbbw| 日韩欧美一区二区三区四区| 91传媒免费视频| 在线观看视频一区二区三区| 嘿咻视频在线看| 亚洲午夜精品网| 日韩一区二区三区高清| 在线观看免费小视频| 网曝门事件国产精品二区| 欧美一卡2卡3卡4卡| 日韩欧美在线综合网| 99在线无码精品入口| 中文官网资源新版中文第二页在线观看| 久操成人在线视频| 日韩av综合在线观看| 先锋在线资源一区二区三区| 亚洲午夜在线视频| 亚洲欧美国产va在线影院| 无码h肉动漫在线观看| 666欧美在线视频| 欧美日韩免费做爰大片| 偷拍精品精品一区二区三区| 亚洲精品国精品久久99热| 亚洲高清影院| 国产亚洲欧美激情| 亚洲欧美国产另类| 欧日韩一区二区三区| 国产亚洲成人一区| 暗呦丨小u女国产精品| 男女啪啪免费视频网站| 91丨porny丨在线中文| 亚洲色图图片| 久久精品色欧美aⅴ一区二区| 一区二区三区不卡在线观看| 欧美国产日韩在线观看| 精品亚洲一区二区三区在线播放| 999精品视频在线观看播放| 亚洲春色综合另类校园电影| 久久国产成人精品| 91av国产在线| 国产综合图区| 亚洲中文字幕无码av| 国产精品一区久久久久| 嫩草视频在线免费观看| 成年人黄视频网站| 久久躁日日躁aaaaxxxx| 91麻豆精品91久久久久同性| 国产午夜精品一区理论片飘花| 久久久美女毛片| 亚洲综合精品伊人久久| 久久久精品毛片| 精品久久一二三区| www午夜视频| 亚洲一区二区偷拍精品| 97在线播放视频| 欧美三级 欧美一级| 野外性xxxxfreexxxxx欧美| 精油按摩中文字幕久久| 丁香花在线观看完整版电影| 亚洲午夜精品久久| 爱情岛论坛vip永久入口| 女女色综合影院| 男人揉女人奶房视频60分| 亚洲成人在线视频播放| 久久人妻无码一区二区| 91超碰成人| 一区二区三区伦理| 欧美成人精品午夜一区二区| 欧美激情视频一区二区三区不卡| 亚洲精品一区av在线播放| 高清欧美精品xxxxx在线看| 北岛玲日韩精品一区二区三区| 在线观看国产小视频| 亚洲神马久久| 91亚洲国产成人精品一区二区三| 欧美黑人性受xxxx精品| 国产av第一区| 亚洲同志网站入口| 97久久精品一区二区三区的观看方式| 欧美电影网站| 日韩经典中文字幕一区| 天堂av中文在线资源库| 91沈先生播放一区二区| 精品国精品国产自在久国产应用| 亚洲国产精品久久不卡毛片| 91精品国产麻豆| 国产精品成人无码| 中文字幕免费在线观看视频一区| 国产亚洲精品超碰| 久久激情免费视频| 怡红院亚洲色图| juy有坂深雪中文字幕| 色视频在线观看| av动漫一区二区| jjzz黄色片| 日韩欧美伦理| 精品国产乱码久久久久久1区2匹| 色猫av在线| 久久丝袜美腿综合| 青青青草网站免费视频在线观看| 中文字幕乱码亚洲无线精品一区| 国产又粗又猛又爽视频| 国产 日韩 欧美 综合 一区| 国模大尺度私拍在线视频| 九色91播放| 91精品国产综合久久精品app| 日韩欧美激情一区二区| 日韩国产精品毛片| 一级片免费在线播放| 波多野结衣电影在线播放| 综合久久一区二区三区| 国产麻豆一精品一av一免费| 国产成人a亚洲精品| 日韩午夜激情视频| 青春娱乐分类视频精品2动漫| 亚洲欧美高清在线| 九九热精品视频在线观看| 日韩免费毛片| 亚洲福利精品在线| 手机亚洲手机国产手机日韩| 两根大肉大捧一进一出好爽视频| 视频污在线观看| 国内揄拍国内精品少妇国语| 99精品国产在热久久下载| 日韩女优在线视频|