日韩av高清在线影院,欧美日韩国产综合色视频在线,日韩精品人妻在线视频,内射极品高挑少妇人妻,久久久国产成人免费,97久久视频在线观看,人妻中文字幕日韩有码人妻熟女,亚洲国产成人精品福利,99精品国产福利在线观看

Web Service簡介及開發(fā)實例 webservice java 實例

Web Service簡介及開發(fā)實例

文章分類:Java編程文章分類:JavaEye 關鍵字: web service jax-ws saaj jaxb java

Web Service簡介及開發(fā)實例

作者:岳鄉(xiāng)成

本文檔實例Dome基于的技術是:JSF + Jboss-seam-2.1.1.GA. + Jboss 4.2.3 GA + EJB 3.0 + Jboss ESB + My-SQL-5.0.8 + JDK 1.6。由于實例工程太大,不能放博客上,如有需要聯(lián)系我,MSN:xiangcheng.yue@163.com。

QQ號碼:827650367。

一、 Web Service的簡介

1、 什么是Web Service

Web services是建立可互操作的分布式應用程序的新平臺。

Web service平臺是一套標準,它定義了應用程序如何在Web上實現(xiàn)互操作性。你可以用任何你喜歡的語言,在任何你喜歡的平臺上寫Web service ,只要我們可以通過Web service標準對這些服務進行查詢和訪問。

Web service平臺需要一套協(xié)議來實現(xiàn)分布式應用程序的創(chuàng)建。任何平臺都有它的數(shù)據(jù)表示方法和類型系統(tǒng)。要實現(xiàn)互操作性,Web service平臺必須提供一套標準的類型系統(tǒng),用于溝通不同平臺、編程語言和組件模型中的不同類型系統(tǒng)。

基礎的 Web Services 平臺是 XML + HTTP。

HTTP 協(xié)議是最常用的因特網(wǎng)協(xié)議。

XML 提供了一種可用于不同的平臺和編程語言之間的語言。

Web services 平臺是簡單的可共同操作的消息收發(fā)框架。它仍然缺少許多諸如安全和路由等重要的特性。但是,一旦 SOAP 變得更加高級,這些事項就會得到解決。

Web services 有望使應用程序更加容易通信。

★ Web services 把 Web 應用程序提升到了另外一個層面

通過使用 Web services,您的應用程序可向全世界發(fā)布功能或消息。

Web services 使用 XML 來編解碼數(shù)據(jù),并使用 SOAP 借由開放的協(xié)議來傳輸數(shù)據(jù)。

通過 Web services,您的會計部門的 Win 2k 服務器可與 IT 供應商的 UNIX 服務器進行連接。

★ Web services 有兩種類型的應用

可重復使用的應用程序組件

有一些功能是不同的應用程序常常會用到的。那么為什么要周而復始地開發(fā)它們呢?

Web services 可以把應用程序組件作為服務來提供,比如匯率轉換、天氣預報或者甚至是語言翻譯等等。

比較理想的情況是,每種應用程序組件只有一個最優(yōu)秀的版本,這樣任何人都可以在其應用程序中使用它。

連接現(xiàn)有的軟件

通過為不同的應用程序提供一種鏈接其數(shù)據(jù)的途徑,Web services有助于解決協(xié)同工作的問題。

通過使用 Web services,您可以在不同的應用程序與平臺之間來交換數(shù)據(jù)。

★ Web Services 擁有兩種基本的元素。

它們是:SOAP及WSDL

(1)什么是 SOAP?

? SOAP 指簡易對象訪問協(xié)議

? SOAP 是一種通信協(xié)議

? SOAP 用于應用程序之間的通信

? SOAP 是一種用于發(fā)送消息的格式

? SOAP 被設計用來通過因特網(wǎng)進行通信

? SOAP 獨立于平臺

? SOAP 獨立于語言

? SOAP 基于 XML

? SOAP 很簡單并可擴展

? SOAP 允許您繞過防火墻

? SOAP 將作為 W3C 標準來發(fā)展

(2)什么是 WSDL?

WSDL 是基于 XML 的用于描述 Web Services 以及如何訪問 Web Services 的語言。

? WSDL 指網(wǎng)絡服務描述語言

? WSDL 使用 XML 編寫

? WSDL 是一種 XML 文檔

? WSDL 用于描述網(wǎng)絡服務

? WSDL 也可用于定位網(wǎng)絡服務

? WSDL 還不是 W3C 標準

2、 什么是JWS

JWS(Java Web Service)是Java應用平臺上專門用于開發(fā)Web服務系統(tǒng)及面向服務系統(tǒng)的產品,它的最新版本是2.0,Java EE 5和Java SE 6都對JWS 2.0提供支持。

在JWS 2.0,Java定義了一系列新的標準,JMS本身也包含了一些工具,如JAX-WS 2.0,JAXB 2.0,JAXP 1.4,SAAJ 1.3以及WS-Metadata等。

面向服務的系統(tǒng)往往由多個具有不同的子功能的獨立組件構成,通過他們之間良好的相互協(xié)作,可以實現(xiàn)復雜的需求。面向服務系統(tǒng)的這個特點,要求獨立組建之間有公共的接口,這些用于交換數(shù)據(jù)的公共接口有良好的定義。由于要實現(xiàn)組件之間的數(shù)據(jù)通信,這些具有良好定義的接口就必須要被別的組件識別并正確理解,才能實現(xiàn)協(xié)作。

在定義了公共的接口后,還存在具體的數(shù)據(jù)交換問題,即雙方需要遵循一個共同的數(shù)據(jù)交換標準,這個數(shù)據(jù)交換標準稱為協(xié)議。要在獨立的組件之間進行通信,需要一系列標準來嚴格規(guī)定數(shù)據(jù)通信的格式和規(guī)則。

Web Service的出現(xiàn)解決了上述問題,利用WSDL定義統(tǒng)一的接口格式,用SOAP消息統(tǒng)一輸入/輸出參數(shù)的統(tǒng)一格式。SOAP消息可以由多種途徑傳遞,比如,通過HTTP,SMTP及JMS協(xié)議傳遞。以HTTP為例,在服務使用端,WSDL的接口定義可以通過HTTP-GET請求獲取,而SOAP應答消息及回復消息的傳輸可以通過HTTP-POST請求來實現(xiàn)。這樣,基于WSDL和SOAP消息機制就可以滿足面向服務應用系統(tǒng)開發(fā)的需求。

Web Service平臺架構主要由三部分構成:序列化及反序列化子系統(tǒng)、調用子系統(tǒng)及發(fā)布子系統(tǒng)。這三個子系統(tǒng)并不受具體語言的限制,也不受平臺和框架的限制,無論使用Java語言還是.NET語言,無論使用Axis平臺還是JWS來開發(fā)web服務,都會涉及這三個最基本的功能模塊。

(1)序列化及反序列化

在JMS中將一個Java對象轉化為一個XML元素的過程,稱為序列化。反之將一個XML元素轉化為相應的Java

對象的過程,稱為反序列化。序列化和反序列化的過程要依賴于Java類和XML-Scheme之間的映射關系,JWS有獨立

的序列化和反序列化子系統(tǒng)用來負責完成這些映射及轉化。

在web服務的客戶端,序列化過程將參數(shù)轉化為xml結點,進而封裝成Soap請求消息,發(fā)送至服務器端的web服務端點。獲得返回值時,反序列化過程啟動,它將返回值從SOAP消息中指定的xml結點中取出,然后將它轉化為客戶端相對應的Java對象。

轉化規(guī)則的定義在JWS中是通過JAXB的注釋來完成的。新版的JAXB簡化了綁定規(guī)則的描述,它允許直接將規(guī)則以注解的形式寫入Java類。

例如:

@Entity

@Name("hotel")

@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)

@XmlType(name="", propOrder = {

"id",

"img",

"name",

"address",

"city",

"state",

"zip",

"country",

"price",

"ipAddress"

})

@XmlRootElement(name="Hotel")

public class Hotel implements Serializable

{

private Long id;

private String img;

private String name;

private String address;

private String city;

private String state;

private String zip;

private String country;

private BigDecimal price;

private String ipAddress = "192.168.1.112";

@Id @GeneratedValue

public Long getId()

{

return id;

}

public void setId(Long id)

{

this.id = id;

}

@Length(max = 50)

@NotNull

public String getImg() {

return img;

}

public void setImg(String img) {

this.img = img;

}

@Length(max=50) @NotNull

public String getName()

{

return name;

}

public void setName(String name)

{

this.name = name;

}

@Length(max=100) @NotNull

public String getAddress()

{

return address;

}

public void setAddress(String address)

{

this.address = address;

}

@Length(max=40) @NotNull

public String getCity()

{

return city;

}

public void setCity(String city)

{

this.city = city;

}

@Length(min=4, max=6) @NotNull

public String getZip()

{

return zip;

}

public void setZip(String zip)

{

this.zip = zip;

}

@Length(min=2, max=10) @NotNull

public String getState()

{

return state;

}

public void setState(String state)

{

this.state = state;

}

@Length(min=2, max=40) @NotNull

public String getCountry()

{

return country;

}

public void setCountry(String country)

{

this.country = country;

}

@Column(precision=6, scale=2)

public BigDecimal getPrice()

{

return price;

}

public void setPrice(BigDecimal price)

{

this.price = price;

}

@Transient

public String getIpAddress() {

return ipAddress;

}

public void setIpAddress(String ipAddress) {

this.ipAddress = ipAddress;

}

@Override

public String toString()

{

return "Hotel(" + name + "," + address + "," + city + "," + zip + ")";

}

}

(2)服務調用的過程

在面向服務的分布式系統(tǒng)中,一般將傳統(tǒng)的客戶服務器框架中的客戶端Client稱為服務的消費者,而將服務器端稱為服務的提供者。

按照現(xiàn)在的web服務標準,一個服務被調用時,在服務的提供端大致的處理過程如下:

①接受并預處理SOAP請求消息,例如效驗,處理SOAP消息報文頭。

②從消息中獲取該消息希望調用的接口和具體操作。

③利用web服務提供的支持,找到具體的實現(xiàn)對象,并調用該對象的接口。這個對象可以由不同的語言實現(xiàn)。JWS支持從WSDL到Java的映射,可以通過WSDL找到與它相對應的Java服務端點實現(xiàn)類。

④使用序列化工具的反序列化過程,將SOAP請求消息中的服務請求參數(shù)取出,傳遞給步驟3中的目標對象的相應函數(shù)。

⑤目標Java對象執(zhí)行相應的操作,將計算的結果以對象形式返回。

⑥使用序列化工具的序列化過程,根據(jù)wsdl中的定義,將步驟5中的結果對象序列化成XML元素,并封裝到SOAP回復消

息中。

⑦將步驟6中的SOAP回復消息發(fā)送回服務調用端。

與之對應的,在服務使用端的調用過程如下:

①首先創(chuàng)建服務端點接口對象SEI(Service Endpoint Interface),在Web服務客戶端一般都會有相應的工廠類完成SEI對象的實例化。在JWS中,SEI對象一般是由Java代理來實現(xiàn)的。

②客戶端通過SEI調用其中封裝的web服務接口。

③利用序列化工具的序列化過程,根據(jù)WSDL的定義,將客戶端的調用接口的參數(shù)轉化成XML元素,再將該元素封裝在SOAP請求消息里。

④在同步模式下,在SOAP請求消息發(fā)出后,客戶端會等待SOAP應答消息;異步模式下,客戶端順序執(zhí)行后續(xù)代碼,直到通過監(jiān)聽器接收到SOAP請求消息里。

⑤解析從服務器端獲得的SOAP應答消息,使用序列化工具中的反序列化過程,將SOAP應答消息中的數(shù)據(jù)轉化成客戶端對象,該對象的值就是被調用服務的返回值。

(3)web服務的發(fā)布

以JMS為例,web服務發(fā)布系統(tǒng)的主要功能

①以URL的形式公開被發(fā)布的WEB服務的WSDL文件,并綁定SOAP請求消息和Java目標類。

②發(fā)布JAVA目標文件(例如Java Object文件,WAR文件,JAR文件及相關配置文件等)。

③配置序列化和反序列化子系統(tǒng)。

④配置web服務端點監(jiān)聽器和SOAP消息預處理進程。

二、 web service的幾種開發(fā)及調用方式

(1)用EJB容器模型開發(fā)Web Service,用wsimport工具生成輔助類進行調用。

