<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    I'll be back!

      Focus on BPM, celebrate PegaRULES Process Commander (PRPC)
    posts - 76, comments - 161, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Dojo 的 Ajax 簡單應用

    Posted on 2006-10-24 18:56 zolly 閱讀(4654) 評論(0)  編輯  收藏
    在同一個頁面插入數據到數據庫,成功后返回成功插入的結果,相關文件PRPC.htm,SerDojo.java,DataDAO.java。
    Dojo開發包:dojo-0.3.1-ajax.zip.

    相關網站:http://www.tkk7.com/burnet/archive/2006/06/27/55339.html
    http://manual.dojotoolkit.org/(官方)
    http://manual.dojotoolkit.org/WikiHome/DojoDotBook?(Dojo Book)
    http://ajaxcn.org/forum/posts/list/127.page?(Ajax 中文站,Dojo 文檔列表)

    代碼如下:
    PRPC.htm
    <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
    <html?xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta?http-equiv="Content-Type"?content="text/html;?charset=ISO-8859-1">
    <title>PRPC?Test</title>
    <script?type="text/javascript"?src="js/dojo/dojo.js"></script>
    <script?type="text/javascript">
    dojo.require(
    "dojo.io.*");

    function?mySubmitProfile()?{
    ????dojo.byId('btnAddProfile').disabled?
    =?'disabled';
    ????
    ????dojo.io.bind?(
    {
    ????????url:?'SerDojo
    ?flag=profile',
    ????????handler:?callBack,
    ????????formNode:?dojo.byId('main')
    ????}
    );
    }


    function?mySubmitCountry()?{
    ????dojo.byId('btnAddCountry').disabled?
    =?'disabled';

    ????dojo.io.bind?(
    {
    ????????url:?'SerDojo
    ?flag=country',
    ????????handler:?callBack,
    ????????formNode:?dojo.byId('main')
    ????}
    );
    }


    function?callBack(type,?data,?evt)?{
    ????
    if?(data?==?'profileYES')?{
    ????????insertStrProfile();
    ????????dojo.byId('stateFlag').innerHTML?
    =?data;
    ????????dojo.byId('btnAddProfile').disabled?
    =?'';
    ????}
    ?else?if?(data?==?'countryYES')?{
    ????????insertStrCountry();
    ????????dojo.byId('stateFlag').innerHTML?
    =?data;
    ????????dojo.byId('btnAddCountry').disabled?
    =?'';
    ????}

    }


    function?insertStrProfile()?{
    ????
    var?frm?=?dojo.byId('main');
    ????
    var?name?=?frm.name.value;
    ????
    var?sex;
    ????
    var?radio?=?document.getElementsByName('sex');
    ????
    for?(var?i?=?0;?i?<?radio.length;?i?++)?{
    ????????
    if(frm.sex[i].checked)?{
    ????????????sex?
    =?radio[i].value;
    ????????}

    ????}

    ????
    var?age?=?frm.age.value;
    ????
    var?address?=?frm.address.value;
    ????
    ????
    var?txtName?=?document.createTextNode(name);
    ????
    var?txtSex?=?document.createTextNode(sex);
    ????
    var?txtAge?=?document.createTextNode(age);
    ????
    var?txtAddress?=?document.createTextNode(address);
    ????
    ????
    var?tdName?=?document.createElement("td");
    ????
    var?tdSex?=?document.createElement("td");
    ????
    var?tdAge?=?document.createElement("td");
    ????
    var?tdAddress?=?document.createElement("td");
    ????
    ????
    var?tr?=?document.createElement("tr");

    ????tdName.appendChild(txtName);
    ????tdSex.appendChild(txtSex);
    ????tdAge.appendChild(txtAge);
    ????tdAddress.appendChild(txtAddress);
    ????
    ????tr.appendChild(tdName);
    ????tr.appendChild(tdSex);
    ????tr.appendChild(tdAge);
    ????tr.appendChild(tdAddress);

    ????
    var?parNode?=?document.getElementById("tbProfile");
    ????parNode.appendChild(tr);
    }


    function?insertStrCountry()?{
    ????
    var?frm?=?dojo.byId('main');
    ????
    var?country?=?frm.country.value;
    ????
    var?company?=?frm.company.value;
    ????
    var?website?=?frm.website.value;

    ????
    var?txtCountry?=?document.createTextNode(country);
    ????
    var?txtCompany?=?document.createTextNode(company);
    ????
    var?txtWebsite?=?document.createTextNode(website);

    ????
    var?tdCountry?=?document.createElement("td");
    ????
    var?tdCompany?=?document.createElement("td");
    ????
    var?tdWebsite?=?document.createElement("td");

    ????
    var?tr?=?document.createElement("tr");

    ????tdCompany.appendChild(txtCompany);
    ????tdCountry.appendChild(txtCountry);
    ????tdWebsite.appendChild(txtWebsite);

    ????tr.appendChild(tdCompany);
    ????tr.appendChild(tdCountry);
    ????tr.appendChild(tdWebsite);

    ????
    var?parNode?=?document.getElementById("tbCountry");
    ????parNode.appendChild(tr);
    }

    </script>
    </head>

    <body>
    <form?id="main">
    <table?width="600"?border="0"?align="center"?cellpadding="0"?cellspacing="0"?style="border:?1px?dashed?#000000;">
    ??
    <tr>
    ????
    <td?valign="top">
    ??????
    <table?width="100%"?border="0"?cellspacing="0"?cellpadding="3">
    ????????
    <tr>
    ??????????
    <td><table?width="80%"?border="1"?align="center"?cellpadding="1"?cellspacing="1">
    ???????????
    <tbody?id="tbProfile">
    ????????????
    <tr>
    ??????????????
    <td>Name</td>
    ??????????????
    <td>Age</td>
    ??????????????
    <td>Sex</td>
    ??????????????
    <td>Address</td>
    ????????????
    </tr>
    ???????????
    </tbody>
    ??????????
    </table></td>
    ????????
    </tr>
    ????????
    <tr>
    ??????????
    <td><table?width="50%"?border="0"?align="center"?cellpadding="2"?cellspacing="1"?bgcolor="#CCCCCC">
    ????????????
    <tr>
    ??????????????
    <td?width="29%"?bgcolor="#EBEBEB">Name:</td>
    ??????????????
    <td?width="71%"?bgcolor="#EBEBEB"><input?type="text"?name="name"?/></td>
    ????????????
    </tr>
    ????????????
    <tr>
    ??????????????
    <td?bgcolor="#EBEBEB">Age:</td>
    ??????????????
    <td?bgcolor="#EBEBEB"><input?type="text"?name="age"?/></td>
    ????????????
    </tr>
    ????????????
    <tr>
    ??????????????
    <td?bgcolor="#EBEBEB">Sex:</td>
    ??????????????
    <td?bgcolor="#EBEBEB"><input?type="radio"?name="sex"?checked="checked"?value="Male"?/>
    ????????????????Male
    ??????????????????
    <input?type="radio"?name="sex"?value="Female"?/>
    ??????????????????Female
    </td>
    ????????????
    </tr>
    ????????????
    <tr>
    ??????????????
    <td?bgcolor="#EBEBEB">Address:</td>
    ??????????????
    <td?bgcolor="#EBEBEB"><input?type="text"?name="address"?/></td>
    ????????????
    </tr>
    ????????????
    <tr>
    ??????????????
    <td?colspan="2"?bgcolor="#EBEBEB"><div?align="right">
    ????????????????
    <input?type="button"?name="btnAddProfile"?value="AddNew"?onclick="mySubmitProfile()"?/>
    ??????????????
    </div></td>
    ??????????????
    </tr>
    ??????????
    </table></td>
    ????????
    </tr>
    ??????
    </table>
    ????
    <table?width="100%"?border="0"?cellspacing="0"?cellpadding="0">
    ??
    <tr>
    ????
    <td?height="20"><font?color="#FF0000"><div?id="stateFlag">State</div></font></td>
    ??
    </tr>
    </table>

    ????
    <hr?width="90%"?size="1"?noshade="noshade"?/>
    ????
    </td>
    ??
    </tr>
    ??
    <tr>
    ????
    <td?valign="top">
    ??????
    <table?width="100%"?border="0"?cellspacing="0"?cellpadding="3">
    ????????
    <tr>
    ??????????
    <td><table?width="80%"?border="1"?align="center"?cellpadding="1"?cellspacing="1">
    ??????????????
    <tbody?id="tbCountry">
    ????????????
    <tr>
    ??????????????
    <td>Company</td>
    ??????????????
    <td>Country</td>
    ??????????????
    <td>WebSite</td>
    ????????????
    </tr>
    ????????????
    </tbody>
    ??????????
    </table></td>
    ????????
    </tr>
    ????????
    <tr>
    ??????????
    <td><table?width="50%"?border="0"?align="center"?cellpadding="2"?cellspacing="1"?bgcolor="#CCCCCC">
    ????????????
    <tr>
    ??????????????
    <td?width="29%"?bgcolor="#EBEBEB">Company:</td>
    ??????????????
    <td?width="71%"?bgcolor="#EBEBEB"><input?type="text"?name="company"?/></td>
    ????????????
    </tr>
    ????????????
    <tr>
    ??????????????
    <td?bgcolor="#EBEBEB">Country:</td>
    ??????????????
    <td?bgcolor="#EBEBEB"><input?type="text"?name="country"?/></td>
    ????????????
    </tr>
    ????????????
    <tr>
    ??????????????
    <td?bgcolor="#EBEBEB">WebSite:</td>
    ??????????????
    <td?bgcolor="#EBEBEB"><input?type="text"?name="website"?/></td>
    ????????????
    </tr>

    ????????????
    <tr>
    ??????????????
    <td?colspan="2"?bgcolor="#EBEBEB"><div?align="right">
    ??????????????????
    <input?type="button"?name="btnAddCountry"?value="AddNew"?onclick="mySubmitCountry()"?/>
    ??????????????
    </div></td>
    ????????????
    </tr>
    ??????????
    </table></td>
    ??????????
    <tr>
    ??????????????
    <td?align="right">
    ??????????????????
    <input?type="button"?value="NEXT"?onclick="javascript:window.open('dojoBind.htm','_self')"?/>
    ??????????????
    </td>
    ??????????
    </tr>
    ????????
    </tr>
    ??????
    </table>
    ????
    </td>
    ??
    </tr>
    </table>
    </form>
    </body>
    </html>

    SerDojo.java
    package?servlet;

    import?DAO.DataDAO;

    import?java.io.IOException;
    import?java.io.PrintWriter;

    import?javax.servlet.ServletException;
    import?javax.servlet.http.HttpServletRequest;
    import?javax.servlet.http.HttpServletResponse;


    /**
    ?*?Servlet?implementation?class?for?Servlet:?SerDojo
    ?*
    ?
    */

    public?class?SerDojo?extends?javax.servlet.http.HttpServlet
    ????
    implements?javax.servlet.Servlet?{
    ????
    /*?(non-Java-doc)
    ?????????*?@see?javax.servlet.http.HttpServlet#HttpServlet()
    ?????????
    */

    ????
    public?SerDojo()?{
    ????????
    super();
    ????}


    ????
    /*?(non-Java-doc)
    ?????*?@see?javax.servlet.http.HttpServlet#doGet(HttpServletRequest?request,?HttpServletResponse?response)
    ?????
    */

    ????
    protected?void?doGet(HttpServletRequest?request,
    ????????HttpServletResponse?response)?
    throws?ServletException,?IOException?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????PrintWriter?out?=?response.getWriter();
    ????????String?strFlag?
    =?request.getParameter("flag");

    ????????String?strName?
    =?request.getParameter("name");
    ????????String?strAge?
    =?request.getParameter("age");
    ????????String?strSex?
    =?request.getParameter("sex");
    ????????String?strAddress?
    =?request.getParameter("address");

    ????????String?strCompany?
    =?request.getParameter("company");
    ????????String?strCountry?
    =?request.getParameter("country");
    ????????String?strWebSite?
    =?request.getParameter("website");

    ????????DataDAO?dao?
    =?new?DataDAO();
    ????????
    boolean?isSuccess?=?false;

    ????????
    if?(strFlag.equals("profile"))?{
    ????????????
    try?{
    ????????????????isSuccess?
    =?dao.insertProfile(strName,?strAge,?strSex,
    ????????????????????????strAddress);
    ????????????}
    ?catch?(Exception?e)?{
    ????????????????e.printStackTrace();
    ????????????}


    ????????????
    if?(isSuccess)?{
    ????????????????out.print(
    "profileYES");
    ????????????}
    ?else?{
    ????????????????out.print(
    "profileNO");
    ????????????}

    ????????}
    ?else?if?(strFlag.equals("country"))?{
    ????????????
    try?{
    ????????????????isSuccess?
    =?dao.insertCompany(strCompany,?strCountry,?strWebSite);
    ????????????}
    ?catch?(Exception?e)?{
    ????????????????e.printStackTrace();
    ????????????}


    ????????????
    if?(isSuccess)?{
    ????????????????out.print(
    "countryYES");
    ????????????}
    ?else?{
    ????????????????out.print(
    "countryNO");
    ????????????}

    ????????}

    ????}


    ????
    /*?(non-Java-doc)
    ?????*?@see?javax.servlet.http.HttpServlet#doPost(HttpServletRequest?request,?HttpServletResponse?response)
    ?????
    */

    ????
    protected?void?doPost(HttpServletRequest?request,
    ????????HttpServletResponse?response)?
    throws?ServletException,?IOException?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????doGet(request,?response);
    ????}

    }

    DataDAO.java
    package?DAO;

    import?java.sql.Connection;
    import?java.sql.Statement;


    public?class?DataDAO?{
    ????
    public?boolean?insertCompany(String?djCompany,?String?djCountry,
    ????????String?djWebSite)?
    throws?Exception?{
    ????????
    boolean?success?=?false;
    ????????String?sql?
    =?"insert?into?Dojo_Table_Company??";
    ????????sql?
    +=?("values('"?+?djCompany?+?"','"?+?djCountry?+?"','"?+?djWebSite?+
    ????????
    "')");
    ????????
    ????????
    //ResultSet?rs=null;
    ????????Connection?con?=?null;
    ????????Statement?stat?
    =?null;

    ????????
    try?{
    ????????????con?
    =?Login.getConnection();
    ????????????stat?
    =?con.createStatement();
    ????????????stat.executeUpdate(sql);
    ????????????success?
    =?true;
    ????????}
    ?catch?(Exception?e)?{
    ????????????
    //e.printStackTrace();
    ????????????throw?e;
    ????????}

    ????????
    finally?{
    ????????????Login.closeStatement(stat);
    ????????????Login.closeConnection(con);
    ????????}


    ????????
    return?success;
    ????}


    ????
    public?boolean?insertProfile(String?djName,?String?djSex,?String?djAge,
    ????????String?djAddress)?
    throws?Exception?{
    ????????
    boolean?success?=?false;
    ????????String?sql?
    =?"insert?into?Dojo_Table_Profile??";
    ????????sql?
    +=?("values('"?+?djName?+?"','"?+?djSex?+?"','"?+?djAge?+?"','"?+
    ????????djAddress?
    +?"')");

    ????????
    //ResultSet?rs=null;
    ????????Connection?con?=?null;
    ????????Statement?stat?
    =?null;

    ????????
    try?{
    ????????????con?
    =?Login.getConnection();
    ????????????stat?
    =?con.createStatement();
    ????????????stat.executeUpdate(sql);
    ????????????success?
    =?true;
    ????????}
    ?catch?(Exception?e)?{
    ????????????
    //e.printStackTrace();
    ????????????throw?e;
    ????????}

    ????????
    finally?{
    ????????????Login.closeStatement(stat);
    ????????????Login.closeConnection(con);
    ????????}


    ????????
    return?success;
    ????}

    }


    關于dojo.io.bind的學習筆記

    模塊:dojo.io.IO

    dojo.io.bind


    處理請求取回需要的數據并處理

    ?

    這個函數是AJAX中最為重要和有用的函數,dojo.io.bind這個類是用來處理客戶端與服務器間通訊的,需要通訊的參數由對象dojo.io.Request所定義,具體通訊的方法則由另外一個對象Transport所提供。

    ?

    因此,我們如果需要與服務器通訊,則應該定義一個Request對象,其中包括服務器地址及回調函數,例子中Requset都是以匿名對象方式定義的


    雖然我們可以定義一個自己的Transport,但是顯然不如直接利用現成的Transport方便。


    Dojo里提供了一個同時兼容IE和Firefox的dojo.io.XMLHTTPTransport,但是這個對象位于dojo.io.BrowserIO,因此,一般require dojo.io.IO時,還應該require dojo.io.BrowserIO

    ?

    Usage Example:

    ? dojo.io.bind({
    ??? url: "http://localhost/test.html", //要請求的頁面地址
    ??? mimetype: "text/html", //請求的頁面的類型,應該設置為與你請求頁面類型對應的mimetype,默認為 "text/plain"
    ??? method:"GET", //默認為"GET"
    ??? sync: false, //默認為異步執行
    ??? useCache: false, //默認為不使用頁面緩存,注意這里的緩存并不是瀏覽器的緩存,而是Dojo自身所維護的頁面緩存
    ??? preventCache: false, //默認為啟用瀏覽器緩存,否則將通過自動增加不同的參數來確保瀏覽器緩存失效
    ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時

    ??? load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted
    ??? error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
    ??? timeout: function(type) { alert("請求超時!"); }
    ? });


    ? 你也可以用一個handle來處理所有的事件

    ?

    ? dojo.io.bind({
    ??? url: "http://localhost/test.html", //要請求的頁面地址
    ??? mimetype: "text/html", //請求的頁面的類型,應該設置為與你請求頁面類型對應的mimetype
    ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
    ??? handle: function(type, data, evt){
    ????? if(type == "load") { alert(data); } //data is that we wanted
    ????? else if (type == "error") { alert(data.message); } //data is the error object
    ????? else { ; } //other events maybe need handled
    ??? }
    ? });
    ?
    ? 如果沒有在Request中指定所用的transport,則Dojo會自動的在已注冊的transports中尋找能夠處理這個Request的transport,如果不能找到,則返回指定的Request。下面是一個指定了transport的例子:


    ? dojo.io.bind({
    ??? url: "http://localhost/test.html", //要請求的頁面地址
    ??? mimetype: "text/html", //請求的頁面的類型,應該設置為與你請求頁面類型對應的mimetype
    ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
    ??? transport: "XMLHTTPTransport",

    ??? load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted
    ??? error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
    ??? timeout: function(type) { alert("請求超時!"); }
    ? });


    ? 你還可以利用bind來得到一個JavaScript所定義的對象(注意mimetype必須要定義為"text/javascript")

    ?

    ? testObj = dojo.io.bind({
    ??? url: "http://localhost/test.js", //test.js里定義了一個對象
    ??? mimetype: "text/javascript", //請求的頁面的類型,應該設置為與你請求頁面類型對應的mimetype
    ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
    ??? handle: function(type, data, evt){
    ????? if(type == "load") { alert(data); } //data is a object or value
    ????? else if (type == "error") { alert(data.message); } //data is the error object
    ????? else { ; } //other events maybe need handled
    ??? }
    ? });
    ?
    ? 下面是一個Post的例子:
    ?
    ? dojo.io.bind({
    ??? url: "http://localhost/test.aspx", //要提交的頁面地址
    ??? mimetype: "text/html", //請求的頁面的類型,應該設置為與你請求頁面類型對應的mimetype
    ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
    ??? method: "POST",
    ??? formNode: dojo.byId("myForm"), //指定提交的Form名稱

    ??? load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted
    ??? error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
    ??? timeout: function(type) { alert("請求超時!"); }
    ? });

    ?

    ? 另一個Post的例子(without Form to post):


    ? dojo.io.bind({
    ??? url: "http://localhost/test.aspx", //要提交的頁面地址
    ??? mimetype: "text/html", //請求的頁面的類型,應該設置為與你請求頁面類型對應的mimetype
    ??? timeoutSeconds: 3000,? //3秒后超時,如果為0則永不超時
    ??? method: "POST",
    ??? content: {a: 1, b: 2}, //要提交的數據

    ??? load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted
    ??? error: function(type, error) { alert(error.message); }, //error is dojo.io.Error
    ??? timeout: function(type) { alert("請求超時!"); }
    ? });


    ?

    dojo.io.queueBind


    ? 有時,我們需要一次發出多個網頁請求,則應該使用dojo.io.queueBind,因為瀏覽器可能只允許同時發出有限個數的請求,如果是使用dojo.io.bind的話,則有可能會申請不到新的XMLHttp對象而導致出錯。

    ? 用法與dojo.io.bind是一樣的。


    ?

    dojo.io.argsFromMap


    ? 用來把對象轉換為URL的參數形式
    ?
    Usage Example:


    ? dojo.io.argsFromMap({a:1,b:2,c:3}); //will return "c=3&b=2&a=1"
    ? dojo.io.argsFromMap({name:"名稱",value:"值"},"utf"); //will return "value=%E5%80%BC&name=%E5%90%8D%E7%A7%B0", 有中文的話應該指定utf格式,否則dojo.string.encodeAscii返回的編碼是很怪異的
    ? dojo.io.argsFromMap({a:1,b:2,c:3}, "utf", "c"); //will return "b=2&a=1&c=3",最后一個參數可以控制指定名稱的值出現在最后
    ?

    ?

    dojo.io.setIFrameSrc


    ? 設置IFrame的Src
    ?
    Usage Example:

    ?

    ? dojo.io.setIFrameSrc(dojo.byId("myFrame"), "http://localhost/test.htm"); //myFrame打開指定的網頁
    ? dojo.io.setIFrameSrc(dojo.byId("myFrame"), "http://localhost/test.htm", true); //myFrame打開指定的網頁,并覆蓋瀏覽器的歷史記錄


    ?

    TODO: 補充一個kwArgs的例子,我之前在網上看見過,可是現在無論如何也找不到相關的頁面了,只好以后在舉例了

    ?


    模塊:dojo.io.BrowserIO

    ?

    基本上就提供了dojo.io.XMLHTTPTransport這個對象


    XMLHTTPTransport一般能夠滿足我們的需求,但是其有幾個限制:它不能傳輸文件,不能夠成功執行跨域名的遠程請求,并且不支持 file:// 這樣的協議


    因此,根據應用要求,我們可能會需要選用其它的transport: dojo.io.IframeTransport, dojo.io.repubsubTranport, dojo.io.ScriptSrcTransport, ShortBusTransport

    ?

    dojo.io.IframeTransport,用法與xmlhttp是一樣的,其優點就是可以跨域,不存在任何的安全問題
    如果Request指定的mimetype是text或javascript,返回的內容應該是放在第一個textarea里的內容,如果指定的mimetype是html,則IFrame里的html則是需要的內容。因為瀏覽器兼容的原因,IframeTransport不能正確處理返回類型為XML的請求。

    摘自:http://www.cnblogs.com/Icebird/archive/2006/08/07/dojo_study_6.html


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 精品韩国亚洲av无码不卡区| 成人特黄a级毛片免费视频| 亚洲人和日本人jizz| 色久悠悠婷婷综合在线亚洲| 欧美三级在线电影免费| 久久99热精品免费观看牛牛| www在线观看播放免费视频日本| 国产AV旡码专区亚洲AV苍井空 | 亚洲成年人电影网站| 亚洲欧洲精品无码AV| www国产亚洲精品久久久日本| 成年人视频免费在线观看| 久久99免费视频| yellow视频免费看| 黄色三级三级免费看| 亚洲国产午夜精品理论片在线播放| 亚洲黄色免费电影| 久久夜色精品国产噜噜亚洲AV| 亚洲夜夜欢A∨一区二区三区 | 乱淫片免费影院观看| 亚洲AV无码男人的天堂| 亚洲粉嫩美白在线| 亚洲成人网在线播放| 中文字幕亚洲第一在线| 亚洲视频在线观看一区| 人人狠狠综合久久亚洲婷婷| 曰韩亚洲av人人夜夜澡人人爽| 免费一级毛片清高播放| 国产三级电影免费观看| 日本一道本高清免费| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 亚洲国产精品丝袜在线观看| 尤物永久免费AV无码网站| 四虎免费大片aⅴ入口| 思思99re66在线精品免费观看| 成人午夜大片免费7777| 岛国大片免费在线观看| 免费羞羞视频网站| 免费国产不卡午夜福在线| 免费人成无码大片在线观看| 亚洲av无码成人精品区在线播放|