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

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

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

    隨筆-57  評論-117  文章-1  trackbacks-0

    概念

    JSP 是Java Server Page 的縮寫,是Servlet 的簡化。它是由Sun 公司提出的,并由許多公司參與制定的一種動態(tài)網(wǎng)頁標(biāo)準(zhǔn)。

    其主要特點(diǎn)是在HTML 頁面中加入Java 代碼片段,或者使用各種JSP 標(biāo)簽,包括使用用戶標(biāo)簽,構(gòu)成JSP 網(wǎng)頁。

    【早期使用JSP 頁面的用戶非常廣泛,一個Web 應(yīng)用可以全部由JSP 頁面組成,只輔以少量的JavaBean 即可。自J2EE 標(biāo)準(zhǔn)出現(xiàn)以后,人們逐漸認(rèn)識到使用JSP充當(dāng)過多的角色是不合適的Q 因此, JSP 慢慢發(fā)展成學(xué)一的表現(xiàn)層技術(shù),不再承擔(dān)業(yè)務(wù)邏輯組件及持久層組件的責(zé)任。】

    JSP 是Servlet 的擴(kuò)展,在沒有JSP 之前,就已經(jīng)出現(xiàn)了Servlet 技術(shù)。Servlet 是利用輸出流動態(tài)生成HTML 頁面,包括每一個HTML 標(biāo)簽和每個在HTML 頁面中出現(xiàn)的內(nèi)容。

     

    注釋

    JSP 注釋用于表明在程序開發(fā)過程中的開發(fā)提示,它不會輸出到客戶端。

    JSP 注釋的格式如下:

    〈%--在注釋內(nèi)容--%>

    與JSP 注釋形成對比的是HTML 注釋, HTML 注釋的格式是

    <!--注釋內(nèi)容-->

    JSP 頁面會編譯成一個Servlet 類,每個Servlet 在容器中只有一個實(shí)例:而在JSP 中聲明的變量是類的成員變量,成員變量只在創(chuàng)建實(shí)例時初始化,該變量的值將一直保存,直到實(shí)例銷毀。值得注意的是, infoO的值也可正常輸出。因?yàn)镴SP 聲明的方法其實(shí)是在JSP 編譯生成的Servlet 類的方法一Java 里的方法是不能獨(dú)立存在的,即使在JSP 頁面中也不行。

     

    表達(dá)式

    JSP 提供了一種輸出表達(dá)式值的簡單方法,輸出表達(dá)式值的格式如下:

    〈%=表達(dá)式%〉

     

    腳本

    JSP 腳本的應(yīng)用非常廣泛,可通過Java 代碼鑲嵌在HTML 代碼中,即使用JSP 腳本。

    因此,所有能在Java 程序中執(zhí)行的代碼,都可以通過JSP 腳本執(zhí)行。

    看下面的代碼:

    <! -- Java 腳本,這些腳本會對HTML 的標(biāo)簽產(chǎn)生作用一〉

    〈%

    for(int i = 0 ; i < 10 ; i++) {

    %〉

    <td><%=i%></td>

    <%}%>

    上面的JSP 頁面,其簡單的循環(huán)將導(dǎo)致<tr/>標(biāo)簽循環(huán)10 次,即生成一個10 行

    的表格,并在表格中輸出表達(dá)式值

     

    三個編譯指令

    JSP 的編譯指令是通知JSP 引擎的消息,它不直接生成輸出。編譯指令都有默認(rèn)值,因此開發(fā)人員無須為每個指令設(shè)置值。

    常見的編譯指令有三個。

    page: 該指令是針對當(dāng)前頁面的指令。

    include: 用于指定如何包含另一個頁面。

    tablib: 用于定義和訪問自定義標(biāo)簽。

     

    編譯指令的格式如下:

    <%@ 編譯指令名 屬性名="屬性值"…%>

     

    page 指令

    page 指令,通常位于JSP 頁面的頂端,對同一個頁面可以有多個page 指令。

    page指令的語法格式如下:

    〈%@ page

    [language="Java"]

    [extends="package.class"]

    [import= "package. class | package. *},…"]

    [session=true | false"]

    [buffer="none | 8kb | size kb"]

    [autoFlush="true | false"]

    [isThreadSafe="true | false"]

    [info="text"]

    [errorPage="relativeURL"]

    [contentType=mimeType[ ;charset=characterSet]" | "text/html;charSet= ISO-8859-1"]

    [isErrorPage=" true | false"]

    %〉

    下面依次介紹page 的各個屬性。

    language: 聲明當(dāng)前JSP 頁面使用的腳本語言的種類,因?yàn)轫撁媸荍SP 頁面,該屬性的值通常都是java 。

    extends: 確定JSP 程序編譯時所產(chǎn)生的Java 類,需要繼承的父類,或者需要實(shí)現(xiàn)的接口的全限定類名。

    import: 用來導(dǎo)入包,下面幾個包是默認(rèn)自動導(dǎo)入的,不需要顯式導(dǎo)入。默認(rèn)導(dǎo)入的包有: java .lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet. http

    session: 設(shè)定這個JSP 頁面是否需要HTIP session 。

    buffer: 指定輸出緩沖區(qū)的大小。輸出緩沖區(qū)的JSP 內(nèi)部對象: out 用于緩存JSP頁面對客戶瀏覽器的輸出,默認(rèn)值為8k,可以設(shè)置為none ,也可以設(shè)置為其他的值,單位為kb 。

    autoFlush: 當(dāng)輸出緩沖區(qū)即將溢出時,是否需要強(qiáng)制輸出緩沖區(qū)的內(nèi)容。設(shè)置為true 時為正常輸出:如果設(shè)置為false ,會在buffer 溢出時產(chǎn)生一個異常。

    info: 設(shè)置該JSP 程序的信息,也可以看做其說明,可以通過Servlet. getServletInfo

    方法獲取該值。如果在JSP 頁面中,可直接調(diào)用getServletInfo方法獲取該值,因?yàn)镴SP 頁面的實(shí)質(zhì)就是Servlet 。

    errorPage: 指定錯誤處理頁面。如果本程序產(chǎn)生了異常或者錯誤,而該JSP 頁面沒有對應(yīng)的處理代碼,則會自動調(diào)用該指令所指定的JSP 頁面。使用JSP 頁面時,可以不處理異常,即使是checked 異常。

    isErroePage: 設(shè)置本JSP 頁面是否為錯誤處理程序。如果該頁面本身己是錯誤處理頁面,則無須使用errorPage 屬性。

    contentType: 用于設(shè)定生成網(wǎng)頁的文件格式和編碼方式,即MIME 類型和頁面宇符集類型,默認(rèn)的MIME 類型是textlhtml; 默認(rèn)的字符集為ISO-8859-1。

     

    include 指令

    使用include 指令,可以將一個外部文件嵌入到當(dāng)前JSP 文件中,同時解析這個頁面

    中的JSP 語句(如果有的話)。這是個靜態(tài)的include 語旬,不會檢查所包含JSP 頁面的變化。

    include 既可以包含靜態(tài)的文本,也可以包含動態(tài)的JSP 頁面。靜態(tài)的編譯指令

    include ,是將被包含的頁面加入進(jìn)來,生成一個完整的頁面。

    include 編譯指令的語法:

    〈%@ include file="relativeURLSpec" %〉

    如果被嵌入的文件經(jīng)常需要改變,建議使用<jsp:include>操作指令,因?yàn)樗莿討B(tài)的include 語句。

    JSP 的7 個動作指令

    動作指令與編譯指令不間,編譯指令是通知Servlet 引擎的處理消息,而動作指令只

    是運(yùn)行時的腳本動作。編譯指令在將JSP 編譯成Servlet 時起作用:處理指令通常可替換

    成Java 腳本,是JSP 腳本的標(biāo)準(zhǔn)化寫法。

     

    JSP 動作指令主要有如下7 個。

    jsp:forward: 執(zhí)行頁面轉(zhuǎn)向,將請求的處理轉(zhuǎn)發(fā)到下一個頁面。

    jsp:param: 用于傳遞參數(shù),必須與其他支持參數(shù)曲標(biāo)簽一起使用。

    jsp:include: 用于動態(tài)引入一個JSP 頁面。

    jsp:p1ugin: 用于下載JavaBean 或Applet 到客戶端執(zhí)行。

    jsp:useBean: 使用JavaBean 。

    jsp:setProperty: 修改JavaBean 實(shí)例的屬性值。

    jsp:getProperty: 獲取JavaBean 實(shí)例的屬性值。

     

    【forward 指令】

    forward 指令用于將頁面響應(yīng)控制轉(zhuǎn)發(fā)給另外的頁面。既可以轉(zhuǎn)發(fā)給靜態(tài)的HTML

    頁面,也可以轉(zhuǎn)發(fā)到動態(tài)的JSP 頁面,或者轉(zhuǎn)發(fā)到容器中的Servlet

    JSP 的forward 指令的格式如下:

    對于JSP 1. 0 ,使用如下語法:

    <jsp: forward page=" {relativeURL | <%=expression%>}"/>

    對于JSP 1. 1 以上,可使用如下語法:

    <jsp:forward page=" { relativeURL | <%=expression %>}">

    {<jsp:param.../>}

    </jsp:forward>

    <jsp:forward page="forward-result.jsp">

    <jsp:param name="age" value="29"/>

    </jsp:forward>

     

    【include 指令】

    include 指令是一個動態(tài)include 指令,也用于導(dǎo)入某個頁面,它的導(dǎo)入會每次檢查

    被導(dǎo)入頁面的改變。下面是include 指令的使用格式:

    <jsp: include page=" {relativeURL I <%=expression%>}" flush= “true” />

    或者

    <jsp:include page="{relativeURL I <%=expression%>}" flush="true 與

    <jsp:param name="parameterName" value="patameterValue"l>

    </jsp:include>

    flush 屬性用于指定輸出緩存是否轉(zhuǎn)移到被導(dǎo)入文件中。如果指定為true,則包含在被導(dǎo)入文件中:如果指定為false,則包含在原文件中。對于JSP 1.1舊版本,只能設(shè)置為false。

    對于第二種格式,可用于在導(dǎo)入頁面中加入?yún)?shù)值。

     

    【useBean, setProperty, getProperty 指令】

    這三個都是與JavaBean 相關(guān)的指令,其中第一個指令用于在JSP 頁面中初始化一個Java 實(shí)例; setProperty 指令用于修改JavaBean 實(shí)例的屬性; getProperty 用于獲取JavaBean實(shí)例的屬性。

    useBean 的語法格式如下:

    <jsp:useBean id="name" class="classname" scope="page | request | session | application" />

    id 屬性是JavaBean 的實(shí)例名, class 屬性確定JavaBean 的實(shí)現(xiàn)類。

    其中scope 屬性用于確定JavaBean 實(shí)例的生存范圍,該范圍有以下四個值。

    page: 該JavaBean 實(shí)例僅在該頁面有效。

    request: 該JavaBean 實(shí)例在本次請求有效。

    session: 該JavaBean 實(shí)例在本次session 內(nèi)有效。

    application: 該JavaBean 實(shí)例在本應(yīng)用內(nèi)一直有效。

    setProperty 的語法格式如下:

    <jsp:setProperty name="BeanName" proterty="propertyName" value="value"/>

    其中name 屬性確定需要設(shè)定JavaBean 的實(shí)例名; property 屬性確定需要設(shè)置的屬性名; value 屬性則確定需要設(shè)置的屬性值。

    getProperty 的語法格式如下:

    <jsp:setProperty name="BeanName" proterty="propertyName" />

    其中name'屬性確定需要輸出的JavaBean 的實(shí)例名; property 屬性確定需要輸出的屬性名。

     

    【plugin 指令】

    plugin 指令主要用于下載服務(wù)器端的JavaB ean 或Applet 到客戶端執(zhí)行。由于程序在

    客戶端執(zhí)行,因此客戶端必須安裝虛擬機(jī)。

    plugin 的語法格式如下:

    <jsp:plugin type=bean | applet"

    code="classFileName"

    codebase="classFileDiretoryName"

    [name=" instanceName"]

    [archive="URLtoArchive"]

    algin= "bottom 1 top I middle 1 left 1 right"]

    [heigh="displayPixels"]

    [width="displayPixels"]

    [hspace="leftRightPixels"]

    [vspace="topBottomPiexels"]

    [jreversion=JREVersionNumber11.2"]

    [nspluginurl="URLToPlugin"]

    [iepluginurl="URLToPlugin"]>

    [<jsp:parames>

    [jsp:param name="parameterName" value="parameterValue"I>]

    </jsp:params>]

    [<jsp:fallback>text message for user that can no see the plugin

    </jsp:fallback> ]

    </jsp:plugin>

    關(guān)于這些屬性的說明如下。

    type: 指定被執(zhí)行的Java 程序的類型。

    code: 指定被執(zhí)行的文件名,該屬性值必須以" .class" 擴(kuò)展名結(jié)尾。

    codebase: 指定被執(zhí)行文件所在的目錄。

    name: 給該程序起一個名字用來標(biāo)識該程序。

    archive: 指向一些要預(yù)先載入的將要使用到的類的路徑。

    hspace,vspace: 顯示左右,上下的留白。

    jreversion: 能正確運(yùn)行該程序必需的JRE 版本,默認(rèn)值是1.2

    nsplugin,ieplugin:Netscape Navigator, Internet Exploer下載運(yùn)行所需JRE 的地址。

    <jsp:fallback>指令:當(dāng)不能正確顯示該Applet 時,代替顯示的提示信息。

     

    【pararn 指令】

    可以與以下三個指令結(jié)合使用:

    jsp:include

    jsp:forward

    jsp:plugin

    當(dāng)與include 指令結(jié)合使用時, pararn 指令用于將參數(shù)值傳入被導(dǎo)入的頁面:當(dāng)與

    forward 指令結(jié)合使用時, pararn 指令用于將參數(shù)值傳入被轉(zhuǎn)向的頁面:當(dāng)與plugin 指令

    結(jié)合使用時,則用于將參數(shù)傳入頁面中的JavaBean 實(shí)例或Applet 實(shí)例。

    pararn 指令的語法格式如下:

    <jsp:param name="pararnName" value="paramValue"/>

     

    9 個內(nèi)置對象

    application: javax.servlet. ServletContext 的實(shí)例,該實(shí)例代表JSP 所屬的Web 應(yīng)用

    本身,可用于JSP 頁面,或者Servlet 之間交換信息。

    常用的方法有

    getAttribute(String attNarne) , setAttribute(String attNarne , String attValue)

    和getInitParameter(String paramNarne)等。

    config: javax.servlet. ServletConfig 的實(shí)例,該實(shí)例代表該JSP 的配置信息。

    常用的方法有

    getInitPararneter(String paramNarne) 及getInitPararneternarnes() 等方法。事實(shí)上, JSP 頁面通常無須配置,也就不存在配置信息。因此,該對象更多地在Servlet 中有效。

    exception: java.lang.Throwable 的實(shí)例,該實(shí)例代表其他頁面中的異常和錯誤。只有當(dāng)頁面是錯誤處理頁面,即編譯指令page 的isErrorPage 屬性為true 時,該對象才可以使用。常用的方法有g(shù)etMessageO和printStackTrace等。

    out: javax.servlet.jsp.JspWriter 的實(shí)例,該實(shí)例代表JSP 頁面的輸出流,用于輸出內(nèi)容,形成HTML 頁面。

    page: 代表該頁面本身,通常沒有太大用處。也就是Servlet 中的this ,其類型就是生成的Servlet 。

    pageContext: javax.servlet.jsp.PageContext 的實(shí)例,該對象代表該JSP 頁面上下文,使用該對象可以訪問頁面中的共享數(shù)據(jù)。常用的方法有g(shù)etServletContext和getServletConfig等。

    request: javax.servlet. http:HttpServletRequest 的實(shí)例,該對象封裝了一次請求,客

    戶端的請求參數(shù)都被封裝在該對象里。這是一個常用的對象,獲取客戶端請求參

    數(shù)必須使用該對象。常用的方法有g(shù)etPararneter(String paramNarne),

    getPararneterValues(String paramName),

    setAttribute(String atttibuteName,Object attributeValue),

    getAttribute(String attributeName)和setCharacterEncoding(String env)等。

    response: javax.servlet.http.HttpServletResponse 的實(shí)例,代表服務(wù)器對客戶端的響應(yīng)。通常,也很少使用該對象直接響應(yīng),輸出響應(yīng)使用out 對象,而response 對象常用于重定向。常用的方法有sendRedirect(j ava.lang.String location)等。

    session: javax.servlet.http.HttpSession 的實(shí)例,該對象代表一次會話。從客戶端瀏覽器與站點(diǎn)建立連接起,開始會話,直到關(guān)閉瀏覽器時結(jié)束會話。常用的方法有:

    getAttribute(String attName), setAttribute(String attName, String attValue)等。

     

    JSP 定義

    JSP 屬性定義使用<jsp-property-group/>元素配置,主要包括如下四個方面。

    ·是否允許使用表達(dá)式語言:使用<el-ignored/>元素確定,默認(rèn)值為false 。

    ·是否允許使用Java 腳本:使用<scripting-invalid/>元素確定,默認(rèn)值為false 。

    ·聲明JSP 頁面的編碼:使用<page-encoding/>元素確定。

    ·使用隱式包含:使用<include-prelude/>和<include-codal>元素確定。

    看下面的配置文件:

    <?xm1 version="1.0" encoding="ISO-8859-1"?>

    <!--Serv1et2.4 以上版本的Web 應(yīng)用配置的根元素->

    <web-app xm1ns=''http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi=''http://www.w3.org /2 001/XMLSchema-instance''

    xsi:schemaLocation=''http://java.sun.com/xml/ns/j2ee http://java.sun.com

    /xml/ns/j2ee/web-app_2_4.xsd"

    version="2.4">

    <1-- 關(guān)于JSP 的配置信息-->

    <jsp-config>

    <]sp-property-group>

    <!-- 對哪個文件應(yīng)用配置-->

    <url-pattern>/test1.jsp</url-pattern>

    <!--忽略表達(dá)式語言-->

    <el-ignored>true</el-ignored>

    <'--頁面編碼方式-->

    <page-encoding>GBK</page-encoding>

    <'--不允許使用Java 腳本-->

    <scripting-invalid>true</scripting-invalid>

    <'--隱式導(dǎo)入頁面頭-->

    〈工nclude-prelude>/inc/top.jspf</inc1ude-prelude>

    <'--隱式導(dǎo)入頁面尾-->

    <include-coda>/inc/bottom.jspf</include-coda>

    </jsp-property-group>

    <]sp-property-group>

    <1- 對哪個文件應(yīng)用配置->

    <url-pattern>/test2.jsp</url-pattern>

    <el-ignored>false</el-ignored>

    <!-- 頁面編碼方苯-->

    <page-encoding>GBK</page-encoding>

    <!一允許使用Java 腳本一〉

    <scripting-invalid>false</scripting-invalid>

    </jsp-property-group>

    </jsp-config>

    </web-app>

    注意:如果在不允許使用Java 腳本的頁面中使用Java 腳本,則頁面將出現(xiàn)錯誤。

    即test1 .jsp 頁面中不允許出現(xiàn)Java 腳本。

     

    表達(dá)式語言的內(nèi)置對象

    使用表達(dá)式語言可以直接獲取請求參數(shù),可獲取頁面中某個JavaBean 的屬性值,獲取請求頭及獲取session 屬性值等,這些都得益于表達(dá)式語言的內(nèi)置對象。

    表達(dá)式語言包含如下11 個內(nèi)置對象。

    pageContext: 代表該頁面的pageContext 對象,與JSP 的pageContext 內(nèi)置對象相同。

    pageScope: 用于獲取page 范圍的屬性值。

    requestScope: 用于獲取request 范圍的屬性值。

    sessionScope: 用于獲取session 范圍的屬性值。

    applicationScope: 用于獲取application 范圍的屬性值。

    param: 用于獲取請求的參數(shù)值。

    paramValues: 用于獲取請求的參數(shù)值,與param 的區(qū)別在于,該對象用于獲取屬

    性值為數(shù)組的屬性值。

    header: 用于獲取請求頭的屬性值。

    headerValues: 用于獲取請求頭的屬性值,與header 的區(qū)別在于,該對象用于獲取屬性值為數(shù)組的屬性值。

    initParam: 用于獲取請求Web 應(yīng)用的初始化參數(shù)。

    cookie: 用于獲取應(yīng)用的Cookie 值。

    表達(dá)式語言的自定義函數(shù)

    表達(dá)式語言除了可以使用基本的運(yùn)算符外,還可以使用自定義函數(shù)。通過使用自定

    義函數(shù),加強(qiáng)了表達(dá)式語言的功能。

    自定義函數(shù)的用法非常類似于標(biāo)簽的用法,同樣需要定義函數(shù)處理類和使用標(biāo)簽庫。

    下面介紹定義函數(shù)的開發(fā)過程。

    (1)開發(fā)函數(shù)處理類:函數(shù)處理類就是普通類,這個普通類中包含若干個靜態(tài)方法,

    每個靜態(tài)方法都可定義成一個函數(shù)。

    public class Functions{

           //對字符串進(jìn)行反轉(zhuǎn)

           public static String reverse( String text ){

                  return new StringBuffer(text).reverse().toString();

           }

           //統(tǒng)計字符串的個數(shù)

           public static int countChar( String text) {

                  return text.length();

           }

    }

    (2) 使用標(biāo)簽庫定義函數(shù),定義函數(shù)方法與定義標(biāo)簽庫方法相同。下面是定義函的配置文件:

    <?xml version="l.O" encoding="UTF-8" ?>

    <1 一標(biāo)簽庫配置文件的根元素一〉

    <taglib xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/200l/XMLSchema-instance"

    xsi:schemaLocation="http://j ava.sun.com/xml/ns/j2ee

    http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

    version="2.0">

    <jsp-version>2.0</jsp-version>

    <tlib-version>l.O</tlib-version>

    <1-- 定義第一個函數(shù)>

    <function>

    <!- 定義第一個函數(shù):reverse-->

    <name>reverse</name>

    <!一定義函數(shù)的處理類>

    <function-class>lee.Functction/function-class>

    <!- 定義函數(shù)的對應(yīng)的方法-->

    <function-signature>java.lang.String reverse( java.lang.String )

    </function-signature>

    </function>

    <function〉

    <!-- 定義第二個函數(shù): countChar-->

    <name>countChar</name>

    <!一定義函數(shù)的處理類->

    <function-class>lee.Functions</function-class>

    <1- 定義函數(shù)的對應(yīng)的方法->

    <function-signature>int countChar( java.lang.String )</function-signature>

    </function>

    </taglib>



    作者:hoojo
    出處:
    blog:http://blog.csdn.net/IBM_hoojo
             http://hoojo.cnblogs.com
    本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。


    版權(quán)所有,轉(zhuǎn)載請注明出處 本文出自:
    分享道版權(quán)所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處,謝謝
    posted on 2012-01-29 14:49 hoojo 閱讀(1678) 評論(1)  編輯  收藏 所屬分類: JavaEEJsp/Servlet

    評論:
    # re: JSP 手記[未登錄] 2012-01-30 10:56 | tbw
    主站蜘蛛池模板: 两个人的视频高清在线观看免费| 日本免费精品一区二区三区| 亚洲毛片在线免费观看| 亚洲国产精品自在线一区二区 | 久操视频免费观看| 九九精品成人免费国产片| 99在线免费观看| 好紧我太爽了视频免费国产| 免费在线看污视频| 日本免费一区二区三区| 久久久久av无码免费网| 久久久久久免费视频| AV免费网址在线观看| 四虎成人精品在永久免费| 亚洲高清免费视频| 亚洲人成色777777在线观看| 亚洲Aⅴ无码专区在线观看q| 亚洲综合久久成人69| 亚洲kkk4444在线观看| 亚洲AV无码专区国产乱码不卡| 成人久久久观看免费毛片| 久久成人永久免费播放| 免费的全黄一级录像带| 3344免费播放观看视频| 久久久www成人免费毛片| 情侣视频精品免费的国产| 亚洲午夜爱爱香蕉片| 亚洲AV日韩AV永久无码绿巨人 | 久久久久无码精品亚洲日韩| 久久亚洲熟女cc98cm| 国产 亚洲 中文在线 字幕| 麻豆69堂免费视频| 成全视频免费观看在线看| 国产精品成人免费福利| 国产小视频在线免费| 亚洲日韩v无码中文字幕| 亚洲精品美女视频| 欧美日韩亚洲精品| 黄色网站软件app在线观看免费| 免费v片在线观看视频网站| 国产精品美女自在线观看免费 |