實例如下(實例中應用的EJB容器為Jboss,所有代碼是基于JBoss Seam架構來編寫的):

①服務的提供者端<提供服務端的代碼>:

服務的提供者端的任務是暴露一個web service以供外部使用,本例的web service是通過JavaEE平臺提供的@java.jws.WebService注解來實現(xiàn)的。

以下代碼的路徑是VSS上 前期調查文件夾下SOAweb service用EJB容器模型開發(fā)Web Service,用wsimport工具生成輔助類進行調用telebooksrcorgjbossseamexamplebookingwsimpl,用EJB容器模型開發(fā)Web Service,用wsimport工具生成輔助類進行調用文件夾下包括兩個文件夾:local,tele。tele文件夾下放服務的提供者端的工程和打好的EAR包。local文件夾下放服務的消費者端的工程和打好的EAR包。

package org.jboss.seam.example.booking.ws.impl;

import static org.jboss.seam.ScopeType.SESSION;

import java.util.ArrayList;

import java.util.List;

import javax.ejb.Remote;

import javax.ejb.Stateless;

import javax.jws.WebService;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

import org.jboss.seam.annotations.Out;

import org.jboss.seam.example.booking.Hotel;

import org.jboss.seam.example.booking.User;

import org.jboss.seam.example.booking.ws.HotelObject;

@Stateless

/**實例是使用了兩個JBoss應用服務器,該代碼是服務提供者端的代碼,所以使用了@Remote注解,實現(xiàn)遠程接口。。*/

@Remote (HotelObject.class)

@WebService

public class HotelObjectImpl implements HotelObject {

@PersistenceContext

private EntityManager em;

public List<Hotel> getHotelObject(String hotelName) {

List<Hotel> results = em.createQuery("select h from Hotel h where h.name like"+ " '%"+hotelName+"%'")

.getResultList();

if(results.size()>0){

return results;

}

return null;

}

public String updateHotelObject(Hotel h){

try{

System.out.println(h);

System.out.println(h.getName());

em.merge(h);

}catch(Exception e ){

e.printStackTrace();

return "error";

}

return "success";

}

}

上面的類繼承了一個接口,接口類的路徑是:VSS上前期調查文件夾下SOAweb service用EJB容器模型開發(fā)Web Service,用wsimport工具生成輔助類進行調用telebooksrcorgjbossseamexamplebookingws。

package org.jboss.seam.example.booking.ws;

import java.util.List;

import org.jboss.seam.example.booking.Hotel;

public interface HotelObject {

public List<Hotel> getHotelObject(String hotelName);

public String updateHotelObject(Hotel h);

}

上面的@WebService注解指名這是一個Web Service。打開Ant文件,執(zhí)行desploy業(yè)務。部署完成后,通過JBoss管理平臺查看剛才部署的Web Service,輸入http://localhost:8080/jbossws/進入JBoss Web Service的查看界面,可以看到View a list of deployed services鏈接,單擊View a list of deployed services鏈接后,可以查看已經發(fā)布的Web Service的URL地址,單擊該地址就可以查看生成的WSDL文。

這就是服務提供端的主要代碼,先用注解定義了一個web服務,這個web服務提供了兩個方法,這兩個方法可以接收從遠程傳過來的參數(shù)。服務的消費著可以通過上面的URL地址訪問該服務。

(2)服務的消費者端<使用服務端的代碼>

要調用web服務,我們可以通過好多方式,其中的一種方式是通過wsimport工具(在JDK1.6中,Sun已經為用戶提供了wsimport工具)生成輔助類來調用web服務。

在VSS上web Service文件夾中有一個叫做jaxws-ri的文件包里面包含了wsimport工具,本例的輔助類就是用它直接生成的。要用wsimport工具生成輔助類,首先要在dos環(huán)境下打開wsimport工具所在的目錄,比如wsimport工具的本地路徑:

Dos下打開wsimport工具所在的路徑。

在wsimport路徑下輸入如下內容:

wsimport.bat -keep -d ../build/classes/client http://192.168.1.106:8080/WsHelloWorld/HelloWorldBean?wsdl

其中../build/classes/client表示生成的輔助類存放的路徑,http://192.168.1.106:8080/WsHelloWorld/HelloWorldBean?wsdl表示要調用的web服務的WSDL文地址,其中192.168.1.106表示服務提供端的IP地址。

生成的輔助類如下圖所示:

把生成的輔助java類拷貝到我們的工程中

然后實例化一個生成的輔助類的對象,通過該對象調用服務提供者提供的方法<即getHotelObjec()>,去檢索符合條件的記錄。

該類位于VSS上如下路徑下;

SOAWeb Servic用EJB容器模型開發(fā)Web Service,用wsimport工具生成輔助類進行調用localbooksrcorgjbossseamexamplebooking

package org.jboss.seam.example.booking;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import javax.ejb.Remove;

import javax.ejb.Stateful;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

import org.jboss.seam.ScopeType;

import org.jboss.seam.annotations.Factory;

import org.jboss.seam.annotations.Name;

import org.jboss.seam.annotations.Scope;

import org.jboss.seam.annotations.datamodel.DataModel;

import org.jboss.seam.annotations.security.Restrict;

import org.jboss.seam.example.booking.ws.impl.Hotel;

import org.jboss.seam.example.booking.ws.impl.HotelObjectImpl;

import org.jboss.seam.example.booking.ws.impl.HotelObjectImplService;

@Stateful

@Name("teledataHotelSearch")

@Scope(ScopeType.SESSION)

@Restrict("#{identity.loggedIn}")

public class TeledateHotelSearchingAction implements TeledateHotelSearching

{

@PersistenceContext

private EntityManager em;

private String searchString;

@DataModel

private List<Hotel> telehotels;

public void find()

{

queryHotels();

}

private void queryHotels() {

/**實例化生成的輔助類的對象,通過該對象調用遠程的web service。*/

HotelObjectImplService service;

try

{

service = new HotelObjectImplService();

HotelObjectImpl hotelObjectImpl = service.getHotelObjectImplPort();

List<Hotel> result = hotelObjectImpl.getHotelObject(this.getSearchString());

System.out.println(result.size());

if(result.size()>0){

telehotels = result;

}else{

telehotels =null;

}

} catch (Exception e) {

e.printStackTrace();

}

}

public String getSearchString()

{

return searchString;

}

public void setSearchString(String searchString)

{

this.searchString = searchString;

}

@Remove

public void destroy() {}

@Override

public void cancel() {

// TODO 自動生成的方法存根

}

}

還有一個類是為了保存修改了的服務提供者(即遠程的Web Service)返回的Hotel對象,必須調用服務提供者提供的保存Hotel對象的方法<即updateHotelObject ()>。

package org.jboss.seam.example.booking;

import static javax.persistence.PersistenceContextType.EXTENDED;

import java.util.Calendar;

import javax.ejb.Remove;

import javax.ejb.Stateful;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

import org.jboss.seam.annotations.Begin;

import org.jboss.seam.annotations.End;

import org.jboss.seam.annotations.In;

import org.jboss.seam.annotations.Logger;

import org.jboss.seam.annotations.Name;

import org.jboss.seam.annotations.Out;

import org.jboss.seam.annotations.security.Restrict;

import org.jboss.seam.core.Events;

import org.jboss.seam.example.booking.ws.impl.HotelObjectImpl;

import org.jboss.seam.example.booking.ws.impl.HotelObjectImplService;

import org.jboss.seam.faces.FacesMessages;

import org.jboss.seam.log.Log;

@Stateful

@Name("saveTeteDataHotel")

@Restrict("#{identity.loggedIn}")

public class SaveTeteDataHotelAction implements SaveTeteDataHotel

{

@Begin

public void seveHotel(Hotel hotel)

{

HotelObjectImplService service;

try

{

service = new HotelObjectImplService();

HotelObjectImpl hotelObjectImpl = service.getHotelObjectImplPort();

String result = hotelObjectImpl.updateHotelObject(this.conversionHotel(hotel));

System.out.println(result);

} catch (Exception e) {

e.printStackTrace();

}

}

public org.jboss.seam.example.booking.ws.impl.Hotel conversionHotel(Hotel hotel){

Web Service簡介及開發(fā)實例 webservice java 實例
org.jboss.seam.example.booking.ws.impl.Hotel h = new org.jboss.seam.example.booking.ws.impl.Hotel();

h.setAddress(hotel.getAddress());

h.setCity(hotel.getCity());

h.setCountry(hotel.getCountry());

h.setId(hotel.getId());

h.setImg(hotel.getImg());

h.setName(hotel.getName());

h.setPrice(hotel.getPrice());

h.setState(hotel.getState());

h.setZip(hotel.getZip());

return h;

}

@End

public void cancel() {}

@Remove

public void destroy() {}

}

以上類中有一點值得注意,就是服務消費者中的Hotel對象不能直接用于保存,必須經過轉換,轉換成生成的輔助類中的org.jboss.seam.example.booking.ws.impl.Hotel類,才能進行保存,上面的conversionHotel(Hotel hotel)方法就是為了進行該轉換。

以上就是該種使用web service的幾個重要的點,通過以上各步就可以訪問遠程發(fā)布的web服務,完整的過程請參考Vss上Dome工程。

(2)利用SAAJ協(xié)議動態(tài)生成SOAP消息訪問服務提供者端的web service。

第一種方式是利用wsimpot工具來生成輔助類來實現(xiàn)對服務提供者端的web service的訪問,由于生成的輔助類特別多,而且靈活性差。下面我們介紹用SAAJ協(xié)議動態(tài)生成SOAP消息來訪問服務提供者端的web service。

①服務提供者端的代碼

該類的在VSS上:

EHRSOASOA(V1.2)Request endpoint(192.168.1.112)bookingsrcorgjbossseamexamplebookingwsimpl下

package org.jboss.seam.example.booking.ws.impl;

import static org.jboss.seam.ScopeType.SESSION;

import java.util.ArrayList;

import java.util.List;

import javax.ejb.Remote;

import javax.ejb.Stateless;

import javax.jws.WebResult;

import javax.jws.WebService;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

import org.jboss.seam.annotations.Out;

import org.jboss.seam.example.booking.Hotel;

import org.jboss.seam.example.booking.User;

import org.jboss.seam.example.booking.ws.HotelObject;

@Stateless

@Remote (HotelObject.class)

@WebService(name = "HotelObject", targetNamespace = "http://tower/ehr_DEV")

public class HotelObjectImpl implements HotelObject {

@PersistenceContext

private EntityManager em;

@WebResult(name="Hotel")

public List<Hotel> getHotelObject(String hotelName) {

List<Hotel> results = em.createQuery("select h from Hotel h where h.name like"+ " '%"+hotelName+"%'")

.getResultList();

if(results.size()>0){

return results;

}

return null;

}

public String updateHotelObject(Hotel h){

try{

System.out.println(h);

System.out.println(h.getName());

em.merge(h);

}catch(Exception e ){

e.printStackTrace();

return "error";

}

return "success";

}

}

該web服務提供了兩個方法,getHotelObject(String hotelName)方法接收遠程的的參數(shù),通過該參數(shù)查找符合條件的Hotel對象;updateHotelObject(Hotel h)方法用來保存修改后的對象。

②服務調用者端的代碼

該類的在VSS上:

EHRSOA SOA(V1.2)Request endpoint(192.168.1.112)bookingsrcorgjbossseamexamplebookingsoaesbimpl下

本例使用了Jboss ESB,其實服務調用端首先發(fā)送請求到Jboss ESB服務器上,Jboss ESB服務器上也定義了一些web服務,來接受這些請求,接受到請求消息后,對消息進行進一步的加工或者直接把消息轉發(fā)給真正的消息提供者端。

下面的代碼展示了服務消費端如何通過ESB服務器,去調用服務提供者端提供的服務。

package org.jboss.seam.example.booking.soa.esb.impl;

import java.io.ByteArrayInputStream;

import java.io.InputStream;

import java.util.List;

import javax.ejb.Remove;

import javax.ejb.Stateful;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Unmarshaller;

import javax.xml.soap.SOAPMessage;

import org.jboss.seam.ScopeType;

import org.jboss.seam.annotations.Name;

import org.jboss.seam.annotations.Scope;

import org.jboss.seam.annotations.datamodel.DataModel;

import org.jboss.seam.annotations.security.Restrict;

import org.jboss.seam.example.booking.Hotel;

import org.jboss.seam.example.booking.commom.collectionbinder.ListHotel;

