亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

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

2024-09-05 00:23:01
字體:
供稿:網(wǎng)友

 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 HashMap<Class, 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或者""的話,會(huì)出現(xiàn)數(shù)據(jù)轉(zhuǎn)換的異常。也就是說,必須保證表單傳遞過來的數(shù)據(jù)不能為null或"",所以,在開發(fā)過程中,對(duì)可能為空的數(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. 自定義對(duì)象類型:

    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> 

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

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

    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對(duì)象中有ContactInfo屬性,Controller中的代碼和第3點(diǎn)說的一致,但是,在jsp代碼中,需要使用“屬性名(對(duì)象類型的屬性).屬性名”來命名input的name。

5. List綁定:

    List需要綁定在對(duì)象上,而不能直接寫在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 List<User> users;    public List<User> getUsers() {     return users;   }    public void setUsers(List<User> 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對(duì)象中的contantInfo數(shù)據(jù)的綁定有點(diǎn)類似,但是這里的UserListForm對(duì)象里面的屬性被定義成List,而不是普通自定義對(duì)象。所以,在JSP中需要指定List的下標(biāo)。值得一提的是,Spring會(huì)創(chuàng)建一個(gè)以最大下標(biāo)值為size的List對(duì)象,所以,如果JSP表單中有動(dòng)態(tài)添加行、刪除行的情況,就需要特別注意,譬如一個(gè)表格,用戶在使用過程中經(jīng)過多次刪除行、增加行的操作之后,下標(biāo)值就會(huì)與實(shí)際大小不一致,這時(shí)候,List中的對(duì)象,只有在jsp表單中對(duì)應(yīng)有下標(biāo)的那些才會(huì)有值,否則會(huì)為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對(duì)象都不會(huì)為null,但是,第2到第19的User對(duì)象中的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類似,也需要綁定在對(duì)象上,而不能直接寫在Controller方法的參數(shù)中。但是,綁定Set數(shù)據(jù)時(shí),必須先在Set對(duì)象中add相應(yīng)的數(shù)量的模型對(duì)象。

    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 Set<User> users = new HashSet<User>();      public UserSetForm(){     users.add(new User());     users.add(new User());     users.add(new User());   }    public Set<User> getUsers() {     return users;   }    public void setUsers(Set<User> 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,則會(huì)拋出org.springframework.beans.InvalidPropertyException異常。所以,在使用時(shí)有些不便。暫時(shí)沒找到解決方法,如果有網(wǎng)友知道,請(qǐng)回帖共享你的做法。

5. Map綁定:

    Map最為靈活,它也需要綁定在對(duì)象上,而不能直接寫在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 Map<String, User> users;    public Map<String, User> getUsers() {     return users;   }    public void setUsers(Map<String, User> users) {     this.users = users;   }  } 

    Controller代碼:

@RequestMapping("test.do") public void test(UserMapForm userForm) {   for (Map.Entry<String, 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 

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


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JSP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
99re国产| segui88久久综合9999| 中文字幕在线观看| 深夜福利91大全| 又粗又硬又爽国产视频| 日韩精品一区二区三区中文不卡| 91精品又粗又猛又爽| 四色永久免费网站| 91麻豆精品国产91久久久使用方法| 亚洲精品播放| 日操夜操天天操| 五月天婷亚洲天综合网精品偷| 91精品视频在线播放| 日韩精品一区二区不卡| 7788色淫网站小说| 欧美国产国产综合| 亚洲视频精品一区| 欧美 日韩 国产 成人 在线观看| 全网国产福利在线播放| 91精品国产网站| 成人片免费看| 日韩欧美小视频| 亚洲人成精品久久久久| www.久久色.com| 亚洲成人国产精品| av在线播放一区二区三区| 久热这里有精品| 国产成人精品一区二区无码呦| 久久久久无码国产精品不卡| 天堂电影院在线| 欧美日溪乱毛片| 国产精品美女久久久久aⅴ国产馆| 国产日韩av在线| 污污的视频在线观看| 日本一二三区在线| 91好吊色国产欧美日韩在线| 欧美精品电影在线播放| 一本一道久久a久久综合精品| 97人妻精品视频一区| 亚洲特色特黄| 欧洲激情综合| 欧美深夜福利| 国产啪精品视频| 黄色动漫在线免费看| 婷婷无套内射影院| 日本成人超碰在线观看| 欧美日韩国产乱码电影| 欧美亚洲禁片免费| 久久精品国产精品亚洲色婷婷| 日本视频在线| 免费一级suv好看的国产网站| 国产精品h在线观看| 美女伦理水蜜桃4| 国产一区视频免费观看| 香蕉视频成人在线观看| 超碰一区二区| 日本高清视频免费观看| 午夜视频在线免费播放| 精品视频9999| 中文字幕久热精品在线视频| 日本三级午夜理伦三级三| 精品一区三区| 国产a√精品区二区三区四区| 三级不卡在线观看| 95影院理论片在线观看| 成人午夜免费视频| 天天做天天爱天天爽| 国产资源一区| 不卡的av网站| 91网页在线看| 亚洲成人久久一区| 欧美日韩看看2015永久免费| 欧美黄色网络| 影音先锋中文字幕在线视频| 濑亚美莉一二区在线视频| 久久一综合视频| 亚洲国产精品无码观看久久| 日韩一级片在线播放| yiren22综合网成人| 国产精品一区无码| 欧美系列日韩一区| 91亚洲一区| 亚洲一二三区视频在线观看| 91黄色小视频| 777色狠狠一区二区三区| 男人的天堂久久久| 黄色片av在线| 亚洲综合久久久久| 中文字幕第7页| 亚洲电影免费| 国产喂奶挤奶一区二区三区| 国产露脸91国语对白| 四虎影视4hu4虎成人| 亚洲精品成人电影| 91丝袜一区二区三区| 91尤物视频在线观看| 欧美/亚洲一区| 成人3d漫画免费无遮挡软件| www在线观看免费视频| 国产一区二区三区四区福利| 天天爽天天爽夜夜爽| 日本毛片在线免费观看| 一区二区三区不卡视频在线观看| 黄页网站在线免费观看| 欧美激情视频播放| 精品国产凹凸成av人导航| 自拍偷拍欧美日韩| 欧美交受高潮1| 国产精品久久久免费| 亚州黄色一级| 免费观影入口看日本视频| 超碰在线一区| 久久人人爽亚洲精品天堂| 亚洲精品**不卡在线播he| 欧洲美熟女乱又伦| 中文幕一区二区三区久久蜜桃| 天堂地址在线www| 国产女人18毛片水真多| 色诱亚洲精品久久久久久| 九九九热视频| 国产香蕉97碰碰久久人人| 一区二区三区在线免费播放| 蜜芽在线视频| 免费一区二区三区在线视频| 91精品国产自产91精品| 亚洲91久久| 国产精品一区二区三区网站| 欧美性极品xxxx做受| 特级西西444www大精品视频免费看| 国产精品美女一区二区| 香蕉成人app免费看片| 91精品国产91久久久久久最新毛片| 天堂网免费视频| 欧美主播一区二区三区| 欧美欧美欧美| 国产精品xxxx| 中文字幕欧美日韩一区二区| 欧美一区二区不卡视频| 99在线观看视频网站| 久久久久久久久久久久久久免费看| 欧美日韩看看2015永久免费| 欧美激情中文字幕乱码免费| 日韩视频1区| 黄色三级网站在线观看| www.17c.com喷水少妇| 日本妇女毛茸茸| 日韩少妇高潮抽搐| sm性调教片在线观看| 国产在线高清| 成人h动漫精品一区二区下载| 激情av综合网| 97神马电影| bdsm精品捆绑chinese女| 成人免费看黄网站| 成人免费观看视频| 欧美日韩国产一区二区在线观看| 日韩一区二区视频| 日本五十熟hd丰满| 韩国成人av| 亚洲男人天天操| 91精品婷婷国产综合久久性色| 色婷婷精品大视频在线蜜桃视频| 先锋影音资源999| 99在线精品一区二区三区| 领导边摸边吃奶边做爽在线观看| 26uuu亚洲伊人春色| 中文字幕在线观看的网站| av老司机在线观看| 日韩av不卡在线观看| 国产xxxxx在线观看| 欧美性猛交xx| 一区二区导航| 亚洲黄色网址大全| 色综合婷婷久久| 免费看黄色的视频| 日韩中文在线视频| 成人久久视频在线观看| 九色精品高清在线播放| 天天操天天干天天玩| 国产在线视频一区二区三区| 亚洲一区二区三区色| 波多野结衣av无码| 国产精华一区二区三区| 日韩影视一区二区三区| 欧美日韩不卡在线视频| 精品人妻少妇一区二区| 无码一区二区三区视频| 欧美aaaaaa| 91麻豆精品久久毛片一级| 国一区二区在线观看| 青青草成人激情在线| 欧美精品在线观看91| 一本色道久久综合一区| 免费精品国产的网站免费观看| 国产成人综合在线播放| av大全在线| 免费黄色在线网站| 99re热视频| 超碰在线影院| 欧美97人人模人人爽人人喊视频| 97精品免费视频| 精品无人国产偷自产在线| 奇米影视四色在观看线| 免费观看成年人视频在线观看| 男女羞羞网站| 欧美日韩成人在线| 高清国产午夜精品久久久久久| 精品国产一区二区三区不卡在线| 国产性生活毛片| 国产福利在线免费| 亚洲最大成人综合| 亚洲国产日韩欧美在线动漫| 一本一道综合狠狠老| 精品国产欧美日韩不卡在线观看| www久久久com| 最近中文字幕一区二区| 国产精品精品视频| 午夜午夜精品一区二区三区文| 丝袜美腿精品国产二区| 天天操天天干天天摸| 亚洲色图50p| 亚洲肉体裸体xxxx137| 亚洲大尺度视频| 中文字幕一区二区三区久久网站| 91视频网址免费观看| 成人综合电影| 操人视频在线播放| 色爱综合av| 精品久久久久久综合日本| 成人毛片在线播放| 中文字幕日韩欧美在线| 国产日韩在线一区| 成人在线免费网站| 国产毛片视频网站| 先锋影音男人站你懂得| 欧美人善zozσ性伦交| 日日干天夜夜| 亚洲精品一区二区三区蜜桃| av在线一区不卡| 久久精品国内一区二区三区水蜜桃| 欧美成人毛片| 久久99精品久久久水蜜桃| 手机在线免费看av| 久久se精品一区精品二区| 成人福利免费网站| 国产欧美高清在线| 2021国产视频| 免费在线观看的毛片| 成人av在线网址| 性一交一乱一伧国产女士spa| 亚洲三区欧美一区国产二区| 国产+成+人+亚洲欧洲在线| 又黄又爽在线观看| 亚洲在线一区| 亚洲乱码国产乱码精品精98午夜| 亚洲黄色毛片| 美女被艹网站| 久久人妻无码aⅴ毛片a片app| 久久在线播放| 人妻丰满熟妇av无码区hd| 五月婷婷亚洲| 91丝袜在线| 91天堂在线| 国产精品一区二区亚洲| 日韩亚洲欧美中文字幕| 色综合久久av| 性国产高清在线观看| 桃花岛成人影院| 欧美乱妇高清无乱码免费| julia中文字幕久久亚洲蜜臀| 无码人妻av一区二区三区波多野| 日本网站免费在线观看| www.avtt| 亚洲国产裸拍裸体视频在线观看乱了| www.精品国产| 国产熟女一区二区三区四区| 天天色天天干天天色| 色三级在线观看| 亚洲第一搞黄网站| 97国产精品videossex| 国产成人99久久亚洲综合精品| 亚洲色图美腿丝袜| 禁断一区二区三区在线| www.日韩精品| 亚洲AV成人无码精电影在线| av伦理在线| 国产一区二区三区免费在线| 日韩精品一区二区三区电影| 日韩av一区二区三区美女毛片| 亚洲综合av网| 永久免费未满蜜桃| 国产最顶级的黄色片在线免费观看| 96pao国产成视频永久免费| 麻豆视频在线免费看| 国产一区二区三区黄视频| 久久久亚洲综合| 成人av毛片| 福利视频网址导航| 国产福利视频网站| 亚洲一区导航| 国产一区二区三区黄| 欧美激情一区二区三区免费观看| 99国产一区二区三精品乱码| 九九久久久2| 欧美性色xo影院| 久久精品国产久精国产| 欧美乱偷一区二区三区在线| 中文字幕欧美日韩一区二区三区| 性色av一区二区三区| 日韩av系列| 性色视频在线观看| 好色视频app| 九九在线免费视频| 精品视频中文字幕| 轻点好疼好大好爽视频| 91精品国产品国语在线不卡| 久久久免费在线观看| 欧美伊人久久久久久午夜久久久久| 一二三四中文在线| 国产成人精品日本亚洲专区61| 538在线精品| 久草精品视频在线观看| 欧美风情在线观看| 久久深夜福利免费观看| 2017亚洲天堂1024| 亚洲国产精品成人久久蜜臀| 日本韩国在线观看| 国产成人免费|