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

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

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

    176142998

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

    #

    window.opener 實際上就是通過window.open打開的窗體的父窗體。

    比如在父窗體parentForm里面 通過 window.open("subForm.html"),那么在subform.html中 window.opener

    就代表parentForm,可以通過這種方式設置父窗體的值或者調用js方法。

    如:1,window.opener.test(); ---調用父窗體中的test()方法

        2,如果window.opener存在,設置parentForm中stockBox的值。

        if (window.opener && !window.opener.closed) {

           window.opener.document.parentForm.stockBox.value = symbol;

    }

    1>window.opener 的用法

    在一般的用法中,只是用來解決關閉窗口時不提示彈出窗口,   而對它更深層的了解一般比較少。其   實   window.opener是指調用window.open方法的窗口。
         在工作中主要是用來解決部分提交的。這種跨頁操作對工作是非常有幫助的。
    如果你在主窗口打開了一個頁面,并且希望主窗口刷新就用這個,打開頁面的window.opener就相當于
    主窗口的window。
    主窗口的刷新你可以用
    window.opener.location.reload();
    如果你用虛擬的目錄:如struts的*.do會提示你重試

    你可以改成這樣 window.opener.yourformname.submit()
    就好了

    2〉

    在應用中有這樣一個情況,
    在A窗口中打開B窗口,在B窗口中操作完以后關閉B窗口,同時自動刷新A窗口


    function closeWin(){
             hasClosed = true;
             window.opener.location="javascript:reloadPage();";
             window.close();
         }
         function window.onbeforeunload(){
             if(!hasClosed){
                 window.opener.location="javascript:reloadPage();";
             }
         }

    </script>
    上面的代碼在關閉B窗口的時候會提示錯誤,說缺少Object,正確的代碼如下:
    function closeWin(){
             hasClosed = true;
             window.opener.location="javascript:reloadPage();";
             window.opener=null;
             window.close();
         }
         function window.onbeforeunload(){
             if(!hasClosed){//如果已經執行了closeWin方法,則不執行本方法
                 window.opener.location="javascript:reloadPage();";
             }
         }

    </script>
    reloadPage方法如下:
    function reloadPage() {
             history.go(0);
             document.execCommand("refresh")
             document.location = document.location;
             document.location.reload();
         }
    PS:由于需要支持正常關閉和強制關閉窗口時能捕捉到事件,用了全局變量hasClosed

    ==============================================

    補充,在父窗口是frame的時候在刷新父窗口的時候會出現問題:

    The page cannot be refreshed without resending the information.
    后修改如下:
    window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
    不需要執行自帶的reload()方法,注意,不要再畫蛇添足加上這一句:

    window.opener.parent.document.frames.item('mainFrame').location.reload();

    ========================================================================================
    最后,為了同時支持刷新普通父窗口和frame父窗口,代碼如下:
    function closeWin() {
             hasClosed = true;
         <%if(null != frame){%>
             window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
         <%}else{%>
             window.opener.location = "javascript:reloadPage();";
         <%}%>
             //window.opener.top.mainFrame.location="javascript:reloadPage();";
             //self.opener.frames.mainFrame.location.reload(true);
             window.opener = null;
             window.close();
         }
         function window.onbeforeunload(){
             if (!hasClosed) {
             <%if(null != frame){%>
                 window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
             <%}else{%>
                 window.opener.location = "javascript:reloadPage();";
             <%}%>
                 window.opener = null;
             }
         }

    關于window.opener

    window.opener 的用法

        window.opener 返回的是創建當前窗口的那個窗口的引用,比如點擊了a.htm上的一個鏈接而打開了b.htm,然后我們打算在b.htm上輸入一個值然后賦予a.htm上的一個id為“name”的textbox中,就可以寫為:

        window.opener.document.getElementById("name").value = "輸入的數據";

        對于javascrīpt中的window.opener沒有很好的理解。

        為什么框架中不能使用,彈出窗口的父窗口不能在框架里面的某個頁面呢?那怎樣通過彈出窗口操作框架中的父窗口呢?

        opener.parent.frames['frameName'].document.all.input1.value 試試這個:)

    正確使用window.open返回對象的opener

     

    眾所周知JavaScript中:

    var win = window.open(url,windowName,...); 的使用,

    而win.opener則是指向父窗口的引用

    然而,有種情況卻比較特別,

    假如有兩個窗口window1和window2

    按下列步驟執行:

    var win = window.open(url,windowName,...);// (window1)

    var win = window.open(url,windowName,...);//(window2)

    其中先后這兩次打開的子窗口的windowName一樣

    此時你會發現在window2中的win.opener卻不是指向window2的,卻是指向window1.

    如果你想在子窗口關閉父窗口的話,就不正確了,因此可以修改上面的執行方法為:

    var win = window.open(url,windowName,...);? (window1)

    win.opener = window;

    var win = window.open(url,windowName,...);? (window2)

    win.opener = window;

    只有這樣修改才OK

     

     

     

    通過window.showModalDialog或者.showModelessDialog彈出的頁面

    這種情況需要兩個步驟:
    1 在父窗口.showModalDialog或.showModelessDialog方法的第二個參數傳遞window對象
    比如: window.showModelessDialog('a.htm',window);
    2 在a.htm中就可以通過window.dialogArguments獲取該參數
    比如: window.dialogArguments.fun1();
    PS:子窗口可以通過設置window.returnValue設置頁面返回值

    比如: window.returnValue=OK;window.close();

    strRtn=window.showModalDialog(......)

    這時,strRtn='ok'


    頁面中實現:
    父頁面
    function reloadPage() {
             document.form1.submit();
         }
    彈出頁面調用closeWin();
    function closeWin(){
             hasClosed = true;
             window.opener.location="javascript:reloadPage();";
             window.opener=null;
             window.close();
         }
    posted @ 2008-08-05 16:05 飛飛 閱讀(493) | 評論 (1)編輯 收藏

    名稱 必填 缺省值 類型 描述
    emptyOption false false Boolean 是否在題頭選項后面添加一個空的(--)選項
    headerKey false   Object/String 設置列表的題頭主鍵值. 一定不能為空值! "'-1'"或"''"是正確的取值, ""是錯誤的取值.
    headerValue false   Object/String 列表的題頭選項值
    multiple false   Object/String 創建一個多選列表. 如果value屬性指定了一個數組(正確的元素類型), 那么將預先選中數組中指定的多個選項.
    size false   Integer 該組件列表框的大小 (顯示元素的個數)
    list true   Object/String 創建列表的可迭代數據源. 如果該列表是一個Map(key, value), 那么Map的主鍵將作為選項(<option>)的"value"屬性, 而該主鍵對應的值作為選項的文本內容.
    listKey false   Object/String 列表數據源中元素對象的屬性, 用于獲取選項的值
    listValue false   Object/String 列表數據源中元素對象的屬性, 用于獲取選項的文本內容
    theme false   Object/String 輸出元素時使用的主題(theme)(不使用缺省的)
    template false   Object/String 輸出元素時使用的模板(template)(不使用缺省的)
    cssClass false   Object/String 輸出元素時的class屬性
    cssStyle false   Object/String 輸出元素時的css樣式定義(譯者注:就是html元素的style屬性)
    title false   Object/String 在輸出元素時設置html屬性title
    disabled false   Object/String 在輸出元素時設置html屬性disabled
    label false   Object/String 用于輸出一個元素對應的label的表達式
    labelPosition false left Object/String 不贊成使用.
    labelposition false   Object/String 定義元素標簽的位置(top/left)
    requiredposition false   Object/String 定義required屬性輸出的位置(left|right)
    name false   Object/String 元素的名字
    required false false Boolean 如果設置為true, 在輸出標簽時將顯示出此字段是必須輸入的(譯者注:如果使用默認模板,將會標示為"*")
    tabindex false   Object/String 在輸出元素時設置html屬性tabindex
    value false   Object/String 預設input元素的value屬性.
    onclick false   Object/String 在輸出元素時設置html屬性onclick
    ondblclick false   Object/String 在輸出元素時設置html屬性ondblclick
    onmousedown false   Object/String 在輸出元素時設置html屬性onmousedown
    onmouseup false   Object/String 在輸出元素時設置html屬性onmouseup
    onmouseover false   Object/String 在輸出元素時設置html屬性onmouseover
    onmousemove false   Object/String 在輸出元素時設置html屬性onmousemove
    onmouseout false   Object/String 在輸出元素時設置html屬性onmouseout
    onfocus false   Object/String 在輸出元素時設置html屬性onfocus
    onblur false   Object/String 在輸出元素時設置html屬性onblur
    onkeypress false   Object/String 在輸出元素時設置html屬性onkeypress
    onkeydown false   Object/String 在輸出元素時設置html屬性onkeydown
    onkeyup false   Object/String 在輸出元素時設置html屬性onkeyup
    onselect false   Object/String 在輸出元素時設置html屬性onselect
    onchange false   Object/String 在輸出元素時設置html屬性onchange
    tooltip false   String 設置元素的tooltip屬性(譯者注:tooltip為工具欄提示)
    tooltipConfig false   String 設置tooltip屬性的配置
    id false   Object/String id是定位元素時使用的. 對于UI和表單標簽它會被用作HTML的id屬性
     1<ww:select label="Pets"
     2       name="petIds"
     3       list="petDao.pets"
     4       listKey="id"
     5       listValue="name"
     6       multiple="true"
     7       size="3"
     8       required="true"
     9/>
    10
    11<ww:select label="Months"
    12       name="months"
    13       headerKey="-1" headerValue="Select Month"
    14       list="#{'01':'Jan', '02':'Feb', []}"
    15       value="selectedMonth"
    16       required="true"
    17/>
    18
    posted @ 2008-08-04 20:21 飛飛 閱讀(365) | 評論 (0)編輯 收藏

    Struts2技術學習專題-IT168http://tech.it168.com/zt/struts2/index.html
    MLDN struts2專題:http://www.mldn.cn/topic/struts2/struts2.htm
    中國IT實驗室 : http://java.chinaitlab.com/List_213.html
    一個不錯的blog: http://www.tkk7.com/max/

    http://www.tkk7.com/max/category/16130.html

    Java學習http://www.java3z.com/cwbwebhome/type.jsp?type=struts

     

    Struts 2 相關文檔下載:
    struts2.0中文幫助手冊.chm

    posted @ 2008-08-04 15:17 飛飛 閱讀(234) | 評論 (0)編輯 收藏

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
        + request.getServerName() + ":" + request.getServerPort()
        + path + "/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
       <base href="<%=basePath%>">

       <title>Struts 2 標簽之s:property的用法</title>

       <meta http-equiv="pragma" content="no-cache">
       <meta http-equiv="cache-control" content="no-cache">
       <meta http-equiv="expires" content="0">
       <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
       <meta http-equiv="description" content="This is my page">
       <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

    </head>

    <body>
       <table border="1">
        <tr>
         <th>編號</th>
         <th>書名</th>
         <th>作者</th>
        </tr>
        <s:iterator value="#{'Spring 2.0':'李剛','Java':'張三','j2ee study':'李四'}" id="name" status="st">
         <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if> >
          <td><s:property value="#st.count"/></td>
          <td><s:property value="key"/></td>
          <td><s:property value="value"/></td>
         </tr>
        </s:iterator>
       </table>
    </body>
    </html>
    效果圖:

    posted @ 2008-08-04 15:15 飛飛 閱讀(319) | 評論 (0)編輯 收藏

    1 實現權限控制攔截器
    本示例應用要求用戶登陸,且必須為指定用戶名才可以查看系統中某個視圖資源;否則,系統直接轉入登陸頁面。對于上面的需求,可以在每個Action的執行實際處理邏輯之前,先執行權限檢查邏輯,但這種做法不利于代碼復用。因為大部分Action里的權限檢查代碼都大同小異,故將這些權限檢查的邏輯放在攔截器中進行將會更加優雅。

    檢查用戶是否登陸,通常都是通過跟蹤用戶的Session來完成的,通過ActionContext即可訪問到Session中的屬性,攔截器的intercepte(ActionInvocation invocation)方法的invocation參數可以很輕易地訪問到請求相關的ActionContext實例。
    權限檢查攔截器類的代碼如下:
    //權限檢查攔截器繼承AbstractInterceptor類
    public class AuthorityInterceptor extends AbstractInterceptor
    {
    //攔截Action處理的攔截方法
    public String intercept(ActionInvocation invocation) throws Exception
    {
    //取得請求相關的ActionContext實例
    ActionContext ctx = invocation.getInvocationContext();
    Map session = ctx.getSession();
    //取出名為user的Session屬性
    String user = (String)session.get("user");
    //如果沒有登陸,或者登陸所用的用戶名不是scott,都返回重新登陸
    if (user != null && user.equals("scott") )
    {
    return invocation.invoke();
    }
    //沒有登陸,將服務器提示設置成一個HttpServletRequest屬性
    ctx.put("tip" , "您還沒有登陸,請輸入scott,tiger登陸系統");
    //直接返回login的邏輯視圖
    return Action.LOGIN;
    }
    }
    上面攔截器代碼非常簡單,先通過ActionInvocation參數取得用戶的Session實例的引用,然后從中取出user屬性,通過判斷該屬性值來確定用戶是否登陸系統,從而判斷是否需要轉入登陸頁面。

    2 配置權限控制攔截器
    一旦實現了上面的權限檢查攔截器,就可以在所有需要實現權限控制的Action中復用上面的攔截器。
    為了使用該攔截器,首先在struts.xml文件中定義該攔截器,定義攔截器的配置片段如下:
    <!-- 用戶攔截器定義在該元素下 -->
    <interceptors>
    <!-- 定義了一個名為authority的攔截器 -->
    <interceptor name="authority" class="lee.AuthorityInterceptor"/>
    </interceptors>
    定義了該攔截器之后,可以在Action中應用該攔截器,應用該攔截器的配置片段如下:
    <!-- 定義一個名為viewBook的Action,其實現類為ActionSupport -->
    <action name="viewBook">
    <!-- 返回success視圖名時,轉入/WEB-INF/jsp/viewBook.jsp頁面 -->
    <result>/WEB-INF/jsp/viewBook.jsp</result>
    <!-- 攔截器一般配置在result元素之后! -->
    <interceptor-ref name="defaultStack"/>
    <!-- 應用自定義攔截器 -->
    <interceptor-ref name="authority"/>
    </action>

    上面名為viewBook的Action,沒有指定class屬性,默認使用ActionSupport類,配置該Action時,只是指定了一個Result,指定返回success字符串時,系統將轉入/WEB-INF/jsp/viewBook.jsp頁面。但并為未配置login視圖對應的JSP頁面。
    考慮到這個攔截器的重復使用,可能在多個Action都需要跳轉到login邏輯試圖,故將login Result定義成一個全局Result。下面是配置login Result的配置片段:
    <!-- 定義全局Result -->
    <global-results>
    <!-- 當返回login視圖名時,轉入/login.jsp頁面 -->
    <result name="login">/login.jsp</result>
    </global-results>

    經過上面的配置,如果瀏覽者在瀏覽器中直接發送viewBook請求,將會轉入如圖所示的頁面。
    這種通過攔截器進行權限控制的方式,顯然具有更好的代碼復用。
    如果為了簡化struts.xml文件的配置,避免在每個Action中重復配置該攔截器,可以將該攔截器配置成一個默認攔截器棧(這個默認攔截器棧應該包括default-stack攔截器棧和權限檢查攔截器)。
    定義自己的默認攔截器棧的配置片段如下:
    <interceptors>
    <!-- 定義權限檢查攔截器 -->
    <interceptor name="authority" class="lee.AuthorityInterceptor"/>
    <!-- 定義一個包含權限檢查的攔截器棧 -->
    <interceptor-stack name="mydefault">
    <!-- 定義攔截器棧包含default-stack攔截器棧 -->
    <interceptor-ref name="default-stack"/>
    <!-- 定義攔截器棧包含authority攔截器 -->
    <interceptor-ref name=" authority"/>
    </interceptor- stack >
    </interceptors>

    一旦定義了上面的mydefault攔截器棧,這個攔截器棧包含了權限檢查攔截器和系統默認的攔截器棧。如果將這個攔截器棧定義成默認攔截器,則可以避免在每個Action需要重復定義權限檢查攔截器。
    下面是定義默認攔截器的配置片段:
    <default-interceptor-ref name="mydefault"/>
    一旦在某個包下定義了上面的默認攔截器棧,在該包下的所有Action都會自動增加權限檢查功能。對于那些不需要使用權限控制的Action,將它們定義在另外的包中——這個包中依然使用系統原來的默認攔截器棧,將不會有權限控制功能。
    posted @ 2008-08-04 15:06 飛飛 閱讀(1353) | 評論 (1)編輯 收藏

     在struts2中,提供了日期控件,以方便地選擇日期和時間,這是通過 標簽來實現的。該日期控件是通過DOJO來實現的,會在客戶端生成一段JS代碼,所以,要讓該日期控件生效,需要加入以下代碼:   
    代碼
    1. <s:head theme="ajax" />

        這樣,就可以在頁面中使用 標簽了。如:

    代碼
    <s:datetimepicker name="todayDate" value="2007-8-9" label="Format (yyyy-MM-dd)" displayFormat="yyyy-MM-dd"/>

        在頁面中,就會顯示出日期控件,其中displayFormat是要顯示的日期格式。效果如下所示:

     

    posted @ 2008-08-04 14:52 飛飛 閱讀(587) | 評論 (0)編輯 收藏

    代碼:

    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
       <title>s:tree的使用</title>
       <s:head theme="ajax"/>
    </head>

    <body>
    <H3>s:tree的使用</H3>
       <s:tree label="計算機圖書" theme="ajax" id="book" showGrid="true"
        showRootGrid="true" treeSelectedTopic="tree selected">
        <s:treenode theme="ajax" label="李剛" id="ligang">
         <s:treenode theme="ajax" label="Jsp study" id="jsp"></s:treenode>
         <s:treenode theme="ajax" label="java study" id="java"></s:treenode>
         <s:treenode theme="ajax" label="php study" id="php"></s:treenode>
        </s:treenode>
        <s:treenode theme="ajax" label="張三" id="zhangsan">
         <s:treenode theme="ajax" label="test study" id="test1"></s:treenode>
         <s:treenode theme="ajax" label="test study" id="test2"></s:treenode>
         <s:treenode theme="ajax" label="test study" id="test3"></s:treenode>
        </s:treenode>
        <s:treenode theme="ajax" label="李四" id="lisi">
         <s:treenode theme="ajax" label="Jsp study" id="test4"></s:treenode>
         <s:treenode theme="ajax" label="java study" id="test5"></s:treenode>
         <s:treenode theme="ajax" label="php study" id="test6"></s:treenode>
        </s:treenode>
       </s:tree>

    </body>
    </html>

    posted @ 2008-08-04 14:47 飛飛 閱讀(320) | 評論 (0)編輯 收藏

         摘要: 一: 首先是在自動生成的DAO里面加上如下代碼  public List findAll()...{                  String sql="FROM Au...  閱讀全文
    posted @ 2008-08-04 14:22 飛飛 閱讀(1280) | 評論 (0)編輯 收藏

         摘要: Struts2提供了大量豐富的標簽供使用,它不再像Struts1中一樣,將種類標簽進行分門列別,但可以根據其使用的用途用以區別。本文通過對Struts2中數據標簽的學習,來對Struts2中標簽的學習起到一個拋磚引玉的作用。文中將介紹Action標簽、Bean標簽、Data標簽、Include標簽、Param標簽、Set標簽、Text標簽、Property標簽等標簽。 一、<s:actio...  閱讀全文
    posted @ 2008-08-04 10:58 飛飛 閱讀(374) | 評論 (1)編輯 收藏

    1、sturts2的標簽很豐富。用起來也很方便,但是它的樣式不太好,最好能夠自定義一套樣式!若不想用sturts2
       缺省的樣式,就使用theme="simple"。
       sturts2中的有些標簽,是用js框架寫的,需要加載這些框架(如:dojo)。在jsp頁面中使用<s:head/>加載這些框架和css!
      
     2、sturts2中的國際化,又其攔截器完成。攔截器會根據用戶瀏覽器設置的不同來,自動適配!只需要定義多個資源文件
       就可以!
       資源文件可以是全局的(在classes中),也可以是局部的(在各個特定的包中)!
       對資源文件的要求:
         要注意資源文件的命名規范!例如:package_en_US.properties和package_zh_CN.properties
         
       I、兩種實現國際化的方法,key和lable方式!
         例如:
          a、<s:textfield label="%{getText('username')}" name="username"/>
          b、<s:textfield key="username" name="username"/>
        
        II、單個的資源信息提取的兩種方式:
         例如:
          a、<s:property value="getText('main.message')"/>
          b、<s:text name="main.message"/>
         
       III、在s:datetimepicker標簽中可以使用,key和label兩種方式來進行國際化
              key="date"
              label="%{getText('date')}"
              這個日期標簽,在中文環境和英文環境下的顯示形式是不一樣的
              中文:2007-11-12
              英文:11/14/2007
              所以在進行日期處理的時候要小心
         
     3、對于分步表單提交和“后退”網頁過期的問題有待繼續研究!
       對于表單重復提交的問題可以使用<s:token/>來解決!
       在使用token時,需要配置攔截器,而且在Action中需要定一個常量!
       例如:
         頁面:<s:token/>
         xml: <interceptor-ref name="defaultStack" />
                  <interceptor-ref name="token" />
         Action:private static final long serialVersionUID = 6820659617470261780L;
      
     4、個人感覺struts2的Validation(驗證框架)不是很好,效率也不高,而且需要定義比較復雜的XXXAction-validation.xml文件.
         所以對于頁面上的限制還是使用js或js框架(如:jquery,dojo,portaltype)!
         
     5、<s:submit key="back" name="redirect-action:crud!list" />這種實現方式比較好!
       <s:submit key="back" onclick="#:history.back();" />
       這種實現方式不好,因為它會自動刷新頁面;當有添加,刪除,更新操作時,就重復的刷新頁面!不推薦使用!
      
     6、<s:select label="%{getText('user.from')}"  
         name="user.from"
         headerKey=""
         headerValue="Select From"
         list="fromArray"
         listKey="id"
         listValue="name"
         value="user.from"
         required="true" />
         <%--
            name="user.from"是用于通過struts2內在的機制給Action自動賦值
            list="fromArray"是一個封裝了bean的list,其中的bean 有id和name屬性
            listKey="id"
            listValue="name"
            那么,當用戶提交表單的時候,sturts2的內在機制,會自動為我們裝載的!
            需要我們在Action里定義一個user bean,其中user中有一個from屬性
            要是嵌套定義,如:user bean 中又定義了一個bean(DateBean)。那么在頁面就要使用user.date.year這種形式,來向Action傳值!
            其中,date是user bean 中的一個屬性,struts2會自動為你裝載!
         --%>
    posted @ 2008-08-04 09:38 飛飛 閱讀(662) | 評論 (0)編輯 收藏

    僅列出標題
    共12頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
    主站蜘蛛池模板: 国产精品国产午夜免费福利看| 免费A级毛片无码视频| 最新中文字幕免费视频| 亚洲视频在线免费看| 久久精品无码精品免费专区| 亚洲成色在线影院| 无码中文字幕av免费放dvd| 亚洲视频小说图片| 亚洲人成免费网站| 亚洲va在线va天堂成人| 日本精品人妻无码免费大全| 精品丝袜国产自在线拍亚洲| 四虎在线免费播放| 日韩在线一区二区三区免费视频| 亚洲阿v天堂在线2017免费| 国产久爱免费精品视频| 亚洲Aⅴ无码专区在线观看q| 99在线视频免费| 国产婷婷综合丁香亚洲欧洲| 四色在线精品免费观看| 亚洲老熟女五十路老熟女bbw| 拔擦拔擦8x华人免费久久| 免费一级特黄特色大片| 国产亚洲精久久久久久无码| 亚洲免费精彩视频在线观看| 亚洲AV无码久久久久网站蜜桃| 日本免费一本天堂在线| 自拍偷自拍亚洲精品偷一| 亚洲精品国精品久久99热| 99re免费在线视频| 亚洲精品无码永久在线观看男男| heyzo亚洲精品日韩| 久久免费视频99| 亚洲av乱码一区二区三区| 亚洲AV无码不卡在线观看下载 | 亚洲精品国产suv一区88| 亚洲国产成人乱码精品女人久久久不卡 | 成人免费网站在线观看| 人体大胆做受免费视频| 久久精品国产亚洲77777| 成年人性生活免费视频|