import org.jboss.seam.example.booking.commom.esb.BuildSoapMessage;

import org.jboss.seam.example.booking.commom.esb.SendSoapMessageToEsb;

import org.jboss.seam.example.booking.commom.esb.impl.BuildSoapMessageImpl;

import org.jboss.seam.example.booking.commom.esb.impl.SendSoapMessageToEsbImpl;

import org.jboss.seam.example.booking.commom.formattransform.TransformMessageFormat;

import org.jboss.seam.example.booking.commom.formattransform.TransformString;

import org.jboss.seam.example.booking.commom.formattransform.impl.TransformMessageFormatImpl;

import org.jboss.seam.example.booking.commom.formattransform.impl.TransformStringImpl;

import org.jboss.seam.example.booking.soa.esb.TeledateHotelSearching;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

@Stateful

@Name("teledataHotelSearch")

@Scope(ScopeType.SESSION)

@Restrict("#{identity.loggedIn}")

public class TeledateHotelSearchingImpl implements TeledateHotelSearching

{

@PersistenceContext

private EntityManager em;

private String searchString;

@DataModel

private List<Hotel> telehotels;

public void find()

{

getHotelObject(this.getSearchString());

}

public void getHotelObject(String searchString) {

try{

BuildSoapMessage bsm = new BuildSoapMessageImpl();

SOAPMessage sm = bsm.getMessage("sayGoodbye", "http://webservice_producer/goodbyeworld", searchString);

TransformMessageFormat tmf = new TransformMessageFormatImpl();

String stringSOAPMessage = tmf.transformToString(sm);

SendSoapMessageToEsb smtEsb = new SendSoapMessageToEsbImpl();

Object o = smtEsb.sendMessageToJBRListener("http", "8765", stringSOAPMessage);

System.out.println("wo de ma ya!!!"+o.toString());

TransformString tfs = new TransformStringImpl();

Document doc = tfs.transformStringToDocument(o.toString());

NodeList nodeList = doc.getElementsByTagName("ListHotel");

Element element = (Element)nodeList.item(0);

String returnContent = element.getTextContent();

if(returnContent.length()>0){

String returnContentAnd = "<ListHotel>"+returnContent+"</ListHotel>";

InputStream inputStream = new ByteArrayInputStream(returnContentAnd.getBytes());

JAXBContext context = JAXBContext.newInstance(ListHotel.class);

try {

Unmarshaller um = context.createUnmarshaller();

ListHotel hl = (ListHotel)um.unmarshal(inputStream);

System.out.println("I'm King!"+hl.getElements());

telehotels = hl.getElements();

} catch (JAXBException e) {

e.printStackTrace();

}

}else{

telehotels = null;

}

}catch(Exception e){

e.printStackTrace();

telehotels = null;

} catch (Throwable e) {

e.printStackTrace();

}

}

public String getSearchString()

{

return searchString;

}

public void setSearchString(String searchString)

{

this.searchString = searchString;

}

@Remove

public void destroy() {}

@Override

public void cancel() {

searchString = "";

telehotels = null;

}

}

在getHotelObject(String searchString)方法中,首先通過BuildSoapMessage類提供的getMessage()方法生成要發(fā)送的SOAP消息。(調用的代碼如下:)

BuildSoapMessage bsm = new BuildSoapMessageImpl();

SOAPMessage sm = bsm.getMessage("sayGoodbye", "http://webservice_producer/goodbyeworld", searchString);

BuildSoapMessage類及代碼如下:

該類的在vss上的路徑如下:

SOA(V1.2)Request endpoint(192.168.1.112)bookingsrcorgjbossseamexamplebookingcommomesbimpl

package org.jboss.seam.example.booking.commom.esb.impl;

import java.util.HashMap;

import java.util.Map;

import javax.xml.soap.MessageFactory;

import javax.xml.soap.Name;

import javax.xml.soap.SOAPBody;

import javax.xml.soap.SOAPConnection;

import javax.xml.soap.SOAPConnectionFactory;

import javax.xml.soap.SOAPConstants;

import javax.xml.soap.SOAPElement;

import javax.xml.soap.SOAPEnvelope;

import javax.xml.soap.SOAPException;

import javax.xml.soap.SOAPFactory;

import javax.xml.soap.SOAPMessage;

import javax.xml.soap.SOAPPart;

import org.jboss.seam.example.booking.commom.esb.BuildSoapMessage;

public class BuildSoapMessageImpl implements BuildSoapMessage{

public static final SOAPConnection getSOAPConnection(){

SOAPConnectionFactory soapConnFactory;

SOAPConnection connection;

try {

soapConnFactory = SOAPConnectionFactory.newInstance();

connection = soapConnFactory.createConnection();

return connection;

} catch (UnsupportedOperationException e) {

e.printStackTrace();

return null;

} catch (SOAPException e) {

e.printStackTrace();

return null;

}

}

public static final SOAPMessage getSOAPMessage(){

MessageFactory messageFactory;

SOAPMessage message;

try {

messageFactory = MessageFactory.newInstance();

message = messageFactory.createMessage();

return message;

} catch (SOAPException e) {

e.printStackTrace();

return null;

}

}

public Name getName(String param){

SOAPFactory soapFactory;

try {

soapFactory = SOAPFactory.newInstance();

Name name = soapFactory.createName(param); //"arg0"

return name;

} catch (SOAPException e) {

e.printStackTrace();

return null;

}

}

public SOAPElement getBodyElement(SOAPMessage message,String param1,String param2,String param3){

SOAPPart soapPart = message.getSOAPPart();

SOAPEnvelope envelope;

SOAPBody body;

SOAPElement bodyElement;

try {

envelope = soapPart.getEnvelope();

body = envelope.getBody();

bodyElement = body.addChildElement(envelope.createName(param1,//"sayHello" ,

param1,//"ns1",

param1));//"http://webservice_consumer1/helloworld"));

bodyElement.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING);

return bodyElement;

} catch (SOAPException e) {

e.printStackTrace();

return null;

}

}

public SOAPElement addTextNode(SOAPMessage message,String param1,String param2,String param3){

SOAPPart soapPart = message.getSOAPPart();

SOAPEnvelope envelope;

SOAPBody body;

SOAPElement bodyElement;

try {

envelope = soapPart.getEnvelope();

body = envelope.getBody();

bodyElement = body.addChildElement(envelope.createName(param1,//"sayHello" ,

param1,//"ns1",

param1));//"http://webservice_consumer1/helloworld"));

bodyElement.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING);

return bodyElement;

} catch (SOAPException e) {

e.printStackTrace();

return null;

}

}

public SOAPMessage getMessage(String methodName,String targetNamespace,String messageContext) throws SOAPException,Exception{

//傳送參數(shù)需要創(chuàng)建Name

SOAPFactory soapFactory = SOAPFactory.newInstance();

//Next, create the actual message

MessageFactory messageFactory = MessageFactory.newInstance();

SOAPMessage message = messageFactory.createMessage();

//獲得一個SOAPPart對象

SOAPPart soapPart = message.getSOAPPart();

SOAPEnvelope envelope = soapPart.getEnvelope();

SOAPBody body = envelope.getBody();

//Create the main element and namespace

SOAPElement bodyElement =

body.addChildElement(envelope.createName(methodName ,

"tower",

targetNamespace));

bodyElement.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING);

//傳送參數(shù)新建一個Name對象

Name name = soapFactory.createName("message");

SOAPElement symbol = bodyElement.addChildElement(name);

symbol.addTextNode(messageContext);

message.saveChanges();

return message;

}

public SOAPMessage getMessage(String methodName,String targetNamespace,HashMap<String,String> hm) throws SOAPException,Exception{

//傳送參數(shù)需要創(chuàng)建Name

SOAPFactory soapFactory = SOAPFactory.newInstance();

//Next, create the actual message

MessageFactory messageFactory = MessageFactory.newInstance();

SOAPMessage message = messageFactory.createMessage();

//獲得一個SOAPPart對象

SOAPPart soapPart = message.getSOAPPart();

SOAPEnvelope envelope = soapPart.getEnvelope();

SOAPBody body = envelope.getBody();

//Create the main element and namespace

SOAPElement bodyElement =

body.addChildElement(envelope.createName(methodName ,

"ns1",

targetNamespace));

bodyElement.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING);

//傳送參數(shù)新建一個Name對象

Name name = soapFactory.createName("arg0");

SOAPElement symbol = bodyElement.addChildElement(name);

for (Map.Entry<String, String> m : hm.entrySet()) {

System.out.println("HashMap" + m.getKey() + ":" + m.getValue());

Name symbolName = soapFactory.createName(m.getKey());

SOAPElement symbolNameSOAPElemen = symbol.addChildElement(symbolName);

symbolNameSOAPElemen.addTextNode(m.getValue());

}

message.saveChanges();

return message;

}

}

在本例中Jboss esb服務器提供的web服務只能接受String類型的參數(shù),所以要把soap消息進行格式轉換。在服務的消費端通過以下的代碼調用格式轉換方法:

TransformMessageFormat tmf = new TransformMessageFormatImpl();

String stringSOAPMessage = tmf.transformToString(sm);

格式轉換的類和方法如下:

該類的路徑在:

SOA(V1.2)Request endpoint(192.168.1.112)bookingsrcorgjbossseamexamplebookingcommomformattransformimpl

package org.jboss.seam.example.booking.commom.formattransform.impl;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import javax.xml.soap.SOAPException;

import javax.xml.soap.SOAPMessage;

import org.jboss.internal.soa.esb.util.StreamUtils;

import org.jboss.seam.example.booking.commom.formattransform.TransformMessageFormat;

public class TransformMessageFormatImpl implements TransformMessageFormat{

public String transformToString(SOAPMessage sm) throws SOAPException, IOException{

ByteArrayOutputStream s = new ByteArrayOutputStream();

sm.writeTo(s);

byte[] buf=s.toByteArray();

ByteArrayInputStream bin=new ByteArrayInputStream(buf);

String msg = new String(StreamUtils.readStream(bin));

return msg;

}

}

把轉換后的Soap消息發(fā)送給Jboss ESB服務器,在服務消費者端的調用過程代碼如下:

SendSoapMessageToEsb smtEsb = new SendSoapMessageToEsbImpl();

Object o = smtEsb.sendMessageToJBRListener("http", "8765", stringSOAPMessage);

發(fā)送消息到Jboss ESB服務器上的類和方法如下:

該類在VSS上的路徑如下:

SOA(V1.2)Request endpoint(192.168.1.112)bookingsrcorgjbossseamexamplebookingcommomesbimpl

package org.jboss.seam.example.booking.commom.esb.impl;

import org.jboss.remoting.Client;

import org.jboss.remoting.InvokerLocator;

import org.jboss.seam.example.booking.commom.esb.SendSoapMessageToEsb;

public class SendSoapMessageToEsbImpl implements SendSoapMessageToEsb {

public static String ESBSERVICEIP="192.168.1.101";

public Object sendMessageToJBRListener(String protocol, String port, String message) throws Throwable {

String locatorURI = protocol + "://"+ESBSERVICEIP+":" + port;

InvokerLocator locator = new InvokerLocator(locatorURI);

Client remotingClient = null;

try {

remotingClient = new Client(locator);

remotingClient.connect();

Object response = remotingClient.invoke(message);

return response;

} finally {

if(remotingClient != null) {

remotingClient.disconnect();

}

}

}

}

public static String ESBSERVICEIP="192.168.1.101";這個IP地址表示Jboss ESB服務器的IP地址。

String locatorURI = protocol + "://"+ESBSERVICEIP+":" + port;這行代碼可以拼成訪問Jboss ESB上發(fā)布的Web服務的URL地址。

我們接著看調用端的代碼,從Jboss ESB的返回值(其實是Jboss ESB服務器上發(fā)布的Web服務再通過轉發(fā)調用服務提供者端的Web服務,從而得到返回值,服務提供者端的返回值首先把值傳回Jboss ESB服務器,Jboss ESB服務器再把值返回到服務調用端。)也是一個Object對象,我們要把這個Object對象轉換為我們應用中的真實的對象(比如例子中的ListHotel對象),這個轉換我使用了JAXB標準,這個標準主要用于.xml和Java對象之間的互轉,因為返回值是SOAP消息,是.xml形式的,同過JAXB標準可以很方便的轉換成我們想要的java類(比如ListHotel),在調用端的代碼如下:

TransformString tfs = new TransformStringImpl();

Document doc = tfs.transformStringToDocument(o.toString());

