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

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

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

    程序手記

    程序是我畢生的追求......
    隨筆 - 19, 文章 - 0, 評論 - 9, 引用 - 0
    數據加載中……

    2008年8月3日

    JSP基礎 (文件上傳) 第二十二天

        把一個指定的文件上傳到服務器,通常依靠JSP技術完成,需要使用到兩個JSP頁面。第一個JSP頁面是選擇要上傳的文件,第二個JSP頁面是從客戶端獲取該文件里面的信息,并把這些信息以客戶端相同的格式保存在服務器端,該頁面主要為功能處理頁面。
        第一個頁面的實現必須含有FILE類型的表單,并且表單的enctype的屬性必須為"muldtipart/form-data"。
        第二個頁面要使用內置對象request調用方法getInputStream()獲得一個輸入流,通過這個輸入流讀取客戶上傳的全部信息,如上傳文件的 名字,文件的大小,文件的類型。根據request所獲得的信息創建一個數據輸出流對象,把信息寫到一個指定的文件內

        第一個文件內容如下:
            <body>
                <form method="post" action="file_14.jsp" enctype="multipart/form-data">
                    <input type="file" name="file1" size="50" /><br>
                    <input type="submit" value="上傳" />
                </form>

        第二個文件內容如下:
            <%@ page contentType="text/html; charset='utf-8'" %>
            <%@ page import="java.io.*" %>
            <%@ page import ="java.util.*"%>
            <%@ page import="javax.servlet.*"%>
            <%@ page import = "javax.servlet.http.*" %>
            <body>
            <%
                int MAX_SIZE = 102400 * 102400;    //定義上傳文件的最大字節
                String rootPath;    //創建跟路徑的保存變量
                DataInputStream in = null;    //聲明文件讀入類
                FileOutpubStream fileOut = null;    //
                String remoteAddr = request.getRemoteAddr();    //取得客戶端的網絡地址
                String servName = request.getServerName();    //獲得服務器的名字
                out.print("serverName=" + serverName + "<br>");
                out.print("request.getServletPath() = " + request.getServletPath() + "<br>")

    posted @ 2008-08-22 00:29 程序手記 閱讀(242) | 評論 (0)編輯 收藏

    JavaBean基礎 (javabean簡介) 第二十一天

        JavaBean是一個可重復使用、且跨平臺的軟件組件(SoftWare Component),它可以在軟件開發工具如:Borland JBuilder \ Oracle JDeveloper 或是 Sun ONE Studio 等等里,以可視化的開發方式來開發。
        首先,你可以將JAVABEAN視為一個黑盒子(Black Box),雖然知道這個軟件組件所具備的功能,卻不知其內部是如何運作的。筆者提供給讀者一個假象的情況:有一個黑盒子,只知道它上面有一個按鈕,你只要按下去經過十分鐘,就會掉下一張一千元的鈔票,不過你看不見其內部任何的構造,而這就是JAVABEAN最重要的特性,它將許多的信息都封裝了起來,用戶無需知道黑盒子如何產生出鈔票,只需知道按下那個按鈕,然后等十分鐘,超片就會自動產生出來。
        一般而言,JAVABEAN可分為:有用戶接口(user interface)的javabean和沒有用戶接口的javabean,通常JSP是搭配沒有UI的JAVABEAN,因此后面所提到的JAVABEAN都知識單純處理一些食物,如:數據運算,連接數據庫和數據處理,等等,至于有用戶接口的JAVABEAN部分,請讀者自己參考JAVABEAN的相關書籍。
        通常一個標準的JAVABEAN有如下幾項特性:
        (1)javabean是一個公開的(public)類;
        (2)javabean類必須有一個無傳入參數(zero-argument)的構造函數(constructor);
        (3)取得或設置屬性時,必須使用getXXX方法或setXXX方法。

    例子:
        package tw.com.javaworld.CH8;
        
        import java.io.*;
        
        public class SimpleBean{
            public SimpleBean(){
            }
            private String name;
            private String number;
            
            public void setNumber(String number){
                this.number = number;
            }
            public String getName(){
                return name;
            }
        }

    posted @ 2008-08-21 23:09 程序手記 閱讀(506) | 評論 (0)編輯 收藏

    JSP基礎 (JSP動作元素) 第二十一天

        與JSP指令元素不同的是,JSP動作元素在請求處理階段起作用。JSP動作元素是試用XML語法寫成的,它可以采用以下兩種格式:
        <prefix:tag attribute = value attribute-list.../>
    或者
        <prefix:tag attribute = value attribute-list.../>
        ...
        </prefix.tag>
    SERVLET容器在處理JSP時,每當遇到這種動作元素,都根據它的標記進行特殊處理。
    JSP規范定義了一系列的標準動作,它用JSP作為前綴。這些標準的動作不去慣容器是如何實現的,但是每個WEB容器都必須提供這些操作類型。標準動作為網頁設計者提供了基本的功能,其他的廠商可以自由提供其他的非標準動作以增強功能。
        標準動作有:
    <jsp:useBean>
    <jsp:setProperty>
    <jsp:getProperty>
    <jsp:param>
    <jsp:include>
    <jsp:forward>
    <jsp:plugin>
    <jsp:fallback>
    <jsp:attribute>
    <jsp:body>
    <jsp:invoke>
    <jsp:doBody>
    <jsp:element>
    <jsp:output>
    <jsp:scriptelet>
    <jsp:declaration>等
    在標準動作中,有許多是XML語法的動作元素,比如<jsp:scriptelet> <jsp:declaration>但他們的使用并不廣泛,下面介紹JSP中主要的動作元素。

    文件導入標記<jsp:include>
    include用于允許在請求時間內在縣城的JSP頁面里包含靜態或者動態資源。被包含的對象只有對JSPWRITER對象的訪問權,并且它不能設置頭或者COOKIE,如果頁面輸出是緩沖的,那么緩沖區的刷新要有限于包含的刷新。此指令在運行的效率上比<%@ page include %>指令的效率低,但是可以動態增加內容。用戶可以通過一下的格式來使用文件導入標記
        <jsp:include page="{relativeURL | <%=expression%>}" flush="true" />
        <jsp:include page="{relativeURL | <%=expression%>}" flush = "true" >
            <jsp:param name="parameterName" value="{parameterValue | <%=expression%>}"
        </jsp:include>

        例如:
        <jsp:include page="admin/login.jsp" />
        <jsp:include page="copyright.html" />
        <jsp:include page="admin/login.jsp">
            <jsp:parame name = "username" value="JackLong" />
        </jsp:include>

    頁面轉向標記<jsp:forward />
    實例:
        <jsp:forword page="showinfo.jsp" >
            <jsp:param name = "username" value = "<%=request.getParameter("username")%>"/>
            <jsp:param name = "telephone" value = "<%=request.getParameter("telephone")%>"/>
        </jsp:forword>

    posted @ 2008-08-21 05:20 程序手記 閱讀(481) | 評論 (0)編輯 收藏

    JSP基礎 (獲取當前時間) 第二十一天

        下面的代碼用于顯示當前時間,并根據當前是幾點輸出相應的提示信息,其中,使用java.util.Date thisday=new java.util.Date();語句來取得當前時間,然后通過相應的方法取得年,月,日,時和分的信息并輸出:

    <% page contentType="text/html; charset=utf-8" import="java.util.*" %>
    <body>
    <%
    //獲取當前的時間
    java.util.Date thisday = new java.util.Date();
    %>
    當前時間:
    <%=thisday.getYear()+1900%>年
    <%=thisday.getMonth()+1%>月
    <%=thisday.getDate()%>日
    <%=thisday.getHours()%>時
    <%=thisday.getMinutes()%>分
    <%
    String str = "歡迎訪問:"
    int num = this.getHours();
    switch(num){
        case 8:
        case 9:
        case 10:
        case 11:
        {
            out.print("歡迎你的訪問,上午好!");
            break;
        }
        case 12:
        {
            out.print("中午好!");
            break;
        }
        case 13:
        case 14:
        case 15:
        case 16:
        case 17:
        case 18:
        {
            out.print("下午好!");
            break;
        }
    </body>

    posted @ 2008-08-21 04:23 程序手記 閱讀(1259) | 評論 (0)編輯 收藏

    JSP基礎 (高級計數器實例) 第二十天

                                                                               countFile.java
    public class countFile{
        public static void writeFile(String filename,long count){
            PrintWriter out = new PrintWriter(new FileWriter(filename));
            out.println(count);
            out.close();
        }
        public static void readFile(String filename){
            File f = new File(filename);
            if(!f.exists()){
                writeFile(filename,0);
            }
            BufferedReader in = new BufferedReader(new FileReader(f));
            long count = Long.parseLong(in.readline());
            return count;
        }
        public static String tranform(long count){
            String countNumber = ""+count;
            String newstring = "";
            for(int i=0;i<countNumber.length;i++){
                newstring+="<img src='images/"+countNumber.charAT(i)+".gif' >";
            }
            return newstring;
        }
    }

    posted @ 2008-08-20 05:19 程序手記 閱讀(177) | 評論 (0)編輯 收藏

    TOMCAT基礎 (設定站點) 第十三天

        在Tomcat 上建立一個 JSPBook站點時,我們需要修改Tomcat的server.xml文件,server.xml位于{Tomcat_Install}\conf\server.xml(例如:e:\apache software foundation\tomcat 5.0\conf\server.xml)。

        server.xml
        
        ......
        <!--Tomcat Root Context-->

        <!--
            <Context path="" docBase="ROOT" debug="0">
        -->
        <Context path="/JSPBook" docBase="JSPBook" debug="0" crosscontext = "true" reloadable="true" >
        </Context>
        </Host>
        </Engine>
        </Service>
        </server>

        這部分主要是設定JSPBOOK站點,其中 path="/jspbook"代表網站名稱,即 http://ip_domainName/jspbook;
    docBase = "jspbook" 代表站點的目錄位置,debug則是設定debug lerel,0表示提供最少的信息,9表示提供最多的信息; reloadable則表示tomcat在執行時,當class ,web.xml被更新過時,都會自動重新加載,不需要重新啟動tomcat。

    posted @ 2008-08-13 17:36 程序手記 閱讀(160) | 評論 (0)編輯 收藏

    JAVA基礎 (JAVA中的STATIC塊) 第十三天(對浪費的前10天表示悔恨)

    Java 程序中時常用些 static{}這樣的結構。
    這樣的結構叫 static塊,一般是一個類初始化時運行的代碼。注意,是類的初始化,不是對象的初始化。
    也就是你在定義對象時,他運行的初始化代碼,并且只有第一次定義時才運行。之后就不再運行初始化了。
    一個類中可以有很多static塊。static塊按順序執行。

    看以下代碼:
    public class TestStatic{
        static{
            System.out.println(1);
        }
        static {
            System.out.println(2);
        }
        static {
            Stystem.out.println(3);
        }
        public static void main(String args[]){
            System.out.println(5);
        }
        static {
            System.out.println(4);
        }
    }
    執行結果是:
    1
    2
    3
    4
    5
    一目了然,首先調用的是static靜態塊的代碼,然后調用啟動方法,而STATIC塊的執行順序是由代碼的編寫順序執行的過程,STATIC塊大家用的比較少,其實就是在對象生成之際產生的一系列的STATIC變量。

    posted @ 2008-08-13 16:22 程序手記 閱讀(342) | 評論 (0)編輯 收藏

    JAVA WEB開發 (First Servlet Samlet Code) 第四天

    HelloServlet.java

    package tw.com.javaworld.CH2;

    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;

    public class HelloServlet extends HttpServlet{
        //Initialize global variables
        public void init(ServletConfig config) throws ServletException{
            super.init(config);
        }
        
        //Process the HTTP Get request
        public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=GB2312");
            PrintWrite out = response.getWrite();
            out.println("<html>");
            out.println("<body>");
            out.println("Hello World<br>");
            out.println("大家好");
            out.println("</body>");
            out.println("</html>");
            out.close();
        }

        //Get Servlet information
        public String getServletInfo(){
            return "tw.com.javaworld.CH2.HelloServlet Information";
        }
    }

    posted @ 2008-08-04 18:15 程序手記 閱讀(237) | 評論 (0)編輯 收藏

    Java WEB開發 (TomCat配置) 第四天

    Tomacat是一個WEB容器,所有的J2EE WEB程序可以在此處運行。常見的WEB容器還有WebLogic、WebSphere。

    Tomcat的默認端口號是8080,這個數值可以在安裝過程中修改也可以在conf/server.xml中修改。

    Tomcat是根據系統的%JAVA_HOME%變量值選擇系統中的JDK。

    Tomcat目錄主要文件夾作用

    • bin目錄:存放啟動和關閉Tomcat的腳本
    • conf目錄:存放不同配置文件,其中比較重要的是server.xml(Tomcat的主要配置文件)和web.xml
    • work目錄:存放JSP編譯后的.class文件
    • webapps目錄:存放WEB應用程序
    • lib目錄:存放所有需要的各種jar包

    配置Tomcat方式有兩種:手工配置--修改conf/server.xml文件、管理控制臺配置

    • 注意:修改server.xml之后要重新啟動Tomcat服務器才能使配置生效

    配置虛擬目錄的要求

     

     

    • 修改server.xml文件
    • 虛擬目錄的結構要符合要求
      • WebRoot
        • WEB-INF
          • web.xml
      • 其中web.xml的內容一般為:

         


        xmlns:xsi="http://www.w3.org/2001/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">

        Welcome to Tomcat

        Welcome to Tomcat

    • 創建好虛擬目錄之后要在server.xml中之前添加一句 (大小寫敏感,修改完之后應該重新啟動Tomcat服務器使配置生效)

    若設置虛擬目錄后訪問目錄提示404錯誤而可以運行目錄下的jsp文件則說明是目錄權限被禁用,可以修改conf/web.xml文件找到 將下面一行中的false改成true

    jsp文件的運行過程: *.jsp  -->  *.java  -->  *.class  -->  運行顯示 

    • *.class是第一次運行生成后存放在work目錄下的,所以jsp文件第一次或者修改后首次運行比較慢而后來再運行的速度很快

    posted @ 2008-08-04 16:39 程序手記 閱讀(316) | 評論 (0)編輯 收藏

    JAVA基礎 (嵌套類) 第四天

        Java允許將類的定義方在其他類的內部,形成嵌套類。嵌套類使邏輯關系緊密的類組成一個整體,嵌套類可以用于訪問其所在的類的作用域。

    嵌套類可以訪問外部類似有成員。
        // OuterNested1.java
    public class OuterNested1{
        private int size;
        public class Nested{
            public int doStuff(){
                //嵌套類可以訪問OuterNested1類的似有成員 size 變量
                return(size++);
            }
        }
        public int testTheNested(){
            Nested i = new Nested();
            return(i.doStuff());
        }
    }

    //TestOuterNested1.java
    public class TestOuterNested1 {
        public static void main(String[] args){
            outerNested1 outer = new OuterNested1();
            System.out.println(outer.testTheNested());
        }
    }

    posted @ 2008-08-04 15:21 程序手記 閱讀(174) | 評論 (0)編輯 收藏

    JAVA基礎 (包 與 Java API) 第二天 第四天

        建立Java包,布局源文件和設置classpath參數之間相互影響。也相互關聯。正確建立和導入JAVA包,合理布局源文件,準確設置CLASSPATH參數,才能保證應用程序順利執行,并有效管理應用程序。

    包的建立方法
        Java包通過package語句建立,基本語法是:
            package cn.edu.jmu.graphis;
        在定義類或接口的源文件開始處,通過package語句,可以將相應的類或接口放入package所聲明的包里。包是相關類和接口的集合,提供了訪問級別控制和命名控件管理。

    包的使用方法
        每個源文件只能有一個包聲明,并且一定要求放在源文件的開始位置。如果一個源文件沒有包語句,則源文件所定義的類或接口唄系統放入默認包中。包有層次,層次間由點分隔。
        例如有一組與圖形相關的類,包括Circles,Rectangles,Lines和points類等,描述了畫圖所用到的各種圖形組件,另有抽象類Graphic標識圖形組件的共性,接口Draggable表示用戶可以通過鼠標拖拽成圖的圖形組件。在這種情況下,我們不僅需要,而且也應該將這些相關類和接口組成包,可命名為graphics如:

    //Graphics.java
    package graphics;
    public abstract class Graphic{
        ...
    }

    //Circle.java
    package graphics;
    public class Circle extends Graphic implements Draggable {
        ...
    }

    //Rectangle.java
    package graphics;
    public class Rectangle extends Graphic implements Draggable {
        ...
    }

    //Draggable.java
    package graphics;
    public interface Draggable{
        ...
    }
        通過創建和使用包,程序員不僅可以很容易地確定哪些類和接口是相關的,也可以很容易地找到提供特定功能的類和接口,例如,與畫圖有關的類和接口在graphics包中。

    包的訪問權限
        通過聲明類的訪問級別,可以控制對類的訪問權限。
        類的訪問級別分為默認級和public級。定義類的默認訪問級別不需要任何關鍵字,唄聲明為默認級的類只對同一個包中的類是可視的。也就是說只有同一個包內的類實例可以訪問這個類,外界不能訪問它。如果用關鍵字public定義類,不但同一個包里的其他類可以訪問這個類,其他包中的類也可以訪問它。換句話說,同一個包中的類,相互之間有不受限制的訪問權限。而在不同包中,只有public類可以被訪問。
        public修飾符不知用于定義類的訪問控制級別,也可以應用于接口,方法或變量。public 接口同public類一樣,可以由應用程序中的任何類訪問。而public方法或public屬性對任何可以訪問他的類或接口都是可視的。
        除public修飾符之外,用于訪問控制的修飾符還有protected 和 private。
    protected 或 private 僅用來定義方法或變量的訪問控制級別。protected 方法或protected變量僅對同一個包內的類或不同包中的子類來說是可視的。
    private方法和pvivate變量對外部定義的類均不可視。

    包的命名方式
        包提供了心的命名控件,即使所定義的類使用與其他包中的類相同的名字,只要包類所屬的包不同名,就不會引起沖突。原因是這些類的全程限定名稱不同。類的全程限定包含了類的各層包名。這實質上是應用了面向對象的概念,將類封裝入包中。

    包的訪問權限
        通過聲明類的訪問級別,可以控制對類的訪問權限。
        類的訪問級別分為默認級和public級。定義類的默認訪問級別不需要任何關鍵字,貝聲明為默認級的類只對同一個包中的類是可視的。也就是說,只有同一個包內的類實例可以訪問這個類,外界不能訪問它。如果用關鍵字public 定義類,不但同一個包里的其他類可以訪問這個類,其他包中的類也可以訪問它。換句話說,同一個包中的類,相互之間有不受限制的訪問權限。而在不同的包中,只有public類可以被訪問。
        public 修飾符不只用于定義類的訪問控制級別,也可以應用于接口,方法和變量。public接口同public類一樣,可以由應用程序中的任何類訪問。而public方法或public變量對任何可以訪問他的類或接口都是可視的。
        除public 修飾符之外,用于訪問控制的修飾符還有 protected 和private 。 protected或private僅用來定義方法或變量的訪問控制級別。protected方法或protected變量僅對同一個包內的類或不同包中的子類來說是可視的。private方法和private變量對外部定義的類均不可視。需要說明的是,通常不建議用默認方式定義方法或成員變量的訪問級別。

                          
        對于沒有指定包名的java源文件,系統認為他們都屬于同一個默認的包。如果沒有把自己的Java類放入某個包中,那么任何默認包里的對象都可以訪問它,并且不局限于同一個子目錄下,因此通常應該在每個Java源文件的項目頂部使用 package語句,指明它所屬的包。

    訪問包成員
        對于包來說,只有它的public成員可貝外界訪問。若外界想要訪問包的public類,有3種方式可以實現。
        (1)通過類的全程限定名訪問該類。
        (2)通過import語句導入該類。
        (3)通過import語句導入整個包。
        如果某個類只貝訪問一次,那么可以直接使用類的全名。例如訪問cn.edu.jmu.graphics.Graphic類可以用一下方式:
        cn.edu.jmu.graphics.Graphic aGraph = new cn.edu.jmu.graphics.Graphic();
        這條語句創建了 cn.edu.jmu.graphics.Graphic類型的對象 aGraph。
        可以看到,即是指創建一個對象,在變量定義和初始化時也用到兩次全名。當使用Java約定的包命名方式時,包名可能過長,此時用起來就更顯得繁瑣,容易出錯,也影響可讀性。
        通常都應該使用import語句直接導入所需類,或者導入該類所在的包。導入之后,程序中設計的這個類的地方就可以直接用類名訪問。
        import 的基本語法形式為:
        import <包名>[.<子包名>].<類名>;    //導入指定類
    或者:
        import <包名>[.<子包名>].*;    //導入整個包
    例如:
        import cn.edu.jmu.javaprogs.Timel;
        import cn.edu.jmu.javaprogs.*;
        import java.awt.*;
        import java.awt.event.*;

        import語句在package 語句之后,所有的類聲明之前。由于集中在程序首部,宜于直觀地了解程序所需的包,有助于維護程序的可移植性。
        import 語句中的 * 用來匹配包中的所有類,但并不能用來匹配包中的所有類的某個子集。如語句
        import java.awt.*;
        導入java.awt包中的所有類。如果這樣的語句
        import java.awt.A*;
        它無法導入java.awt句中首字母為A的所有子類,相反還會出現編譯錯誤,也就是說,使用import語句一次只能導入包的單一成員,或者導入整個包。
        還有語句
        import java.awt.*;
        所導入的是java.awt包中的所有類,它包括接口。但不包括java.awt包中的子包。如果需要訪問java.awt.event子包中的類,仍需要用 import語句導入 java.awt.event子包。所以常常使用如下形式:
        import java.awt.*;
        import java.awt.event.*;

      

    包的布局
        類的全程受名稱與類所在目錄一一對應,例如:
        import graphics.Rectangle    等同于文件路徑名:
        Graphics\Rectangle.java


    classpath參數
        classpath參數用于設置Java包所在的頂級目錄。也就是說,通過classpath可以為Java包建立所依存的目錄列表。編譯和運行Java 程序時,系統會自動從classpath環境變量中讀取包所在的目錄,文件所在目錄由系統通過classpath中的目錄和package語句中定義的目錄合成。
        下面通過一個完整的實例程序,說明classpath參數的作用,同時展示源文件和字節碼文件的一種建議布局模式。
        程序包含兩個類 Time 和 TestTime,TestTime為主類。程序對用戶輸入的表示小時、分鐘和秒鐘的3個整型數,經過數據正確性驗證,分別轉換為通用時間表示格式和標準時間表示格式,通過對話框顯示給用戶,運行后如圖:
                                                                          

        文件布局方式如下:創建 d:\javaSample 目錄存放java程序,創建 d:\javaSample\src 子目錄存放源文件,創建d:\javaSample\class 子目錄存放編譯后的字節碼文件。 具體實現方式是將文件 TestTime.java 存放在 D:\javaSample\src 子目錄下,為使 src 子目錄的結構與 class 子目錄結構相對應,創建 D:\javaSample\src\cn\edu\jmu\timer 子目錄存放 Time.java文件。類Time和類TestTime的布局如圖:
                                  
        Time.java中的語句
        package cn.edu.jmu.timer;
        將Time類放入包cn.edu.jmu.timer中,源文件Time.java存放在與包相對應的目錄結構下。在類TestTime.java中通過語句   import cn.edu.jmu.timer.Time;   導入Time類。
        需要設置classpath參數,規定程序中的包    cn.edu.jmu.timer 編譯所依存的頂級目錄為 d:\javaSample\class,如:
                    set classpath = d:\javaSample\class;
        編譯:
            javac -d d:\javaSample\class
            d:\javaSample\src\cn\edu\jmu\timer\Time.java 
            javac -d d:\javaSample\class d:\javaSample\src\TestTime.java
        運行:
            java TestTime

    posted @ 2008-08-03 00:40 程序手記 閱讀(356) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 久久午夜羞羞影院免费观看| 免费看国产成年无码AV片| 亚洲综合久久综合激情久久| 国产国产人免费视频成69堂| 色噜噜狠狠色综合免费视频| 亚洲狠狠婷婷综合久久久久| 亚洲电影免费观看| MM1313亚洲国产精品| 亚洲av成人无码久久精品| 成年男女男精品免费视频网站 | 久久久亚洲欧洲日产国码是AV| 成人毛片18女人毛片免费| 一区二区三区视频免费观看| 亚洲精品电影在线| 亚洲精品第一国产综合境外资源| 无码AV片在线观看免费| 黄色大片免费网站| 亚洲美女自拍视频| 亚洲国产成人VA在线观看| 亚州免费一级毛片| 中文毛片无遮挡高清免费| 亚洲性无码AV中文字幕| 亚洲AV中文无码乱人伦下载| 国产免费AV片无码永久免费| 精品熟女少妇av免费久久| 永久免费无码日韩视频| 色偷偷女男人的天堂亚洲网| 国产AV无码专区亚洲A∨毛片| 日本免费人成视频播放| 啦啦啦完整版免费视频在线观看| caoporn成人免费公开| 亚洲日本在线电影| 91久久亚洲国产成人精品性色| 亚洲欧洲自拍拍偷精品 美利坚| 在线观看视频免费完整版| 久久免费观看国产精品88av| 未满十八私人高清免费影院| 国产亚洲精品成人AA片| 久久亚洲日韩看片无码| 亚洲av无码精品网站| 三上悠亚亚洲一区高清|