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

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

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

    RoyJohnson

    生命不息,奮斗不止!
    posts - 4, comments - 9, trackbacks - 0, articles - 0

    2007年6月16日

                                                Struts框架詳解
    struts-config.xml    Struts配置文件
    ActionServlet  控制器
    Action Class  包含事務(wù)邏輯
    ActionForm  顯示模塊數(shù)據(jù)
    ActionMapping  幫助控制器將請(qǐng)求映射到操作
    ActionForward  用來指示操作轉(zhuǎn)移的對(duì)象
    ActionError  用來存儲(chǔ)和回收錯(cuò)誤
    Struts標(biāo)記庫  可以減輕開發(fā)顯示層次的工作

    struts框架的優(yōu)勢
    1.良好的架構(gòu)和設(shè)計(jì)
    2.可重用,模塊化,擴(kuò)展性好
    3.Open source

    struts-config.xml

    Struts-config.xml集中了所有頁面的導(dǎo)航定義。對(duì)于大型的WEB項(xiàng)目,通過此配置文件即可迅速把握其脈絡(luò),這不管是對(duì)于前期的開發(fā),還是后期的維護(hù)或升級(jí)都是大有裨益的。掌握Struts-config.xml是掌握Struts的關(guān)鍵所在。

    FormBean部分

    <struts-config>
      <!--  Form Bean Definitions -->
      <form-beans>
        <form-bean name=“testform" type="com.cjea.test.TestForm" />
      </form-beans> 

    全局轉(zhuǎn)發(fā)部分

    <!-- Global Forward Definitions -->
      <global-forwards>
        <forward   name="failure"     path="bad.jsp"/>
        <forward   name="success"     path="/good.jsp" />
      </global-forwards>

    action部分

    <action-mappings>
       <action path=“/test/test.jsp" type=“com.cjea.test.testAction" name="testform" scope="request">
            <forward name="success" path="/test/good.jsp" />
       </action>
    <action-mappings> 
    </struts-config>

     ActionServlet

    ActionServlet 是struts框架 MVC 實(shí)現(xiàn)的 controller 部分,它是這一框架的核心。
    ActionServlet 創(chuàng)建并使用 Action、ActionForm 和 ActionForward。

    ActionServlet的基本功能

    截獲用戶的Http請(qǐng)求
    把這個(gè)請(qǐng)求映射到相應(yīng)的Action類。
    創(chuàng)建一個(gè)ActionForm bean實(shí)例,將form請(qǐng)求放入formbean的實(shí)例中
    調(diào)用Action實(shí)例的perform()方法
    將ActioForm bean,Action Mapping對(duì)象,request和response對(duì)象傳給Action的perform()方法
    perform返回一個(gè)ActionForword對(duì)象,根據(jù)方法執(zhí)行情況轉(zhuǎn)到相應(yīng)的jsp頁面.

     

    Action Classes


    Action 類是業(yè)務(wù)邏輯的一個(gè)包裝。Action 類的用途是將 HttpServletRequest 轉(zhuǎn)換為業(yè)務(wù)邏輯。

    ActionForm

    ActionForm 維護(hù) Web 應(yīng)用程序的會(huì)話狀態(tài)。
    ActionForm 是一個(gè)抽象類,必須為每個(gè)輸入表單模型創(chuàng)建該類的子類。


    ActionForm的使用

    假定有一個(gè)由 HTML 表單設(shè)置的 TestActionForm。Struts 框架將執(zhí)行以下操作:
    檢查 TestActionForm是否存在;如果不存在,它將創(chuàng)建該類的一個(gè)實(shí)例。
    Struts 將使用 HttpServletRequest 中相應(yīng)的域設(shè)置 TestActionForm的狀態(tài)。
    Struts 框架在將 TestActionForm傳遞給TestAction 之前將更新它的狀態(tài)。
    struts-config.xml 文件控制 HTML 表單請(qǐng)求與 ActionForm 之間的映射關(guān)系。
    可將多個(gè)請(qǐng)求映射到 TestActionForm 。

    Struts標(biāo)記庫
    Struts框架包括自定義標(biāo)簽庫,它可以用 在很多方面。盡管這些庫并不要求用框 架,但使用它們會(huì)有助于程序的開發(fā)。

    Struts標(biāo)記庫
    struts-bean taglib:包含在訪問bean和bean屬性時(shí)使用的tag,也包含一些消息顯示的tag。
    struts-html taglib:包含用來生成動(dòng)態(tài)HTML用戶界面和窗體的tag。
    struts-logic taglib :包含的tag用來管理根據(jù)條件生成輸出文本,和其它一些用來控制的信息。
    struts-template taglib包含的tag用來定義模板機(jī)制。

    Bean Taglib
    用于定義新bean、訪問bean及其屬性的標(biāo)記
    在struts-bean.tld中定義了它的標(biāo)記庫描述器
    Bean Taglib主要功能
    創(chuàng)建和復(fù)制bean的標(biāo)記
    腳本變量定義標(biāo)記
    bean翻譯標(biāo)記
    消息國際化標(biāo)記
    Bean復(fù)制標(biāo)記 (<bean:define>)
    可定義新bean,可復(fù)制現(xiàn)有bean,還可從現(xiàn)有bean復(fù)制屬性。
    定義新字符串常數(shù)
    將現(xiàn)有的bean復(fù)制到新定義的bean對(duì)象
    復(fù)制現(xiàn)有bean的屬性來創(chuàng)建新的bean
    <bean:define>標(biāo)記屬性:
    Id 新定義的bean腳本變量名稱,必須設(shè)置
    Type 定義引入腳本變量的類
    Value 為id屬性定義的腳本變量分配一個(gè)新的對(duì)象
    <bean:define>標(biāo)記屬性:
    Name 目標(biāo)bean的名稱。若value屬性沒有設(shè)置,這個(gè)屬性就必須設(shè)置
    property Name屬性定義的bean的屬性名稱,用來定義新的bean
    Scope 源bean的作用域。若沒有設(shè)置,搜索范圍是從頁作用域到應(yīng)用程序作用域
    toScope 目標(biāo)bean的作用域。若沒有設(shè)置,默認(rèn)值是頁作用域
    舉例
    定義一個(gè)bean:
    <bean:define id="test" value="this is a test"/>
    源bean在頁作用域中被拷貝到請(qǐng)求作用域中的另一個(gè)bean:
    <bean:define id="targetBean" name="sourceBean"
    scope="page" toScope="request"/>
    腳本變量的標(biāo)記
    從多種資源中定義和生成腳本變量,這些資源包括cookie,請(qǐng)求參數(shù),HTTP標(biāo)頭等等。
    腳本變量的標(biāo)記屬性:
    Id        腳本變量和要定義的頁作用域                 屬性的名稱
    Name    cookie/標(biāo)頭/參數(shù)的名稱
    Value    如果沒有匹配的cookie或    數(shù)值,就返回這個(gè)屬性指    定的默認(rèn)值

    腳本變量的標(biāo)記屬性:
    multiple 如果這個(gè)屬性設(shè)置了任意一個(gè)數(shù)值,所有匹配的cookie都會(huì)被積累并存儲(chǔ)到一個(gè)Cookie[](一個(gè)數(shù)組)類型的bean里           若無設(shè)置,指定cookie的第一個(gè)值將作為Cookie類型的值
    舉例
    <bean:cookie id="myCookie" name="userName"/>
    腳本變量名稱是myCookie,用來創(chuàng)建這個(gè)屬性的cookie的名稱是userName。
    <bean:header id="myHeader" name="Accept-Language"/>
    腳本變量名稱是myHeader,請(qǐng)求標(biāo)頭的名稱是Accept-Language.

    舉例
    <bean:parameter id="myParameter" name="myParameter">
    腳本變量名稱是myPatameter,它保存的請(qǐng)求參數(shù)的名稱也是myParameter
    邏輯標(biāo)記
    Struts邏輯標(biāo)簽庫包含的標(biāo)記能夠有條件地產(chǎn)生輸出文本
    在對(duì)象集合中循環(huán)從而重復(fù)地產(chǎn)生輸出文本,以及應(yīng)用程序流程控制
    它也提供了一組在JSP頁中處理流程控制的標(biāo)記
    邏輯標(biāo)記封裝在文件名為struts-logic.tld的標(biāo)記包中
    邏輯標(biāo)記庫的功能
    條件邏輯
    重復(fù)
    轉(zhuǎn)發(fā)/重定向響應(yīng)
    條件邏輯標(biāo)記
    第一類可以比較下列實(shí)體與一個(gè)常數(shù)的大小
    第二類在計(jì)算標(biāo)記體之前判斷特定的項(xiàng)目是否存在
    第三類根據(jù)模板匹配的結(jié)果檢查標(biāo)記體的內(nèi)容
    第一類條件邏輯標(biāo)記
    <equal>  如果常數(shù)與被定義的實(shí)體相等,返回true
    <notEqual> 如果常數(shù)與被定義的實(shí)體不相等,返回true
    <greaterEqual> 如果常數(shù)大于等于被定義的實(shí)體,返回true
    第一類條件邏輯標(biāo)記
    <lessEqual> 如果常數(shù)小于等于被定義的實(shí)體,返回true
    <lessThan> 如果常數(shù)小于被定義的實(shí)體,返回true
    <greaterThan> 如果常數(shù)大于被定義的實(shí)體,返回true
    舉例
    判斷名為"name"的請(qǐng)求參數(shù)的值是否是"SomeName"。
    <logic:equal parameter="name" value="SomeName">
            The entered name is SomeName
    </logic:equal>
    舉例
    判斷在頁的作用域中是否有一個(gè)名為"bean"的bean,它有一個(gè)prop屬性,這個(gè)屬性的值是否大于7。
    如果這個(gè)屬性能夠轉(zhuǎn)化為數(shù)值,就進(jìn)行數(shù)值比較,否則就進(jìn)行字符串比較。
    <logic:greaterThan name="bean" property="prop" scope="page" value="7">
    The value of bean.Prop is greater than 7
    </logic:greaterThan>
    第二類條件邏輯標(biāo)記
    <logic:present>
    <logic:notPresent>
    第三類條件邏輯標(biāo)記
    <logic:match>
    <logic:notMatch>
    重復(fù)標(biāo)記<logic:iterate>
    它能夠根據(jù)特定集合中元素的數(shù)目對(duì)標(biāo)記體的內(nèi)容進(jìn)行重復(fù)的檢查
    集合的類型
    java.util.Iterator
    java.util.Collection
    java.util.Map
    java.util.List
    數(shù)組
    舉例
    Strlst是一個(gè)包含字符串的List,現(xiàn)在要將他內(nèi)部的字符串全都顯示在瀏覽器里
    <logic:iterate id="element" name="strlst"  indexId="index">
    <%=(String)element)%>
    </logic:iterate>
    轉(zhuǎn)發(fā)標(biāo)記
    <logic:forward>標(biāo)記能夠?qū)㈨憫?yīng)轉(zhuǎn)發(fā)給重定向到特定的全局ActionForward上
    ActionForward的類型決定了是使用PageContext轉(zhuǎn)發(fā)響應(yīng),還是使用sendRedirect將響應(yīng)進(jìn)行重定向
    此標(biāo)記只有一個(gè)"name"屬性,用來指定全局ActionForward的名稱,例如:
    <logic:forward name="myGlobalForward"/>
    重定向標(biāo)記
    <logic:redirect>標(biāo)記是一個(gè)能夠執(zhí)行HTTP重定向的強(qiáng)大工具。
    根據(jù)指定的不同屬性,它能夠通過不同的方式實(shí)現(xiàn)重定向。
    它還允許開發(fā)人員指定重定向URL的查詢參數(shù)。
    HTML標(biāo)記
    Struts HTML標(biāo)記可以大致地分為以下幾個(gè)功能:
    顯示表單元素和輸入控件
    顯示錯(cuò)誤信息
    顯示其他HTML元素
    模板標(biāo)記
    Struts模板標(biāo)記可以大致地分為以下幾個(gè)功能:
    插入標(biāo)記<template:insert>
    放置標(biāo)記<template:put>
    獲得標(biāo)記<template:get>

    posted @ 2007-06-17 18:07 roy_johnson 閱讀(1424) | 評(píng)論 (2)編輯 收藏

                                                            Struts 初始化處理流程
       根據(jù)在web.xml中配置的初始化參數(shù),Servlet容器將決定在在容器的第一次啟動(dòng),或第一次客戶請(qǐng)求ActionServlet 的時(shí)機(jī)加載ActionServlet ,不管哪種方式加載,和其它Servlet一樣,ActionServlet 的init( )方法將被調(diào)用,開始初始化過程。讓我們來看看在初始化過程中將發(fā)生些什么,理解了這些,對(duì)于我們debug和擴(kuò)展自己的應(yīng)用更加得心應(yīng)手。
       1   初始化框架的內(nèi)部消息綁定,這些消息用來輸出提示,警告,和錯(cuò)誤信息到日志文件中。
           org.apache.struts.action.ActionResources用來獲取內(nèi)部消息;
       2   加載web.xml中定義的不同參數(shù),用以控制ActionServlet 的不同行為,這些參數(shù)包括 config, debug, detail, and convertNull ;
       3   加載并初始化web.xml中定義的servlet 名稱和servlet映射信息。通過初始化,框架的各種DTD被注冊(cè),DTD用來在下一步校驗(yàn)配置文件的有效性;
       4、為默認(rèn)應(yīng)用加載并初始化Struts配置文件,配置文件即初始化參數(shù)config指定的文件。默認(rèn)配置文件被解析, 產(chǎn)生一個(gè)ApplicationConfig對(duì)象存于ServletContext 中。可以通過關(guān)鍵字 org.apache.struts.action.APPLICATION 從ServletContext 中獲取ApplicationConfig;
       5   Struts配置文件中指定的每一個(gè)消息資源都被加載,初始化,并存在ServletContext 的合適區(qū)域(基于每個(gè)message-resources元素的key 屬性),如果key 屬性沒有設(shè)置,則為org.apache.struts.action.MESSAGE;
       6   Struts配置文件中聲明的每一個(gè)數(shù)據(jù)源被加載并且初始化,如果沒有配置數(shù)據(jù)源,這一步跳過;
       7   加載并初始化Struts配置文件中指定的插件。每一個(gè)插件的init()方法被調(diào)用;
      8   當(dāng)默認(rèn)應(yīng)用加載完成,init()方法判斷是否有應(yīng)用模塊需要加載,如果有,重復(fù)4—7完成應(yīng)用模塊的加載。

    posted @ 2007-06-16 17:56 roy_johnson 閱讀(992) | 評(píng)論 (1)編輯 收藏

     

                                                    論J2EE程序員的武功修為(轉(zhuǎn))
     EasyJF開源團(tuán)隊(duì)(www.easyjf.com) 大峽

      經(jīng)常會(huì)跟一些朋友討論怎么樣才能學(xué)好Java,學(xué)到什么程度才算撐握了Java的問題。其中有一個(gè)J2EE程序員層次及武功修為的問題,有點(diǎn)意思。這里就把討論的內(nèi)容大致整理一下發(fā)出來,大家繼續(xù)討論。

      縱觀國內(nèi)的軟件行業(yè),靠Java吃飯的程序員還真不是少,而且Java程序員是有很大優(yōu)越感的,畢竟對(duì)于很多用b/s搞開發(fā)的業(yè)內(nèi)朋友來說,Java技術(shù)意味著難度大、門檻高,因此相對(duì)來說Java程序員比其它的程序員(如php、.net)收入高就理所當(dāng)然。然而J2EE所涉及到的范疇是很廣的,不能一個(gè)Java程序員就概括了事,而應(yīng)該具有層次及水平之分,很多時(shí)候經(jīng)常需要進(jìn)行分類或評(píng)級(jí),有時(shí)他評(píng)、有時(shí)自評(píng)。

      談到國內(nèi)J2EE領(lǐng)域的程序員層次水平,當(dāng)前流行的稱謂及評(píng)級(jí)不外乎就下面幾種:
      第一種是精通掌握記事本、Dreamweaver等工具來寫JSP+JavaBean數(shù)據(jù)庫應(yīng)用的是J2EE程序員;
      第二種是用JBuilder、Eclipse等專用Java開發(fā)工具寫著一堆一堆過程式Java Bean,而且還能精通Struts+Spring+Hibernate等應(yīng)用框架的高級(jí)J2EE程序員;
      第三種是用Together建模,然后生成一堆Java接口或代碼,開口閉口都是設(shè)計(jì)模式的資深Java程序同及高級(jí)系統(tǒng)分析、構(gòu)架師;
      最后還有一種是整天在BlogJava或JavaEye上談經(jīng)論道的大師們,這些大師技術(shù)水平難以觸摸,武功門派也各具特色,不好歸類,有時(shí)不好稱為程序員(因?yàn)橛械臅r(shí)候他們甚至不寫或者寫不出程序),但又做著與J2EE程序員密切相關(guān)的事情,我們暫且就歸為“牛牛”或“大師”。

      稱謂畢竟只是稱謂,帶有點(diǎn)主觀或者功利色彩,有時(shí)很難鑒定一個(gè)人應(yīng)該屬于什么,因此,我們?cè)購募兗夹g(shù)的角度,也即武功修為的角度,作了一個(gè)簡單的分析及歸類,把2EE領(lǐng)域程序員大致分成以下幾個(gè)層次,可以作為大家自評(píng)的一個(gè)參考標(biāo)準(zhǔn):

      第一個(gè)層次:精通掌握J(rèn)ava語法、能調(diào)試基本的程序錯(cuò)誤,精通掌握J(rèn)SP+Java Bean寫一些N年前ASP、PHP翻版的Java Web應(yīng)用程序(如論壇、網(wǎng)站新聞發(fā)布系統(tǒng)、OA、網(wǎng)上商城等),精通JDBC使用、精通SQL語句、精通XML等。

      第二個(gè)層次:掌握設(shè)計(jì)模式原理及應(yīng)用,掌握基于OO的分析及設(shè)計(jì)方法,并能精通熟練使用幾種Java專業(yè)設(shè)計(jì)及開發(fā)工具,精通掌握流行的J2EE框架如Hibernate、EJB、Webwork、Spring的原理及應(yīng)用,精通J2EE中一兩個(gè)組成部分(如Servlet、EJB等)的工作原理及細(xì)節(jié)。

      第三個(gè)層次:少林的高僧有兩種,禪僧及武僧。J2EE程序員的第三個(gè)層次也同樣有禪、武兩個(gè)分支,這里我們重點(diǎn)分析一下:

      第一個(gè)分支屬于走的禪僧線路。在練完第二個(gè)層次中的各種武功基礎(chǔ)上,結(jié)合實(shí)際項(xiàng)目中的千奇百怪的用戶需求,游刃有余的選擇適合的技術(shù)方案為客戶解決問題,并形成自己的一套解決方案。達(dá)到這一個(gè)層次的J2EE程序員已經(jīng)不在乎使用任何工具、任何框架了,而是根據(jù)不同的對(duì)手,使用不同的武器或招式來應(yīng)對(duì)。好比小李飛刀一樣,只有達(dá)到了“手中無刀、心中有刀”的境界,才能達(dá)到“出手一刀,例不虛發(fā)”的效果。這一層次的武功屬于一個(gè)熟練度問題,刀練得多了、遇到的對(duì)手多了,再加上前面的武功修為,就算做不到例不虛發(fā),也可達(dá)到十發(fā)九中。

      第二個(gè)分支屬于走的武僧線路,在撐握熟悉第一二個(gè)層次中涉及到的內(nèi)容后,進(jìn)一步專研并撐握J(rèn)2EE底層開發(fā),J2EE規(guī)范制訂、規(guī)范實(shí)現(xiàn)、Java虛擬機(jī)的工作原理、各種常見的J2EE服務(wù)器內(nèi)核工作機(jī)制、內(nèi)存管理、進(jìn)程機(jī)制、源代碼等。因?yàn)樯婕暗暮芏鄸|西都比較抽象,代碼也很多,練這一層的武功需要有很好的資質(zhì)及耐性、并具還得有一定的環(huán)境及條件。好比神雕大俠楊過拿起“玄鐵劍”,并練成“暗然銷魂掌”的成長過程,需要前面的武功修為作基礎(chǔ),更需那只威力神武神雕的幫助指點(diǎn)及他處處為民、懲奸除惡的俠之心態(tài)。
      
      胡侃了這么多,現(xiàn)在來根據(jù)自己情況測算一下自己的份量,結(jié)果如下:
      第一層 練到8成;
      第二層 練到5成;
      第三層 準(zhǔn)備走禪僧線路,當(dāng)前算是練到1成;
      
      唉,后面的武功提升越來越難,真不知道要到何年何月才能達(dá)到10成啊。你的武功練到哪一個(gè)層次了,不防亮出來大家切磋切磋。嘿嘿,要是有一天,咱們中國的Java程序員人手一把“玄鐵劍”、人人會(huì)使“暗然銷魂掌”,那還了得!汗...,寫著寫著居然做起白日夢(mèng)了,不好意思,就此打住。
      
      手中雞蛋先別扔,還要打個(gè)廣告:本人剛開始涉足Java開源,目前在EasyJF開源團(tuán)隊(duì)中負(fù)責(zé)EasyJWeb(官網(wǎng)www.easyjf.com)項(xiàng)目,歡迎大家前來指導(dǎo)。

    作者Blog:http://blog.csdn.net/psyl/

    posted @ 2007-06-16 16:37 roy_johnson 閱讀(360) | 評(píng)論 (2)編輯 收藏

          很多新手都不知道如何開始學(xué)習(xí)JSP,本人就個(gè)人學(xué)習(xí)的一些經(jīng)歷在這里簡單得談一下。
          首先,你得對(duì)WEB應(yīng)用開發(fā)感興趣,因?yàn)榕d趣是最好的老師,更是你學(xué)習(xí)前進(jìn)的動(dòng)力,如果只是抱這學(xué)學(xué)看的態(tài)度,本人建議不要開始學(xué)。那樣既浪費(fèi)了時(shí)間又浪費(fèi)了精力。有了興趣,一切就好說了,學(xué)得多快那就看你個(gè)人的能力了。
          從HTML開始下手,一星期即可搞定HTML。因?yàn)殚_發(fā)WEB應(yīng)用要求你能看懂網(wǎng)頁代碼,然后是Java語言基礎(chǔ),Java語言學(xué)習(xí)的時(shí)間可能要長些。等前面這兩項(xiàng)熟悉了,就要開始學(xué)習(xí)JavaScript和CSS,當(dāng)然作為后臺(tái)程序員后面這兩項(xiàng)了解即可。
         再接下來就要學(xué)習(xí)一下JDBC的技術(shù)了。數(shù)據(jù)庫建議先學(xué)習(xí)Mysql,然后再學(xué)習(xí)Mssql,Oracle,最后還要熟悉WEB服務(wù)器,初學(xué)者建議學(xué)習(xí)Tomcat,等這些都熟悉了。開始嘗試著開發(fā)幾個(gè)系統(tǒng),比如信息管理系統(tǒng),聊天室,論壇等。
         再往后就要學(xué)習(xí)Struts,Hibernate,Spring等高級(jí)技術(shù)了。
         今后我會(huì)逐步介紹以上技術(shù),最后還會(huì)教大家開發(fā)一個(gè)基于Struts+Hibernate+Spring的實(shí)例。大家希望看到那方面的知識(shí)或有何好的建議。可以給我留言,或發(fā)表在評(píng)論里。

    posted @ 2007-06-16 11:48 roy_johnson 閱讀(753) | 評(píng)論 (4)編輯 收藏

    主站蜘蛛池模板: 一级毛片免费在线播放| 114级毛片免费观看| 色婷婷亚洲十月十月色天| 青青视频观看免费99| 一级免费黄色大片| 亚洲欧洲日本精品| 免费成人在线观看| 久久久免费的精品| 亚洲a∨无码一区二区| 亚洲国产精品无码专区在线观看| 在线看片v免费观看视频777| 国产综合成人亚洲区| 国产精品亚洲二区在线| 国产精品亚洲成在人线| 成年女人18级毛片毛片免费 | 国产亚洲精品精品国产亚洲综合| 鲁大师在线影院免费观看 | 亚洲AV无码一区二区一二区| 亚洲处破女AV日韩精品| 四虎永久成人免费| 日本h在线精品免费观看| 国产高清视频免费在线观看| 亚洲人AV在线无码影院观看| 亚洲AV无码一区二区乱子伦| 免费人成在线观看播放国产| 嘿嘿嘿视频免费网站在线观看| 中国一级毛片免费看视频| 亚洲男人的天堂网站| 亚洲黄色片免费看| 亚洲AV无码一区二区三区国产| 日韩视频在线精品视频免费观看| 亚洲免费视频一区二区三区| 蜜芽亚洲av无码一区二区三区| 久久亚洲精品成人| 亚洲中文字幕无码永久在线| 国产国产人免费人成免费视频 | 亚洲国产美国国产综合一区二区| 亚洲国产成人乱码精品女人久久久不卡| 97在线观免费视频观看| 最近中文字幕mv免费高清在线| 久久久WWW成人免费精品|