NodeList nodeList = doc.getElementsByTagName("ListHotel");

Element element = (Element)nodeList.item(0);

String returnContent = element.getTextContent();

if(returnContent.length()>0){

String returnContentAnd = "<ListHotel>"+returnContent+"</ListHotel>";

InputStream inputStream = new ByteArrayInputStream(returnContentAnd.getBytes());

JAXBContext context = JAXBContext.newInstance(ListHotel.class);

try {

Unmarshaller um = context.createUnmarshaller();

ListHotel hl = (ListHotel)um.unmarshal(inputStream);

System.out.println("I'm King!"+hl.getElements());

telehotels = hl.getElements();

} catch (JAXBException e) {

e.printStackTrace();

}

}else{

telehotels = null;

}

}catch(Exception e){

e.printStackTrace();

telehotels = null;

} catch (Throwable e) {

e.printStackTrace();

}

從Jboss ESB服務器的返回值先要經過轉換,把它轉換為Document類型,代碼如下:

TransformString tfs = new TransformStringImpl();

Document doc = tfs.transformStringToDocument(o.toString());

轉換的類和方法如下:

該類在VSS上的路徑如下:

SOA(V1.2)Request endpoint(192.168.1.112)bookingsrcorgjbossseamexamplebookingcommomformattransformimpl

package org.jboss.seam.example.booking.commom.formattransform.impl;

import java.io.IOException;

import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import org.jboss.seam.example.booking.commom.formattransform.TransformString;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

import org.xml.sax.InputSource;

import org.xml.sax.SAXException;

public class TransformStringImpl implements TransformString{

public Document transformStringToDocument(String s){

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

DocumentBuilder builder;

try {

builder = factory.newDocumentBuilder();

Document doc = builder.parse(new InputSource(new StringReader(s)));

return doc;

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

public String[] getObjectArrayByESBReturnContent(String s){

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

DocumentBuilder builder;

try {

builder = factory.newDocumentBuilder();

Document doc = builder.parse(new InputSource(new StringReader(s)));

NodeList nodeList = doc.getElementsByTagName("return");

Element element = (Element)nodeList.item(0);

String returnContent = element.getTextContent();

if(returnContent.length()>0){

String[] getObjectContest = returnContent.split("</O>");

return getObjectContest;

}else{

return null;

}

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

public String[] getPropertyArrayByStringObject(String returnContent){

if(returnContent.length()>0){

String[] getObjectContest = returnContent.split("</A&V>");

return getObjectContest;

}else{

return null;

}

}

}

轉換后的Document對象要進行一下截取,重新組裝變成適合JAXB轉換的XML形式,這個過程如下:

NodeList nodeList = doc.getElementsByTagName("ListHotel");

Element element = (Element)nodeList.item(0);

String returnContent = element.getTextContent();

String returnContentAnd = "<ListHotel>"+returnContent+"</ListHotel>";

InputStream inputStream = new ByteArrayInputStream(returnContentAnd.getBytes());

把返回值轉換為先轉換為InputStream對象,這個InputStream對象就符合轉換的形式了,可以進行轉換了。

要利用JAXB規(guī)范進行這樣的轉換,要進行兩步:

①用@XmlRootElement注解標注要轉換成的Java類。

Java類如下:

這個Java類在VSS上的路徑是:

SOA(V1.2)Request endpoint(192.168.1.112)bookingsrcorgjbossseamexamplebookingcommomcollectionbinder

package org.jboss.seam.example.booking.commom.collectionbinder;

import java.util.List;

import javax.xml.bind.annotation.XmlElementRef;

import javax.xml.bind.annotation.XmlRootElement;

import org.jboss.seam.example.booking.Hotel;

@XmlRootElement(name="ListHotel")

public class ListHotel {

private List<Hotel> hotel;

public ListHotel() {

}

public ListHotel(List<Hotel> hotel) {

this.hotel = hotel;

}

@XmlElementRef

public List<Hotel> getElements() {

return hotel;

}

public void setElements(List<Hotel> hotel) {

this.hotel = hotel;

}

}

②通過JAXB提供的編組機制,把xml字符轉換為Java對象。代碼如下:

JAXBContext context = JAXBContext.newInstance(ListHotel.class);

try {

Unmarshaller um = context.createUnmarshaller();

ListHotel hl = (ListHotel)um.unmarshal(inputStream);

System.out.println("I'm King!"+hl.getElements());

telehotels = hl.getElements();

} catch (JAXBException e) {

e.printStackTrace();

}

以上就是我用SAAJ實現(xiàn)Web Service開發(fā)的詳細過程,文檔只是一個參考的作用,要靈活掌握這種方式要翻越其他的資料,認真思考。

這個實例中牽涉到了JBoss ESB服務器,我沒有進行詳細的介紹,我會在下一個文檔中仔細討論該部分內容。要很好的理解該實例請參考我的Jboss ESB的文檔及Vss上的相關代碼。

以上是通過Jboss ESB服務器作為中間件轉發(fā)從消息消費端到消息使用端的的消息的過程,SOA(V1.2)這個文件夾下的工程中還包括了一個服務消費者端直接訪問服務提供者端的實例。即:

該類在VSS上的路徑為:

SOA(V1.2)Request endpoint(192.168.1.112)bookingsrcorgjbossseamexamplebookingsoaesbimpl

package org.jboss.seam.example.booking.soa.esb.impl;

import java.lang.reflect.Field;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.HashMap;

import javax.ejb.Remove;

import javax.ejb.Stateful;

import javax.xml.soap.SOAPException;

import javax.xml.soap.SOAPMessage;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.stream.StreamResult;

import org.jboss.seam.annotations.Begin;

import org.jboss.seam.annotations.End;

import org.jboss.seam.annotations.In;

import org.jboss.seam.annotations.Name;

import org.jboss.seam.annotations.Out;

import org.jboss.seam.annotations.security.Restrict;

import org.jboss.seam.example.booking.Hotel;

import org.jboss.seam.example.booking.commom.esb.BuildSoapMessage;

import org.jboss.seam.example.booking.commom.esb.SendSoapMessage;

import org.jboss.seam.example.booking.commom.esb.impl.BuildSoapMessageImpl;

import org.jboss.seam.example.booking.commom.esb.impl.SendSoapMessageImpl;

import org.jboss.seam.example.booking.commom.formattransform.TransformMethodName;

import org.jboss.seam.example.booking.commom.formattransform.impl.TransformMethodNameImpl;

import org.jboss.seam.example.booking.soa.esb.TeteDataHotelSave;

@Stateful

@Name("saveTeteDataHotel")

@Restrict("#{identity.loggedIn}")

public class TeteDataHotelSaveImpl implements TeteDataHotelSave

{

@In(required=false)

@Out(required=false)

private Hotel hotel;

@Begin

public void selectHotel(Hotel selectedHotel)

{

//Hotel h = new Hotel();

hotel = selectedHotel;

}

public void seveHotel(Hotel hotel)

{

String ipAddress = hotel.getIpAddress();

System.out.println("yuexiangcheng,test!!!!!========"+ipAddress);

TransformMethodName tmn = new TransformMethodNameImpl();

Field[] f = hotel.getClass().getDeclaredFields();

HashMap<String,String> hm = new HashMap();

for(int i = 0;i< f.length;i++){

try {

String attributeName = f[i].getName();

System.out.println("attributeNameattributeNameattributeNameattributeNameattributeNameattributeName"+attributeName);

String motherName = tmn.getGetMethodByAttribute(attributeName);

Method method = hotel.getClass().getDeclaredMethod(motherName,null);

String attributeValue = method.invoke(hotel, null).toString();

System.out.println("attributeValueattributeValueattributeValueattributeValueattributeValueattributeValue"+attributeValue);

hm.put(attributeName, attributeValue);

} catch (SecurityException e) {

e.printStackTrace();

} catch (NoSuchMethodException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

}

}

BuildSoapMessage bsm = new BuildSoapMessageImpl();

SendSoapMessage ssm = new SendSoapMessageImpl();

try {

SOAPMessage sm = bsm.getMessage("updateHotelObject", "http://tower/ehr_DEV", hm);

SOAPMessage result = ssm.send(sm, "http://"+ipAddress+":8080/jboss-seam-booking-jboss-seam-booking/HotelObjectImpl");

TransformerFactory transformerFactory =

TransformerFactory.newInstance();

Transformer transformer =

transformerFactory.newTransformer();

Source sourceContent = result.getSOAPPart().getContent();

StreamResult resultPrint = new StreamResult(System.out);

transformer.transform(sourceContent, resultPrint);

System.out.println();

} catch (SOAPException e) {

// TODO 自動生成 catch 塊

e.printStackTrace();

} catch (Exception e) {

// TODO 自動生成 catch 塊

e.printStackTrace();

}

}

@End

public void cancel() {}

@Remove

public void destroy() {}

}

該過程是服務消費者端修改了從服務提供者端檢索到的數(shù)據(jù),并對其進行了修改再保持到服務提供者端。具體的過程和上例查不多,請詳細研究在VSS上的代碼。值得注意的是該例中用到了JAXB的解組功能。

以上就是我實現(xiàn)Web Service的兩種方法,因為能力有限,所以寫的不好,僅供參考。希望對大家有幫助,謝謝。

  

愛華網(wǎng)本文地址 » http://www.klfzs.com/a/25101014/202650.html

更多閱讀

法國梧桐與中國梧桐簡介及區(qū)別 中國梧桐和法國梧桐

“梧桐更兼細雨”中此梧桐為何樹呢?它常被大家誤以為是平常所見的法國梧桐,實際上它卻是中國梧桐。法國梧桐與中國梧桐簡介及區(qū)別將為大家詳細說明何謂法國梧桐,何謂中國梧桐?以及兩者的主要區(qū)別。法國梧桐簡介世界上著名的行道樹——

Protel 99se設計電路及PCB實例 protel99se畫pcb板

返回PCB資源網(wǎng)首頁 注冊 | 登陸  資訊 | 技術 | 下載 | 視頻 | 電路 | 商城 | 問答 | 論壇  技術專欄 | 基礎知識 | 電路設計 | 軟件教程 | 制造工藝 | 電子技術 | 標準體系 | SMT | FPC | 視頻 | 論壇PCB資源網(wǎng)>技術專欄>軟件

人一生要讀的60首古詩作者簡介及作品賞析 下 古詩及其賞析

人一生要讀的60首古詩【作者簡介及作品賞析】(下)  蜀相杜甫(唐)丞相祠堂何處尋?錦官城外柏森森。映階碧草自春色,隔葉黃鸝空好音。三顧頻煩天下計,兩朝開濟老臣心。出師未捷身先死,長使英雄淚滿襟。作者簡介杜甫(712-770),字子美,祖籍河南鞏

京胡、二胡、板胡、高胡、中胡的簡介及異同 高胡和二胡

京胡、二胡、板胡、高胡、中胡的簡介及異同1、二胡:二胡是胡琴類中流行最廣、最具有代表性的一種樂器。它的音色柔美,富于表現(xiàn)力??捎糜讵氉唷⒅刈?、合奏。在民族管弦樂中,二胡處于重要地位。高胡:高胡是拉弦樂器中的高音樂器。它比

李大同簡介及《帕米爾的春天》演奏提示?。?帕米爾的春天

李大同簡介及《帕米爾的春天》演奏提示??!作者:音樂使者(李錫杰)時間:2008.03.23一,李大同先生簡介  李大同,著名笛子演奏家,新疆軍區(qū)歌舞團副團長,北京市人。早年師承小提琴手兼竹笛演奏者譚玉泉先生,主要學習趙松庭、陸春齡、劉管樂等人的

聲明:《Web Service簡介及開發(fā)實例 webservice java 實例》為網(wǎng)友乄帥小伙分享!如侵犯到您的合法權益請聯(lián)系我們刪除

91是什么意思网络污词| 国产精品午夜久久久久| 久久久999亚洲精品| 久久久久久伊人婷婷| 亚洲综合欧美另类尤物| 国产尤物在线视精品在亚洲| 亚洲制服人妻另类小说| 日韩亚洲欧美中文高清在线| 3751色一区二区三区| 91超碰精品日日躁夜夜躁欧美| 久久久激情伦理在线视频| 中文字幕人妻熟女av| 欧美日韩精品在线色图| 国产一区二区三区四区99| 山东熟女高潮嗷嗷叫| 777久久久久久久| 在线国产偷拍自拍| 日韩av有码在线观看| 97超碰在线观看日韩| 人妻熟女中文字幕在线观看| 午夜婷婷综合在线| 国产又粗又爽又大又黄视频| 日韩av中文一区| 日韩亚洲欧美在线com | 日韩欧美国产另类在线观看| 午夜伊人狠狠av| 性欧美精品久久久久久久樱花| 免费黄色av线上观看| 日韩欧美亚洲另类激情一区. | 91亚洲精品在线免费观看| 欧美在线视频一区二区三区| 色视频免费在线观看高清| 国产又粗又猛又爽又视频| 五月婷婷中文字幕综合网| 色婷婷中文字幕一区二区| 视频二区 中文字幕 人妻中文 | 色婷婷 激情五月| 制服护士jk学生丝袜秘书套装| 精品久久99在线观看| 亚洲欧美国产精品成人| 欧美激情综合色综合啪啪| 91入口在线观看天天| 亚洲国产182tv精品天堂| 久久国产精品99国产精2021| 人妻人人澡人人爽夜夜爽| 黄色av网站在线观看免费| 蜜臀精品国产91内射久久| 青青久视频在线观看| 亚洲中文字幕乱码一区二区| 日本最新的中文字幕| 在线日韩av永久免费观看| 91在线观看视频成人| 国产精选一区二区三区91| 久久精品国产96精品| 国产又粗又硬又黄又爽的视频 | 五月婷婷中文字幕综合网| 精品高清在线观看免费观看| 中文字幕日韩一区二区不卡| 老鸭窝在线视频免费看| 国产精品亚洲av资源| 最新国产精品av| 一区二区三区日韩在线观看| 久久久999久久国产| 99久久精品视频免费| 日韩国产自拍偷拍| 欧美日韩国产精品合集| 白石茉莉奈一区二区av| 日本加勒比免费高清视频| 人妻少妇视频在线播放| 日韩av高清无打码在线观看 | 91九色蝌蚪蜜桃臀| 日韩精品久久日日躁夜夜| 久久视频免费一区二区| 久久久久久综合国语对白| 18久久久久久久久久久久久| 风流老熟女一区二区三区av| 伊人久久首页精品| 色婷婷一区二区中文字幕| 热久久久久这里有精品| 国产综合精品久久东京热| 日韩av电影在线播放| 麻豆精品视频精品在线免费观看| 久久久久久99国产精品免费| 日韩不卡一区二区在线观看| 久久99热这里都是精品| 人人妻人人爽人人艹| 中文字幕福利在线视频| 波多野结衣初尝黑人巨大| 亚洲欧美日韩精品在线播放 | 亚洲激情国产专区| 久久精品熟女亚洲AV色欲男同| 老熟女av老熟女xx| 久久综合久久综合亚洲| 欧美激情日韩激情亚洲最大| 日韩最新p片中文字幕av| 亚洲无人区乱码中文字幕一区| 91精品久久久久久99视频| av午夜久久久久久久| 把人妻干哭中文字幕在线观看| 中日韩精品无码一区二区三区 | 日韩一卡二卡三不卡| 国产男男gay激情| 久久久999久久国产| 人妻夜夜爽天天爽欧美色院| 91精品色综合久久久蜜桃臀| 国产男人天堂久久精品| 久久久久久久久蜜桃| 日韩一区二区中文字幕| 国产精选一区二区三区91| 久久精品一区二区麻豆| 绝色少妇高潮3在线观看| 国产九色91中文在线视频| 91 porny九色| 久久99国产精品二区不卡| 91精品一区二区三区91人妻| 日本精品国产免费久久久| 91精品一区二区在线观看久久久| 亚洲天堂亚洲天堂中文字幕| 九九久久精品免费网站| 亚洲五月天在线中文字幕在线 | 久久内射天天玩天天懂色| 国产av一二区三区| 久久精品熟妇熟妇丰满人妻5o| 最新在线不卡av| 成人福利网久久久久久| 在线日韩亚洲av电影| 欧美精产国品一二三类产品| 午夜影院在线精品| 午夜精品一区二区三区电影..| 中文字幕亚洲一区嗯嗯| 中文字幕第一页婷婷| 中文字幕一区二区久久人妻| 息子嫁中文字幕一区二区三区| 1024你懂得av在线| 精东果冻视频在线观看| 久久精品国产日韩欧美孕妇| 99re日本免费视频| 国产精品久久网址大全| 91行情视频在线看高清 | 麻豆成人免费视频一区二区| 日韩av成人一区二区三区在线看| 亚洲一级一级真人黄大片| 中文av在线dvd| 国产欧美日韩两性在线观看| 日韩中文少妇字幕| 久久久久亚洲成高清少妇| 国产熟妇一区二区三区av| 春色校园综合激情亚洲| 亚洲AV无码国产综合一区二区| 丰满少妇免费做爰大片人| 激情五月天俺也去淫淫| 免费人成黄页网站大全在线观看| 欧美oldman色老头| 性欧美精品久久久久久久樱花| 伊人久久亚洲av综合网| 国产美女精品传媒在线观看| 亚洲成人av熟妇人妻| 欧美成人四级中文字幕| 亚洲国产一区二区三区久久久| 色999日韩精品| 99在线精品免费视频| 日韩国产中文字幕人妻| 国内女人精品一区二区三区| 成人伦理片免费在线观看免费观看| 久久精品国产字幕高潮37| 日韩成人免费电影在线| 91 porny九色| 久久精品一区二区日韩| 欧美色综合天天久久| 免费一区二区三区视频| 日韩欧美色视频在线| 国产综合91天堂亚洲国产| 国产精品久久人人爽人人| 亚洲成人av熟妇人妻| 松本一香亚洲av一区| 亚洲国产精品国自产拍张津瑜| 18久久久久久久久久久久久| 麻豆网站在线免费观看| 凹凸国产av熟女白浆| 久久夜夜一区二区三区日韩| 日本久久激情视频| 国产精品美女丝袜一区二区| 一区二区三区久久久无| 亚洲精品人码av| 日本少妇激情视频免费看 | 久久视频免费一区二区| 国产小视频在线播放网站| av在线网站一区二区三区天堂| 久久天天躁夜夜躁狠狠综合网| 亚洲av日日日日| 亚洲91久久久久久久久久久| AV无码国产精品色午夜| 麻豆www久久国产精品| 一区二区三区日韩在线观看| 天堂久久天堂色综合色| 午夜精品一区二区三区四区| 不卡一二三区在线视频 | av最新资源在线观看| 91麻豆精品传媒国产在线观看| 男人做受天堂青青操| 欧美日韩图区一区二区三区| 久久久久久伊人婷婷| 日韩欧美中文字幕综合网| 欧美日韩亚洲精品视频| 精品人妻少妇系列女友系列| 国产精品久久人人爽人人| 亚洲久久av97一区| 日日爱亚洲一区av| 久久久999国产视频| 亚洲高清电影一区| 日韩人妻视频一区二区三区| 人妻中文字幕视频| 久久99热在线观看| 日韩午夜小视频合集| 国产婷婷色av一区二区| 亚洲精品久久久中文字| 制服丝袜 欧美日韩| 山东熟女高潮嗷嗷叫| 日本熟妇免费一区二区三区| 精品一区二区三区国产馆| 91久久久福利视频| 日韩精品日韩精品日韩精品| 亚洲av香蕉高清在线播放| 精品999高清视频| 丁香花激情五月资源| 久久精品国产免费观看频道| 国产精品6久久久久久久| 99热这里只有精品16| 一区二区三区精品少妇人妻| 7788人妻精品免费| 久久亚洲福利视频免费| jizzjizz在线观看亚洲| 久久久人妻精品一区二区三区四区| 欧美精产国品一二三类产品| 国产成人精品日本亚洲777| 亚久久久久久久久久久久久久| 中文字幕中文有码在线精品| 成人小视频在线播放| 亚洲国产一区二区三区久久久| 日韩在线视频播放一区二区三区 | 亚洲欧美在线色视频| 亚洲男人天堂加勒比| 福利视频一区二区 三区| 国语自产精品视频在线播放| 五月婷婷大香蕉日韩| 97网在线视频免费播放| 久久亚洲精品人成综合网| 日本精品国产免费久久久| 国产精品中文字幕免费| 日本在线中文字幕一区二区 | 91xxx免费在线观看| www.777麻豆网| 国产成+人+综合+欧美 亚洲| 欧美日韩一区二区三区黑人| 久久久精品亚洲中文字幕| 亚洲激情在线电影观看| 人妻熟女中文字幕电影| 日韩丝袜一区av| 天天操天天射天天干b| 日本熟妇久久久久久| 欧美日韩国产精品欧美| 久久久久黄色片三级伦理| 丁香婷婷激情啪啪综合五月天| 国产精品 国内视频| 国产麻豆精品传媒av国产网址| av影院永久免费在线看| 丁香婷婷色五月激情综合深爱| 在线观看中文字幕码2020| 亚洲情色电影网站| 亚洲 欧美 在线 日韩| 五月婷婷大香蕉日韩| 伊人 久久 中文字幕| 中文字幕+乱码av| 国产精品久久久久久人妻免费 | 熟妇人妻无乱码中文字幕蜜桃| 国产小视频在线播放网站| 久久婷婷色综合日韩一区一区 | 偷拍 亚洲 熟女| 日韩欧美中文字幕综合网| 欧美日韩私拍福利视频| 好好的曰com视频在线| 亚洲AV无码国产综合一区二区| 一区二区三区精品少妇人妻 | 91色porny在线| 日本熟妇视频中文字幕有码| 亚洲熟妇欲色一区一区三区| 18久久久久久久久久久久久| 国产91久久久久久久免费| 人妻熟女中文字幕电影| 色99色.com| 国产少妇精品7777| 国产丝袜美腿一二三四五区| 2020精品极品色视频| 成人精品漫画h动漫日本| 深夜激情五月天久久视频| 国产美女啪啪18禁| 欧美一区二区三四区操逼| 久久久久精品国产亚洲av水蜜| 色9933av精品一区| 色婷婷美女天天操| 久久精品熟女亚洲AV色欲男同| 美女亚洲第一区二区 | 91是什么意思网络污词| 成人亚洲一区二区三区在线观看| 婷婷激情激情五月天| 久久精品国产99久久久蜜桃| 欧美久久久久人妻尻禄破| 欧美日韩国产精品合集| 日本精品久久久久中文字幕2| 国产五月天在线视频| 久久99爱精品999| 亚洲国产中文二区二区| 亚洲一区二区五十路熟女激情中出| 亚洲一区二区三区四区五区福利| 日韩三级视频大全| 久久久精品亚洲中文字幕| 91麻豆精品传媒国产在线观看| 国产欧美日韩在线激情| 亚洲日韩不卡视频色酷色| 欧美成人精品一区二区视频| 久久久999国产视频| 亚洲激情国产专区| 色哟哟精品免费专区| 国产丝袜美腿一二三四五区| 老熟女老91妇女老熟女| 91久久久精品免费| 国产亚洲成人av在线播放| 中文字幕婷婷在线观看| www中文字幕日本| 国产精品久久九九视频| 中文字幕精品一区二区三区完整版 | 无码人妻一区二区三区18| 麻豆人妻少妇精红桃视频| 日本久久免费在线观看| 美日韩av一区二区| 国产一区二区三区在线呻吟视频| 久久婷婷色综合日韩一区一区 | 五月婷婷六月丁香动漫| 亚洲视频频道在线| 中文字幕人妻熟女一区二区| av一本久久久久久| 欧美一区激情大胆在线播放 | 3751色一区二区三区| 国产精品稀缺资源av在线| 日韩欧美亚洲三四区| 91亚洲精品在线免费观看| 亚洲91久久久久久久久久久| 欧美xingai在线播放| 婷婷六月天狠狠爱| 东北熟女天天日天天添| 五月婷婷中文字幕综合网| 久久久久久久久久色| 日韩亚洲欧美中文高清在线| 绝色少妇高潮3在线观看| 最新99热这里只有精品| 欧美成人精品女人久久久| 精品人妻巨乳一区二区三区| 国产91一区二区三区在线| 蜜臀av精一区二区三区| 色婷婷狠狠禁久久| 婷婷激情网五月天| 超碰手机在线大香蕉| 日本熟妇视频中文字幕有码| 亚洲自拍偷拍动图| 国产综合91天堂亚洲国产| 亚洲美女色www色| 亚洲一区二区尻逼| 日韩在线中文字幕免费| 九九热精品免费视频观看| 中文字幕欧美精品日韩有码| 国产av一二区三区| 国产精品久久久人妻午夜| 久久久亚洲视频播放| 久久久激情伦理在线视频| 黑夜中文字幕首页在线视频| 产熟妇一区二区三区aⅴ网站| 亚洲视频色图天堂| 国产丝袜美腿一二三四五区| 日韩中文字幕一二| 日韩欧美成年一级| 黄色8黄色片片大全| 国产精品99久久黑人免费| 在线成人亚洲中文字幕av| av在线网站一区二区三区天堂| 中文字幕日韩国产av| 漂亮人妻被强中文字幕在线| 蜜桃久久久久久久91| 日本av电影av| 超碰成人手机免费在线观看| 国产成人自拍视频网| 日韩精品嘿咻视频| 国产精品午夜久久久久| 亚洲精品久久久久久蜜桃99| 欧美日韩国产精品合集| 午夜伊人狠狠av| 久久久久黄色片三级伦理| 综合久久精品久久精品| 天天操天天日天天摸天天射| 国产精品 国内视频| 制服护士jk学生丝袜秘书套装| 综合亚洲和欧洲一二三四区| 九九视频精品在线免费观看| 国产一区二区美女视频| 天天摸天天高潮天天爽| 国产精品中文字幕免费| 超碰97人人看人人爱| 日韩av高清电影手机在线观看| 一本色道久久综合亚洲av| 久久久久久熟妇吹潮av观看| 亚洲免费在线久久92| 在线免费看的黄片视频| 99在线观看视频在线播放| 亚洲熟妇熟女久久精品综合| 久久视频免费一区二区| 中文字幕人妻国产91| 亚洲自拍偷拍动图| 蜜桃av一区二区视频| 久久久久久久人妻av| 亚洲av另类色图在线| 久久夜夜一区二区三区日韩| 久久久999亚洲精品| 亚洲男人天堂网在线看| 欧美激情日韩激情亚洲最大| 日本女人视频网站| 国产一二三不卡视频| 天堂影院在线免费观看| 日本午夜高清在线| 五月天丁香婷久久爱| 一区二区三区四区高清av| 日韩不卡一区二区在线观看| 在线视频蜜桃视频| 午夜香蕉一区二区三区| 加勒比图片区不卡97| 久久鬼一本到综合88| 日本少妇好色视频| 日韩美女av一区| 熟妇人妻一区二区三区四区久久久| 国产一区二区青青精品久久| 成人caopao自拍视频| 国产精品高潮呻吟久久av无限| 91九色蝌蚪蜜桃臀| 欧美中文字幕在线观看免费| 九九热在线免费视频观看| 日韩欧美中文字幕综合网| 国产一区二区三区欧美精品| 欧美一区二区三区无| 精品视频一区二区三区蜜桃 | 在线国产偷拍自拍| 日本在线中文字幕一区二区| 日韩不卡一区高清视频| 手机在线精品国产| 熟女少妇水多一区二区三区| 国产成人一区二区三区影院首页| 97网在线视频免费播放| 亚洲成人三级黄色片| 国产丝袜美腿一二三四五区| 亚洲视频频道在线| 亚洲欧美日韩wwwc0m666| 色五五月五月开亚洲婷婷| 999国产精品成人| 91精品啪在线观看国产91蜜桃| 日韩精品免费美女在线观看| 99久草精品视频在线| 亚洲一级黄色免费片| 天天舔天天爱天天做| 加勒比东京热综合久久| 日韩色图在线影院| 黄色av网站在线观看免费| 91行情视频在线看高清 | 亚洲精品日韩在线观看17c| 亚洲国产日韩精品视频| 天堂亚洲国产av| 成人免费电影网站一区二区三区| 久久鬼一本到综合88| 91成人一区二区三区| 人妻视频一区二区三区免费| 一道精品视频一区二区三区视频| 久久久激情伦理在线视频| 久久久久久精品免费免费WE| 成人日韩视频中文字幕| 日本久久激情视频| 日本中文字幕在线观看视频免费| 蜜桃av一区二区视频| 春色校园综合激情亚洲| 久久天天躁狠狠躁夜夜av| 精品久久一区av中文字幕| www.中文字幕丝袜| 久久久久黄色片三级伦理| 在线视频中文字幕 日韩| 五月婷婷大香蕉日韩| 天堂网免费在线电影| 中文字幕日本激情| 国产精品久久久久久66| 男人做受天堂青青操| 久久久久亚洲成高清少妇| 中文字幕麻豆韩日在线| 99热在线精品这里只有精品| 深田咏美亚洲一区二区| 人妻少妇视频在线播放| 少妇人妻88久久中文字幕| 亚洲精选在线视频| 亚洲精品久久久久久蜜桃99| 国产精品国产成人生活片| 黑人操中国女人的逼| 99热这里只有精品16| 五月婷婷开心之中文字幕| 婷婷影院久久激情五月天| 五月免费婷婷影院在线| 久热视频在线观看精品| 91色porny在线| 国产精品入口麻豆a| 日本少妇人妻系列| 黄片小视频中文字幕| 亚洲 制服 人妻 久久| 99 re热久久免费视频| 日韩三级精品视频| 国产69堂一区二区三区在线观看 | 91色porny在线| 久久综合色综合88| 看片网免费你懂的视频| 久久久9视频免费观看| 国产精品亚洲av资源| 熟女阿高潮合集91| 绿帽人妻精品一区二区粉嫩av| 一本久久综合亚洲| 99精品福利一区二区| av中文字幕在线观看播放| av影院永久免费在线看| 天堂影院在线免费观看| 亚洲成人av熟妇人妻| 五月婷婷中文字幕免费视频| 五月婷婷大香蕉日韩| 欧美激情精品久久久小说| 日韩美女高潮视频网站| 人人妻人人爽久久久精品软件 | 五月天,色中文字幕| 久久人妻少妇av嫩草| 久久在草免费观看亚洲国产| 福利视频一区二区 三区| 天天舔天天爱天天做| 97人澡人人添人人爽欧美| 91色区在线观看国产免费| 国产日韩在线成人免费视频 | 人妻视频一区二区三区免费| 成人精品电影一区二区三区| 久久的精品一区二区三区| 久久婷婷色综合日韩一区一区 | 亚洲精品国品乱码久久久久| 91香蕉久久久久久| 欲色av蜜臀av性色av三级| 日本综合久久综合久久| 日韩最新p片中文字幕av| 日本少妇趟水视频| 中文字幕人妻99| 亚洲一区二区五十路熟女激情中出| 日韩av电影在线播放| 日韩欧美色视频在线| 国产一区二区不卡老阿姨| 91老司机在线视频| 色婷婷中文字幕一区二区| 国产午夜精品夜夜骚久久久久| 日韩精品有码自拍| www久久久大香蕉| 18久久久久久久久久久久久| 日本在线中文字幕一区二区| 婷婷六月天狠狠爱| 91国产手机在线观看| 91精品啪在线观看国产91蜜桃| 天天色综合天天aⅴ| 亚洲激情在线电影观看| 国产视频在线看一区| 日韩在线观看视频在线观看| 五月天丁香一区二区三区 | 久久99热在线观看| 熟女阿高潮合集91| 久久久久久精品免费免费WE | 日韩精品免费二区三区三区| 成人亚洲一区二区三区在线观看| 国内精品视频一区二区三| 麻豆人妻少妇精红桃视频| 日韩av高清在线影院| 色999日韩精品| 精品乱子伦一区二区| 久久综合精品伊人色欲17| 无码人妻一区二区三区18| 2020国产成人精品视频vr| 91麻豆精品传媒国产在线观看| 色综合久久久久久久久中文| 99热在线免费这里只有精品| 99热这里只有精品16| 久久亚洲精品人成综合网| 中文字幕人妻国产91| 息子嫁中文字幕一区二区三区| brazzerss色欧美| 淫秽网站在线播放| 久久久麻豆一区二区三区| 亚洲日本成人三级少妇| 91成人资源在线资源站| 中文字幕人妻少妇一区二区| 免费黄色av线上观看| 69无人区码一码二码三码| 人妻人人澡人人爽夜夜爽| 日本女人视频网站| 国产亚洲精品久久久久久妇女| 99久久99久久久精品| 成人伦理片免费在线观看免费观看| 国产一区二区三区 久久| 臀蜜91精品国产免费观看| 蜜桃臀久久久蜜桃臀| 91国产精品视频在线| 国产一级av岛国片| 一区二区三区久久久无| 亚洲欧美日韩精品制服| 日韩人妻字幕在线| 久久精品一区二区日韩| 日韩欧美一级二级三级| 久久精品熟妇熟妇丰满人妻5o| 免费公开国产五十路视频| 国产中文字幕不卡在线| 看吊视频一区二区三| 亚洲自拍偷拍动图| 人妻中文字幕视频| 亚洲情爱视频网站| 国产成+人+综合+欧美 亚洲| 国产精品成人久久久久久| 日韩午夜宅男福利| 熟女一区二区三区在线观看视频| av中文字幕在线观看播放| 在线视频蜜桃视频| 偷拍 亚洲 熟女| 精品999高清视频| 亚洲人午夜精品射精日韩| 亚洲热青春视频在线| 制服丝袜 欧美日韩| 日韩一区二区中文字幕| 国产69堂一区二区三区在线观看 | 色综合久久久久久久久中文| 日韩av在线电影免费看| 亚洲中文字幕在线的| 日日爱亚洲一区av| 色哟哟 日韩精品| 人妻少妇一区二区三区视频| av天堂网在线播放| 亚洲欧美日韩国产成人综合| 日本萝莉三级电影| 熟女少妇内色日韩亚洲| 欧美熟妇大bbwsex| 成人日韩视频中文字幕| 人妻中文字幕视频| 欧美v日韩v亚洲v最新| 亚洲丝袜在线欧美| 青青久视频在线观看| 国产综合精品久久东京热| 国产成+人+综合+欧美 亚洲| 日韩最新p片中文字幕av| 日韩在线中文字幕免费| 日韩一级特黄大片亚洲| 午夜精品久久久久久不卡欧美一级| 国产偷拍自拍久久久| 久久99视频完整版| 夏天香蕉如何保存能放更久| 丰满大屁股熟妇偷拍| 久久精品综合一区二区三区| 久久一级夫妻生活片| 97精品久久久久中文字幕| 日本大香蕉永久网| 偷拍 亚洲 熟女| 松本一香亚洲av一区| 亚洲人午夜精品射精日韩| 精品少妇久久一区二区三区| 熟女少妇内色日韩亚洲| 激情五月天福利婷婷| 中文字幕人妻少妇一区二区| 亚洲成人三级黄色片| 久久色综合久久88| 国产黑丝美女办公室激情啪啪| 色999日韩精品| 全部免费特黄特色大片看片| 日韩一区二区免费av| 国产免费av在线网站| 国产精品成人久久久久久| 少妇高潮久久久久久一代女皇 | 一区二区三区四区高清av| 日韩中文亚洲字幕av| 中文字幕第一页婷婷| 国产精品成人久久久久久| 日韩中文字幕人妻在线视频| 日韩av中文一区| 精品少妇视频一区二区三区| 日韩精品在线免费观看自拍视频| 免费公开国产五十路视频| 老熟妇一区二区三区| 91在线观看视频成人| 亚洲国产欧美在线人成aaaa| 蜜臀av性久久一区二区| 中老熟妇一区二区| 青青操成人免费视频| 日本熟妇视频中文字幕有码| 在线观看免费日本不卡一二区| 国产av自拍亚洲区| 久久精品国产99久久久蜜桃| 日韩美女高潮视频网站| 国产av自拍亚洲区| 懂色aⅴ一区二区三区免费| 91色区在线观看国产免费| 亚洲午夜久久久久影院| 麻豆精品国产一二三免费| 五月天中文字幕在线婷婷| 91麻豆精品传媒国产在线观看| 老鸭窝在线视频免费看| 中文字幕成人乱码视频| 成人精品视频99在线观看免费| 亚洲成人精品国产av| 乱码久久久久久久电影| 天堂久久天堂色综合色| 久久人妻少妇av嫩草| 五月婷婷之之五月婷婷| 久久久久久久久久色| 五月婷婷之综合激情在线| 奇米成人av电影| 亚洲av中字在线| 日本午夜高清在线| 日本成人有码在线 中文字幕| 国产美女一区二区三区四区免费| 日韩一区二区免费av| 日韩欧美国产一卡一区| av网站福利导航在线| 在线免费观看完整版日韩av | 久久精品免费看网站| 国产一区二三区日韩精品| 2023av在线视频| 国产一区二区三区高清视频| 日韩中文字幕三级电影| 国产精品久久久久久久久777| 绝色少妇高潮3在线观看| 黑夜中文字幕首页在线视频| 亚洲一区二区日韩电影| 人妻一区二区中文字幕| 久久久999亚洲精品| 日韩在线中文字幕免费| 日韩人妻字幕在线| 欧美综合激情另类专区| 日韩亚洲欧美在线com| 亚洲制服人妻另类小说| 国产成人亚洲综合a∨| 欧美精品久久久久久aa| 爸爸和女儿的黄色片| 中文字幕日韩一区二区不卡| 美日韩av一区二区| 亚洲少妇插b色图| 国产美女一区二区三区四区免费| 成熟丰满熟妇xxxxx丰满| 久久精品视频免费视频| 色哟哟精品免费专区| 国产亚洲欧美色视频| 91老司机在线视频| 白石茉莉奈一区二区av| 2020精品极品色视频| 99热这里只有精品色| 在线免费观看完整版日韩av | 亚洲激情av电影| 久久国产精品99国产精2021| 高清一区二区三区四区免费视频| 两个97年失恋疗伤在线观看| 国产一区二区三区在线观看网站| 瑟瑟韩漫在线观看| 亚洲一区二区尻逼| 在线视频人妻中文字幕| 激情视频网站久久婷婷| 日本少妇人妻系列| 亚洲国产成人精品网站| 日本成人有码在线 中文字幕| 日韩av中文一区| 91人妻无码成人精品一区二区| 久久精品国产免费观看频道| 日韩欧美中文字幕综合网| 欧美成人一区二区免| 国产97色在线免费看| 人妻精品一区二区熟女| www中文字幕日本| 国产av天堂亚洲国产av在线| 九九视频精品在线免费观看 | 日韩精品免费二区三区三区| 成人福利在线播放免费| 日韩成人免费电影在线| 五十路丰满大屁股老熟女| 国产乱子伦一区二区三| 综合亚洲和欧洲一二三四区| 99久草精品视频在线| 青青青在线观看国产| 国产精品兄妹在线观看麻豆| 息子嫁中文字幕一区二区三区| 妖精视频在线观看一区二区三区| 成人小视频在线播放| 五月婷婷之之五月婷婷| 亚洲三级天堂在线| 婷婷六月天综合久久| 日韩中文字幕三级电影| 国产日韩欧美中文在线播放| 丝袜人妻丝袜美腿呻吟| 人妻中文字幕在线三区| 婷婷六月天综合久久| 狠狠做深爱婷婷综合激情| 欧美人妻有码中文字幕| 激情五月综合婷婷欧美| 日本久久激情视频| 丝袜美腿aⅴ一区二区三区| 国产精品亚洲av资源| 日韩av高清在线影院| 欧美日韩亚洲精品视频| 日韩 欧美 一区二区三区| 色综合久久久久久久综合| 日本熟妇厨房xxxⅹ乱| 精品久久一区av中文字幕| 亚洲日本成人三级少妇| 91xxx免费在线观看| 五月婷婷之之五月婷婷| 亚洲综合伦理av| 91久久久福利视频| 国产精品美女九九九| av天堂网在线播放| 精品久久www人人爽人人| 91区二区三区免费看| 久久99热在线观看| 久久成人熟女热视频| 国产小视频在线播放网站| 国产亚洲欧洲一区二区在线| 女人18毛片一区二区三区| 欧美色综合天天久久| 性高潮久久久久久久久久| 中文字幕成人乱码视频| 亚洲ⅴa久久久噜噜噜久久狠狠 | 丰满的少妇2一区二区| 国产精品久久人人爽人人 | 中文字幕av一区二区人妻| 色婷婷av一区二区三区四川| 久久999精品久久久久久| 一本色道久久88综合亚洲精品是| 黄色av网站在线观看免费| 久久亚洲在线精品视频| 国产欧美电影一区二区三区| 日本少妇激情视频免费看| 中文字幕超碰在线播放| 久久久激情伦理在线视频| 国产91一区二区三区在线| 国产亚洲成人av在线播放| 丁香婷婷激情四射| 亚洲情色电影网站| 夏天香蕉如何保存能放更久| 色哟哟精品日韩欧美| 国产乱子伦视频观看| 亚洲激情诱惑美女| 玩弄少妇人妻500系列| 日日摸夜夜添精品人人妻人人| www,夜色,com| 日本加勒比免费高清视频| 熟女人妻中文字幕欧美日韩| 日日橹狠狠爱欧美| 一本久道久久综合狠狠| 久久99热在线观看| 一区二区三区久久久无| 丁香婷婷激情啪啪综合五月天| 亚洲激情四射五月| 午在线亚洲男人午在线| 国产一二三区不在卡| 色版视频在线免费观看| 好好的曰com视频在线| 制服护士jk学生丝袜秘书套装| 久久大伊人精品视频| 久久久91人妻精品一区二区三区| 色网站在线免费观看视频| 日韩av亚洲激情色图| 日韩av在线电影免费看| 日韩久久久久久久久久久久久| 综合久久 中文字幕| 美日韩av一区二区| 人妻熟妇丰满不伦一区二区三区| 日韩午夜宅男福利| 久久天天躁狠狠躁夜夜av| 日韩激情视频在线高清| 偷拍 亚洲 熟女| 久久久久久99国产精品免费| 日本最新的中文字幕| 久久视频免费一区二区| 国产精品国产成人生活片| 五月激情综合网五月激情| 国产一区二区青青精品久久 | 日韩毛片在线视频播放| 久久亚洲福利视频免费| 成人自拍视频手机免费在线观看 | 99在线精品免费视频| 欧美成人精品女人久久久| 日韩人妻精品免费| 2xpxp在线视频| 一区二区三区四区五区日韩| 不卡无在一区二区三区四区| 国产 日韩 精品 欧美| 欧美人与动牲交欧美精品| 日韩精品嘿咻视频| 丰满少妇免费做爰大片人| 超碰手机在线大香蕉| 中文字幕人妻福利一区| 国产精品日视频不卡| 色婷婷一区二区中文字幕| 97久久国产综合网| 日韩美女高潮视频网站| 婷婷激情网五月天| 国语自产精品视频在线播放| 九九热视频精彩在线| 在线成人亚洲中文字幕av| 亚洲天堂 亚洲第一| 成人亚洲视频在线观看第一页| 亚洲五月天久久久噜噜噜噜| 亚洲av日日日日| 最近的最好看的中文字幕| 成人caopao自拍视频| 成人首发男人的天堂久久久| 久久夜夜一区二区三区日韩| 日本最新的中文字幕| 国产又粗又猛又爽又大的视频| 一本久道久久综合狠狠| 日韩av不卡电影在线观看| 日韩欧美一级二级三级| 东京热日韩电影一区二区| 国产色老太色老太在线视频| 99啪免费观看在线视频| 男人的天堂亚洲2020| 在线视频 一区 日| 国产女同互慰一区二区三区| 欧美日韩私拍福利视频| 热久久久久这里有精品| 久久久夜色精品亚洲av图| 欧美亚日韩一区二区三区| 国产精品久久九九视频| 中文字幕亚洲一区嗯嗯| 国产精品久久久久久人妻免费| 国产欧美日韩两性在线观看| 99热6这里只有精品国产| 激情五月天丁香综合| 日韩午夜小视频合集| 日韩欧美中文字幕综合网| 国产精品美女久久av爽| 中文字幕亚洲一区嗯嗯| 白石茉莉奈一区二区av| 人人超级碰青青精品| 免费看av中文字幕| 女人18毛片一区二区三区| 青青青青青青在线播放视频| 99精品人妻一区二区三区| 精品少妇久久一区二区三区| 日韩精品中文字幕巨臀人妻中出| 亚洲激情国产专区| 成人福利在线播放免费| 日韩熟妇中文字幕| 亚洲av大全久久| 中文字幕婷婷在线观看| 日韩中文字幕人妻在线视频| 国产精品成人久久久久久| 日韩一级精品一区二区| 亚洲视频频道在线| 久久久久久久久久久一级片| 日韩一区二区中文字幕| 亚洲av另类色图在线| 日韩草草草草草草草草草| 欧美口爆亚洲口爆在线| 绝色少妇高潮3在线观看| 99久在线视频观看| 亚洲激情电影一区| 亚洲国产欧美在线人成aaaa| 99热在线只有精品6| 麻豆网站在线免费观看| 日韩欧美激情免费无毒| 蜜桃臀久久久蜜桃臀| 97成人在线视频免费播放| 久久久久久亚洲av在线播放| 成人在线观看视频精品| 亚洲情爱视频网站| 国产av天堂亚洲国产av在线| 福利视频一区二区 三区| 亚洲中文字幕在线的| 丰满的少妇2一区二区| 日韩人妻视频一区二区三区| 成人伦理片免费在线观看免费观看| 熟女少妇内色日韩亚洲| 亚洲一级黄色免费片| 国产美女啪啪18禁| 国产av色噜噜一区二区三区| 欧美激情一区二区三区综合| 加勒比图片区不卡97| 91人妻无码成人精品一区二区| 日韩一区二区三区成人| 亚洲欧洲成熟熟女妇专区乱| 成人精品视频99在线观看免费| 69无人区码一码二码三码| 欧洲国产伦久久久久久久| 欧美丰满熟妇乱xxxx| 中文字幕+乱码av| 久久婷婷色综合日韩一区一区 | 海角91成人一区二区三区| 久久精品亚洲天堂av| 97精品久久久久中文字幕| 精品国产18久久久久久依依影院 | 在线日韩av永久免费观看| 91免费国产青青碰| 不卡在线一区二区三国产在线视频| 国产麻豆剧传媒精品国产av黑人| 成人福利在线播放免费| 欧美熟妇大bbwsex| 中文字幕av一区二区人妻| 91精选一区二区三区久久久| 91精品视频一区二区| 91九色蝌蚪蜜桃臀| 日本韩国三级电影片| 人妻丰满精品熟女| 日日狠狠久久偷偷综合色| 人人妻人人爽狠狠干| 日本在线中文字幕一区二区| 自拍偷拍图片专区| 深夜激情五月天久久视频| 五月天丁香一区二区三区| 国产日韩欧美自拍视频| 日韩网站在线免费观看| 中老熟妇一区二区| 亚洲少妇插b色图| 亚洲熟妇熟女久久精品综合| 日本韩国三级电影片| 69久久久久久波多野高潮| 天天插天天透天天婷婷| 国产日本福利在线观看| 日韩成人在线观看视频| 亚洲av另类色图在线| 国产免费av在线网站| 天天操一操天天操天天操| 国产五月天在线视频| 丁香婷婷激情啪啪综合五月天| 瑟瑟韩漫在线观看| 久久久久久亚洲av在线播放| 91精品啪在线观看国产91蜜桃| 国产精品美女丝袜一区二区| 亚洲一区二区三区四区五区福利| 凹凸熟女白浆精品91| 成人caopao自拍视频| 最新中文字幕 av| 精品国产18久久久久久依依影院 | 熟女少妇水多一区二区三区| 成人精品视频99在线观看免费| 国产一区二区三区在线呻吟视频| 国产成人精品日本亚洲777| 国产日韩av在线免费观看| 精品国产一区二区三区av天堂| 欧美日韩国产综合色| 亚洲AV无码国产综合一区二区| 日本不卡三区四区| 久久久久久有国产精品| 亚洲欧美日韩清纯唯美| 亚洲黄色天堂网站| 久久精品动漫一区二区三区| 91精品视频一区二区| 久久99久久99久久99受| 日本熟妇免费一区二区三区 | 人妻伦伦精品一区二区三区在线看| 国产久精品搜索视频| 久久久久黄色片三级伦理| 黄片小视频中文字幕| 91免费观看国产精品| 清纯唯美激情亚洲天堂| 亚洲综合色网自拍| 国产999精品999| 亚洲一区二区尻逼| 国产精品久久久久久久影视一免费| 少妇人妻88久久中文字幕| 国产成人精品日本亚洲777| 91夜色私人影院在线观看| 久久va视频免费观看| 777久久久久久久| 亚洲绿色成人在线| 蜜臀久久精品99国产| 国产中文字幕不卡在线| 国产乱子伦精品福利| 丁香婷婷色五月激情综合深爱| 亚洲丰满性熟妇ⅹxxoo| 国产美女啪啪18禁| 日韩av在线电影免费看| 乱码午夜久久久99| 国产综合精品久久东京热| 一本久道久久综合综合| 日本中文字幕在线观看视频免费| 精品久久久havxxx蜜桃| 成人首发男人的天堂久久久 | 日韩网站在线免费观看| 麻豆91免费视频网站| 制服丝袜 欧美日韩| 天天干天天玩天天操| 激情五月天丁香综合| 在线观看国产一区亚洲| 两个97年失恋疗伤在线观看| 午夜伊人狠狠av| 婷婷六月天综合久久| 123av中文字幕| 美女亚洲第一区二区| brazzerss色欧美| 欧美日韩免费网站观看| 日本超熟老熟妇网站| 午夜久久久久久禁播电影| 日韩欧美中文亚洲一区| 国产一二三区不在卡| 老熟女老91妇女老熟女| 国产精品三级久久久久精品大全| 国内精品伊人久久久久人妇| 又硬又粗又黄又猛又爽又持久| 人妻激情麻豆综合| 久久久久69成人精品视频| 不卡无在一区二区三区四区| 国产丝袜美腿一二三四五区| 久久婷婷色综合日韩一区一区 | 国产日本福利在线观看| 在线免费观看完整版日韩av | 93久久精品日日躁夜夜躁欧美 | 国产中文字幕不卡在线| 久久99在线视频观看| 国产午夜精品在线线| 人妻中文字幕一区二三区| 人妻中文字幕视频| 欧美激情日韩精品久久久| 日韩中文亚洲字幕av| 白石茉莉奈一区二区av| 五月婷婷激情在线视频播放 | 日韩av有码在线观看| 亚洲高清精品人妻自拍| 亚洲国产av不卡婷婷| 不卡无在一区二区三区四区| 少妇人妻一级视频观看| 最新中文字幕日韩av| 国产精选一区二区三区91| 免费黄色av线上观看| 色哟哟精品免费专区| 熟女少妇内色日韩亚洲| 放荡的人妻少妇视频| 国产av熟女白浆精品视频| 97精品久久久久中文字幕| 国产久精品搜索视频| 91成人一区二区三区| av在线网站一区二区三区天堂| 日本最新的中文字幕| 亚洲久久av97一区| 老熟妇一区二区三区| 国产日韩欧美自拍视频| 国产极品嫩模在线观看91| 日韩男女一进一出| 成人国产av精品麻豆网| 久久久久久亚洲综合影院| 桃色网站香蕉大香蕉| 久久亚洲福利视频免费| 成人在线观看视频精品| 99久久精品国内盗摄| 久久精品国产字幕高潮37| 很黄很黄的在线上床| 国产又粗又猛又爽又黄的视频网站| 国产精品中文字幕免费| 日韩欧美色视频在线| 97色伦综合在线欧美视频| 绿帽人妻精品一区二区粉嫩av| 中文字幕乱码一区二区av| 瑟瑟韩漫在线观看| 久久久999久久国产| 色婷婷狠狠十八禁久久yy| 成人亚洲视频在线观看第一页| 午在线亚洲男人午在线| 国自产久久久久无码春色影视| 麻豆网站在线免费观看| 人妻视频一区二区三区免费| 超碰在线观看97免费| 一区二区三区四区高清av| 91xxx免费在线观看| 国产一区二区三区精品公司| 亚洲精品高清视频在线观看| 亚洲一级黄免费视频| 亚洲制服人妻另类小说| 亚洲小说综合另类| 最新欧美日韩一区二区| 日韩欧美激情免费无毒| 操操操操操操操操操操操操影院| 蜜臀精品国产91内射久久| 精品国产日韩高清毛片| 国产精品久久九九视频| 风流老熟女一区二区三区av| 国产成人精品推荐视频| 亚洲激情网友自拍| 国产av一区二区三区免费观看| 五月婷婷亚洲综合色| 国产精品性色在线播放| 熟女少妇水多一区二区三区| 久久久亚洲熟妇熟女内射一区 | 日韩精品日韩精品日韩| 国产精品久久久久久66| 国产精品久久久久久7777| 丰满少妇免费做爰大片人| 熟女少妇一区二区在线观看| 五月婷婷亚洲综合色| 丁香婷婷激情啪啪综合五月天| 日本韩国国产一级片| 成人中文字幕在线免费看| 97视频人人做人人爱| 人妻av精品一区| www一区二区三区视频com| 久久久999视频视频| 国产精品久久久精品三级| 亚洲日本成人三级少妇| 一本色道久久亚洲精品av| 丰满的少妇2一区二区| 久久久久久伊人婷婷| 91xxx免费在线观看| 乱码午夜久久久99| 日本精品久久久久中文字幕2 | 伊人网免费看黄片| 日本精品久久久久中文字幕2 | 亚洲精品日韩在线观看17c| 婷婷麻豆国产在线观看| 天天操天天日天天摸天天射| 久久艹中文字幕丝袜| 成人精品一区久久久久| 亚洲少妇人妻系列| 免费欧美一二三区| 国产成年人精品在线看| 国产伦理一区二区久久久久久 | 日本大香蕉永久网| 日韩欧美亚洲成人网| 91精选一区二区三区久久久| 国产日本福利在线观看| 青青青青久久久久久| 日韩欧美中文字幕综合网| 凹凸熟女白浆精品91| 亚洲自拍偷拍动图| 日韩男女一进一出| 加勒比图片区不卡97| 日韩亚洲成人aα在线| 欧美日韩私拍福利视频| 少妇人妻中文字幕一二三区| 亚洲成人另类综合| 日本久久免费在线观看| 99久久精品视频免费| 亚洲一区二区日韩电影| 日韩av区一区二区三| 久青青在线观看视频国产| 久久久亚洲熟妇熟女ⅹxx| 丝袜国产日韩另类高清| 久久久久9999免费视频| 五月免费婷婷影院在线| 国产日韩欧美自拍视频| 欧美日韩国产精品欧美| 亚洲情色天堂在线观看| 日韩亚洲欧美在线com| 日本少妇激情视频免费看| 青青青在线观看国产| 高清欧美精品xxxxx在线看| 中文字幕人妻丝袜成熟久久| 国产精品亚洲av资源| 99成人免费视频观看| 一本色道久久综合狠狠躁篇怎么玩| 久久青草视频免费播放| 日韩精品视频网站免费看| 海角91成人一区二区三区| 国产一区二区三区高清视频| 亚洲少妇人妻系列| 五月激情综合网五月激情| 亚洲成人另类综合| 日本萝莉三级电影| 国产亚洲精品久久久久久妇女| 精品少妇视频一区二区三区| 九九电影欧美精品免费看| 欧美日韩激情亚洲综合| 国产精品99久久黑人免费| 精品丝袜久久久久久人妻懂色| 中文字幕人妻福利一区| 久久久亚洲熟女精品俱乐部| 日韩黄色大片中文字幕| 国产丝袜美腿一二三四五区| 亚洲av综合有码| 亚洲精品日韩在线观看17c| 久久久激情伦理在线视频| 天天操天天射天天干b| 亚洲一区二区日韩电影| 日韩亚洲中文字幕视频| 亚洲欧美国产精品成人| 欧美熟妇大bbwsex| 深夜激情五月天久久视频| 中文字幕欧美精品日韩有码 | 精品一区二区三区国产馆| 亚洲国产成人女人久久久| 又色又爽又黄久久98| 亚洲国产中文二区二区| av网站福利导航在线| 日韩精品中文字幕巨臀人妻中出| 青青久视频在线观看| 青青久视频在线观看| 久久国产精品99国产精2021 | 日日摸夜夜添精品人人妻人人| 亚洲午夜伦理aaa| 91一区区二区三区在线观看91| 夜福利视频免费观看| 国产精品视频你懂的91| 中文字幕人妻熟女av| 成人av在线中文字幕一区| 综合久久精品久久精品| 国产精品午夜久久久久| 男人做受天堂青青操| 精品国产一区二区三区av天堂| 日本漂亮人妻熟妇| 成人伦理片免费在线观看免费观看 | 青青草万部激情影院| 色片在线观看国产| 国产一区二区三区高清视频| 五月激情综合网五月激情| 日韩精品免费二区三区三区| 99在线精品免费视频| 国产综合91天堂亚洲国产| 熟女人妻中文字幕欧美日韩| 91夜色私人影院在线观看| 亚洲中文字幕久久久av| 国产天堂mv在线2020| 99 re热久久免费视频| 一区二区三区亚洲人妻| 国产精品国产成人生活片| 综合久久 中文字幕| 天天操一操天天操天天操| 伊人久久首页精品| 91人妻人人妻人人妻| 亚洲国产182tv精品天堂| 色网站在线免费观看视频| 中文字幕一区二区不卡高清| 2014天天操一操天天干一干| 高清露脸爆极品白富美av| 日日橹狠狠爱欧美| 国产一区二三区日韩精品| 99久久久精品四川精品| 五月天久久伊人欧美| 五月天天天操天天干| www一区二区三区视频com| 亚洲一级一级真人黄大片| 国产午夜精品久久精| 亚洲熟妇欲色一区一区三区| 国产精品入口麻豆a| 国产又粗又爽又大又黄视频| www.777麻豆网| 久久久999亚洲精品| 97成人在线视频免费播放| 日韩亚洲成人aα在线| 日韩av高清在线影院| 人妻激情麻豆综合| 93成人在线播放视频| 欧美丰满熟妇aaaa片视频| 色网站在线免费观看视频| 国产欧美日韩在线激情| 韩国三级伦理在线视频| 国产色老太色老太在线视频| 成人黄色免费在线播放| 亚洲少妇插b色图| 黑人性高潮免费视频| 亚洲国产182tv精品天堂| 激情五月天图片小说在线观看 | 天天干天天玩天天操| 99热在线精品这里只有精品| 五月天综合av影院| 爸爸和女儿的黄色片| 日本不卡三区四区| 久久一级夫妻生活片| 99久久久精品四川精品| 99久久热这里只有精品| 伊人久久中文字幕人妻| 久久久久久精品一级片| 久久综合亚洲精品五区| 久久av红桃一区二区禁漫| 亚洲av香蕉高清在线播放| 成熟丰满熟妇xxxxx丰满| 国产又粗又猛又爽又大的视频| 老鸭窝在线视频免费看| 9999久久久久久久久| 3751色一区二区三区| 97成人在线视频免费播放| 天堂影院在线免费观看| 亚洲第一成人在线观看av| 国产欧美电影一区二区三区| 五月婷婷激情一区二区三区| 日韩黄色影视大全| 少妇人妻一级视频观看| 中文av在线dvd| 亚洲视频频道在线| 国产精品久久久久久66| 日韩av中文一区| 成人黄色在线观看91| av的天堂男人的天堂| 国产色老太色老太在线视频| 亚洲欧美另类久久精品| 在线日韩亚洲av电影| 日本少妇激情视频免费看 | 日韩欧美激情免费无毒| 97人澡人人添人人爽欧美| 自拍偷拍 国产自拍| 蜜臀久久国产精品久久久| 成人国产偷拍自拍视频| 亚洲欧美国产精品成人| 日韩精品中文字幕巨臀人妻中出| 日韩一区二区三区成人| 国产二区中文字幕91| 亚洲天堂av日韩在线| 亚洲小说综合另类| 高清一区二区三区四区免费视频| av一本久久久久久| 精品少妇人妻一区二区三区四区| 秋霞福利视频在线观看| 99精品福利一区二区| 色综合久久东京热| 久久久亚洲熟妇熟女内射一区 | 午夜精品久久久久久不卡欧美一级 | 久久在草免费观看亚洲国产| 色综合变态另类777| 国产一区二区美女视频| 超碰成人手机免费在线观看| 日韩中文字幕av在线观看网站| 久久精品熟妇熟妇丰满人妻5o| 激情五月综合婷婷欧美 | 在线观看日产av网站| 日本女人视频网站| 久久久人妻精品一区二区三区四区| 欧美日韩图区一区二区三区| 看片网免费你懂的视频| 玩弄放荡人妻少妇精品| 日韩中文字幕三级电影| 999热国内精品在线免费视频 | 日本精品国产免费久久久| 欧美成人精品女人久久久| 不卡在线一区二区三国产在线视频| 一本色道久久亚洲精品av|