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

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

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

    Sunspl

    Hello,everyone,i am sun. 天道酬勤,笨鳥先飛.
    隨筆 - 47, 文章 - 0, 評論 - 24, 引用 - 0
    數(shù)據(jù)加載中……

    java文件操作大全[分享]

    文件的建立/檢查與刪除
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>文件的建立、檢查與刪除</title>
    </head>
    <body>
    <%
    String path=request.getRealPath("");
    //out.println(path);
    File f=new File(path,"File.txt");
    //out.println(f);
    //out.println(f.exists());

    if(f.exists()){//檢查File.txt是否存在
    f.delete();//刪除File.txt文件
    out.println(path + "\\File.txt 存在,已刪除。");
    }else{
    f.createNewFile();//在當前目錄下建立一個名為File.txt的文件
    out.println(path + "\\File.txt 不存在,已建立。");//輸出目前所在的目錄路徑
    }
    %>

    目錄的建立/檢查與刪除
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>目錄的建立/檢查與刪除</title>
    </head>
    <body>
    <%
    String path=request.getRealPath("");
    path=path + "\\Sub";//將要建立的目錄路徑
    File d=new File(path);//建立代表Sub目錄的File對象,并得到它的一個引用
    if(d.exists()){//檢查Sub目錄是否存在
    d.delete();
    out.println("Sub目錄存在,已刪除");
    }else{
    d.mkdir();//建立Sub目錄
    out.println("Sub目錄不存在,已建立");
    }
    %>
    </body>
    </html>


    如何在JSP中處理虛擬目錄
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>JSP中如何處理虛擬目錄</title>
    </head>
    <body>
    取得虛擬目錄對應(yīng)的磁盤路徑<br>
    Web站點主目錄的位置為<font color=#ff0000><%=request.getRealPath("/")%></font><br>
    JSP網(wǎng)頁所在的目錄位置<font color=#ff0000><%=request.getRealPath("./")%></font><br>
    JSP網(wǎng)頁所在目錄上一層目錄的位置<font color=#ff0000><%=request.getRealPath("../")%></font><br>
    </body>
    </html>


    文件屬性的取得
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.util.Date,java.io.*"%>
    <html>
    <head>
    <title>文件屬性的取得</title>
    </head>
    <body>
    <%
    String path=request.getRealPath("/");
    File f=new File(path,"ReadData.txt");
    if(f.exists()){
    %>
    <%=f.getName()%>的屬性如下:<br><br>
    文件長度為:<%=f.length()%>
    <%=f.isFile()?"是文件":"不是文件"%><br>
    <%=f.isDirectory()?"是目錄":"不是目錄"%><br>
    <%=f.canRead()?"可讀取":"不可讀取"%><br>
    <%=f.canWrite()?"可寫入":"不可寫入"%><br>
    <%=f.isHidden()?"是隱藏文件":"不是隱藏文件"%><br>
    文件的最后修改日期為:<%=new Date(f.lastModified())%><br>
    <%
    }else{
    f.createNewFile();//在當前目錄下建立一個名為ReaData.txt的文件
    %>
    <%=f.getName()%>的屬性如下:<br><br>
    文件長度為:<%=f.length()%>
    <%=f.isFile()?"是文件":"不是文件"%><br>
    <%=f.isDirectory()?"是目錄":"不是目錄"%><br>
    <%=f.canRead()?"可讀取":"不可讀取"%><br>
    <%=f.canWrite()?"可寫入":"不可寫入"%><br>
    <%=f.isHidden()?"是隱藏文件":"不是隱藏文件"%><br>
    文件的最后修改日期為:<%=new Date(f.lastModified())%><br>
    <%
    }
    %>
    </body>
    </html>


    取出目錄中文件的方法
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>取出目錄中文件的方法--列出目錄中的文件</title>
    </head>
    <body>
    <%
    String path=request.getRealPath("/");
    File d=new File(path);//建立當前目錄中文件的File對象
    File list[]=d.listFiles();//取得代表目錄中所有文件的File對象數(shù)組
    out.println("<font color=#ff0000>" + path + "目錄下的文件:</font><br>");
    for(int i=0;i<list.length;i++){
    if(list<I>.isFile()){
    out.println(list<I>.getName() + "<br>");
    }
    }
    out.println("<br><font color=#ff0000>" + path + "目錄下的目錄:</font><br>");
    for(int i=0;i<list.length;i++){
    if(list<I>.isDirectory()){
    out.println(list<I>.getName() + "<br>");
    }
    }
    %>
    </body>
    </html>


    判斷是否為空白文件
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>判斷是否為空白文件</title>
    </head>
    <body>
    <%
    String path=request.getRealPath("/");
    out.println(path);
    FileReader fr=new FileReader(path + "\\AtEnd.txt");//建立FileReader對象,并實例化為fr
    //對FileReader類生成的對象使用read()方法,可以從字符流中讀取下一個字符。
    if(fr.read()==-1)//判斷是否已讀到文件的結(jié)尾
    {
    out.print("AtEnd.txt文件中沒有數(shù)據(jù)<br>");
    }else{
    out.println("AtEnd.txt文件中有數(shù)據(jù)");
    }
    fr.close();
    %>
    </body>
    </html>


    讀取所有的文件數(shù)據(jù)
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*,java.lang.*"%>
    <html>
    <head>
    <title>讀取所有的文件數(shù)據(jù)</title>
    </head>
    <body>
    <%
    String path=request.getRealPath(".");
    FileReader fr=new FileReader(path + "\\ReadData.txt");
    //關(guān)鍵在于讀取過程中,要判斷所讀取的字符是否已經(jīng)到了文件的末尾,并且這個字符是不是文件中的斷行符,即判斷該字符值是否為13。
    int c=fr.read();//從文件中讀取一個字符
    //判斷是否已讀到文件結(jié)尾
    while(c!=-1){
    out.print((char)c);//輸出讀到的數(shù)據(jù)
    c=fr.read();//從文件中繼續(xù)讀取數(shù)據(jù)
    if(c==13){//判斷是否為斷行字符
    out.print("<br>");//輸出分行標簽
    fr.skip(1);//略過一個字符
    //c=fr.read();//讀取一個字符
    }
    }
    fr.close();
    %>
    </body>
    </html>


    一行一行讀取數(shù)據(jù)
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>文件讀取</title>
    </head>
    <body>
    <%
    String path=request.getRealPath("");//取得當前目錄的路徑
    FileReader fr=new FileReader(path + "\\file\\inc\\t.txt");//建立FileReader對象,并實例化為fr
    BufferedReader br=new BufferedReader(fr);//建立BufferedReader對象,并實例化為br
    String Line=br.readLine();//從文件讀取一行字符串
    //判斷讀取到的字符串是否不為空
    while(Line!=null){
    out.println(Line + "<br>");//輸出從文件中讀取的數(shù)據(jù)
    Line=br.readLine();//從文件中繼續(xù)讀取一行數(shù)據(jù)
    }
    br.close();//關(guān)閉BufferedReader對象
    fr.close();//關(guān)閉文件
    %>
    </body>
    </html>


    略過文件中的字符不讀取
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>略過字節(jié)不讀取</title>
    </head>
    <body>
    <%
    String path=request.getRealPath(".");
    FileReader fr=new FileReader(path + "\\ReadData.txt");
    fr.skip(2);//跳過2個字節(jié)
    int c=fr.read();//讀取一個字節(jié)
    while(c!=-1){
    out.print((char)c);
    c=fr.read();
    }
    fr.close();
    %>
    </body>
    </html>


    將數(shù)據(jù)寫入文件
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>將數(shù)據(jù)寫入文件</title>
    </head>
    <body>
    <%
    String path=request.getRealPath(".");
    FileWriter fw=new FileWriter(path + "\\WriteData.txt");//建立FileWriter對象,并實例化fw
    //將字符串寫入文件
    fw.write("大家好!");
    fw.write("本書是《JSP編程技巧》");
    fw.write("請多多指教!");
    fw.write("email:stride@sina.com");
    fw.close();

    FileReader fr=new FileReader(path + "\\WriteData.txt");
    BufferedReader br=new BufferedReader(fr);//建立BufferedReader對象,并實例化為br
    String Line=br.readLine();
    //讀取一行數(shù)據(jù)
    out.println(Line + "<br>");
    br.close();//關(guān)閉BufferedReader對象
    fr.close();
    %>
    </body>
    </html>


    將寫入文件的數(shù)據(jù)分行
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>將寫入文件的數(shù)據(jù)分行</title>
    </head>
    <body>
    <%
    String path=request.getRealPath(".");
    FileWriter fw=new FileWriter(path + "\\WriteData.txt");
    BufferedWriter bw=new BufferedWriter(fw);
    bw.write("大家好!");
    bw.write("本書是《JSP編程技巧》。");
    bw.newLine();//斷行
    bw.write("請多多指教!");
    bw.newLine();//斷行
    bw.write("email: stride@sina.com");
    bw.flush();//將數(shù)據(jù)更新至文件
    fw.close();//關(guān)閉文件流
    out.println("寫入文件內(nèi)容為:<br>");
    FileReader fr=new FileReader(path + "\\WriteData.txt");
    BufferedReader br=new BufferedReader(fr);
    String Line=br.readLine();//讀取一行數(shù)據(jù)
    while(Line!=null){
    out.println(Line + "<br>");
    Line=br.readLine();
    }
    fr.close();
    %>
    </body>
    </html>
    如何將數(shù)據(jù)追加寫入到文件
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    <title>將寫入文件的數(shù)據(jù)分行</title>
    </head>
    <body>
    <%
    String path=request.getRealPath(".");
    RandomAccessFile rf=new RandomAccessFile(path + "\\WriteData.txt","rw");//定義一個類RandomAccessFile的對象,并實例化
    rf.seek(rf.length());//將指針移動到文件末尾
    rf.writeBytes("\nAppend a line to the file!");
    rf.close();//關(guān)閉文件流
    out.println("寫入文件內(nèi)容為:<br>");
    FileReader fr=new FileReader(path + "\\WriteData.txt");
    BufferedReader br=new BufferedReader(fr);//讀取文件的BufferedRead對象
    String Line=br.readLine();
    while(Line!=null){
    out.println(Line + "<br>");
    Line=br.readLine();
    }
    fr.close();//關(guān)閉文件
    %>
    </body>
    </html></I></I></I></I>

    posted @ 2007-05-14 08:24 JavaSuns 閱讀(936) | 評論 (2)編輯 收藏

    Java泛型編程快速入門[分享]

    JDK1.5 令我們期待很久,可是當他發(fā)布的時候卻更換版本號為5.0。這說明Java已經(jīng)有大幅度的變化。本文將講解JDK5.0支持的新功能-----Java的泛型.

      1、Java泛型

      其實Java的泛型就是創(chuàng)建一個用類型作為參數(shù)的類。就象我們寫類的方法一樣,方法是這樣的method(String str1,String str2 ),方法中參數(shù)str1、str2的值是可變的。而泛型也是一樣的,這樣寫class Java_Generics<K,V>,這里邊的K和V就象方法中的參數(shù)str1和str2,也是可變。下面看看例子:

    //code list 1
    import Java.util.Hashtable;
    class TestGen0<K,V>{
     public Hashtable<K,V> h=new Hashtable<K,V>();
     public void put(K k, V v) {
      h.put(k,v);
     }
     public V get(K k) {
      return h.get(k);
     }
     public static void main(String args[]){
      TestGen0<String,String> t=new TestGen0<String,String>();
      t.put("key", "value");
      String s=t.get("key");
      System.out.println(s);
     }
    }

      正確輸出:value

      這只是個例子(Java中集合框架都泛型化了,這里費了2遍事.),不過看看是不是創(chuàng)建一個用類型作為參數(shù)的類,參數(shù)是K,V,傳入的“值”是String類型。這個類他沒有特定的待處理型別,以前我們定義好了一個類,在輸入輸入?yún)?shù)有所固定,是什么型別的有要求,但是現(xiàn)在編寫程序,完全可以不制定參數(shù)的類型,具體用的時候來確定,增加了程序的通用性,像是一個模板。

      呵呵,類似C++的模板(類似)。

      1.1. 泛型通配符

      下面我們先看看這些程序:

    //Code list 2
    void TestGen0Medthod1(List l) {
     for (Object o : l)
      System.out.println(o);
    }

      看看這個方法有沒有異議,這個方法會通過編譯的,假如你傳入String,就是這樣List<String>。

      接著我們調(diào)用它,問題就出現(xiàn)了,我們將一個List<String>當作List傳給了方法,JVM會給我們一個警告,說這個破壞了類型安全,因為從List中返回的都是Object類型的,而讓我們再看看下面的方法。

    //Code list 3
    void TestGen0Medthod1(List<String> l) {
     for (Object o : l)
      System.out.println(o);
    }

      因為這里的List<String>不是List<Object>的子類,不是String與Object的關(guān)系,就是說List<String>不隸屬于list<Object>,他們不是繼承關(guān)系,所以是不行的,這里的extends是表示限制的。

      類型通配符是很神奇的,List<?>這個你能為他做什么呢?怎么都是“?”,它似乎不確定,他總不能返回一個?作為類型的數(shù)據(jù)吧,是啊他是不會返回一個“?”來問程序員的?JVM會做簡單的思考的,看看代碼吧,更直觀些。

    //code list 4
    List<String> l1 = new ArrayList<String>();
    li.add(“String”);
    List<?> l2 = l1;
    System.out.println(l1.get(0));

      這段代碼沒問題的,l1.get(0)將返回一個Object。

      1.2. 編寫泛型類要注意:

      1) 在定義一個泛型類的時候,在 “<>”之間定義形式類型參數(shù),例如:“class TestGen<K,V>”,其中“K” , “V”不代表值,而是表示類型。

      2) 實例化泛型對象的時候,一定要在類名后面指定類型參數(shù)的值(類型),一共要有兩次書寫。例如:

    TestGen<String,String> t=new TestGen<String,String>();

      3) 泛型中<K extends Object>,extends并不代表繼承,它是類型范圍限制。
    2、泛型與數(shù)據(jù)類型轉(zhuǎn)換

      2.1. 消除類型轉(zhuǎn)換

      上面的例子大家看到什么了,數(shù)據(jù)類型轉(zhuǎn)換的代碼不見了。在以前我們經(jīng)常要書寫以下代碼,如:

    //code list 5
    import Java.util.Hashtable;
    class Test {
     public static void main(String[] args) {
      Hashtable h = new Hashtable();
      h.put("key", "value");
      String s = (String)h.get("key");
      System.out.println(s);
     }
    }

      這個我們做了類型轉(zhuǎn)換,是不是感覺很煩的,并且強制類型轉(zhuǎn)換會帶來潛在的危險,系統(tǒng)可能會拋一個ClassCastException異常信息。在JDK5.0中我們完全可以這么做,如:

    //code list 6
    import Java.util.Hashtable;
    class Test {
     public static void main(String[] args) {
      Hashtable<String,Integer> h = new Hashtable<String,Integer> ();
      h.put("key", new Integer(123));
      int s = h.get("key").intValue();
      System.out.println(s);
     }
    }

      這里我們使用泛化版本的HashMap,這樣就不用我們來編寫類型轉(zhuǎn)換的代碼了,類型轉(zhuǎn)換的過程交給編譯器來處理,是不是很方便,而且很安全。上面是String映射到String,也可以將Integer映射為String,只要寫成HashTable<Integer,String> h=new HashTable<Integer,String>();h.get(new Integer(0))返回value。果然很方便。

      2.2 自動解包裝與自動包裝的功能

      從上面有沒有看到有點別扭啊,h.get(new Integer(123))這里的new Integer(123);好煩的,在JDK5.0之前我們只能忍著了,現(xiàn)在這種問題已經(jīng)解決了,請看下面這個方法。我們傳入一個int這一基本型別,然后再將i的值直接添加到List中,其實List是不能儲存基本型別的,List中應(yīng)該存儲對象,這里編譯器將int包裝成Integer,然后添加到List中去。接著我們用List.get(0);來檢索數(shù)據(jù),并返回對象再將對象解包裝成int。恩,JDK5.0給我們帶來更多方便與安全。

    //Code list 7
    public void autoBoxingUnboxing(int i) {
     ArrayList<Integer> L= new ArrayList<Integer>();
     L.add(i);
     int a = L.get(0);
     System.out.println("The value of i is " + a);
    }

      2.3 限制泛型中類型參數(shù)的范圍

      也許你已經(jīng)發(fā)現(xiàn)在code list 1中的TestGen<K,V>這個泛型類,其中K,V可以是任意的型別。也許你有時候呢想限定一下K和V當然范圍,怎么做呢?看看如下的代碼:

    //Code list 8
    class TestGen2<K extents String,V extends Number>
    {
     private V v=null;
     private K k=null;
     public void setV(V v){
      this.v=v;
     }
     public V getV(){
      return this.v;
     }
     public void setK(K k){
      this.k=k;
     }
     public V getK(){
      return this.k;
     }
     public static void main(String[] args)
     {
      TestGen2<String,Integer> t2=new TestGen2<String,Integer>();
      t2.setK(new String("String"));
      t2.setV(new Integer(123));
      System.out.println(t2.getK());
      System.out.println(t2.getV());
     }
    }

      上邊K的范圍是<=String ,V的范圍是<=Number,注意是“<=”,對于K可以是String的,V當然也可以是Number,也可以是Integer,Float,Double,Byte等。看看下圖也許能直觀些請看上圖A是上圖類中的基類,A1,A2分別是A的子類,A2有2個子類分別是A2_1,A2_2。

      然后我們定義一個受限的泛型類class MyGen<E extends A2>,這個泛型的范圍就是上圖中蘭色部分。

      這個是單一的限制,你也可以對型別多重限制,如下:

    class C<T extends Comparable<? super T> & Serializable>

      我們來分析以下這句,T extends Comparable這個是對上限的限制,Comparable< super T>這個是下限的限制,Serializable是第2個上限。一個指定的類型參數(shù)可以具有一個或多個上限。具有多重限制的類型參數(shù)可以用于訪問它的每個限制的方法和域。

      2.4. 多態(tài)方法

    //Code list 9
    class TestGen {
    ?。糡 extends Object> public static List<T> make(T first) {
      return new List<T>(first);
     }
    }

    posted @ 2007-05-13 10:19 JavaSuns 閱讀(477) | 評論 (0)編輯 收藏

    候捷談Java反射機制[分享]

         摘要: 摘要 Reflection 是Java被視為動態(tài)(或準動態(tài))語言的一個關(guān)鍵性質(zhì)。這個機制允許程序在運行時透過Reflection APIs取得任何一個已知名稱的class的內(nèi)部信息,包括其modifiers(諸如public, static 等等)、superclass(例如Object)、實現(xiàn)之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于...  閱讀全文

    posted @ 2007-05-12 18:27 JavaSuns 閱讀(603) | 評論 (0)編輯 收藏

    將一個Web應(yīng)用打包成war文件

    首先它需要一個裝箱單,把你的所有資源文件包括html,img文件還有WEB-INF文件夾等等。然后在這個文件夾內(nèi)建一個新的文件夾META-INF。在META-INF文件夾內(nèi)建一個txt文件,輸入Manifest-Version: 1.0并保存為MANIFEST.MF。然后將你這個文件夾壓,注意壓成zip格式。完成后將后綴名改為war就可以了。
    你也可以通過相關(guān)工具打包,比如JBuilder。
    關(guān)于Tomcat發(fā)布和普通的web發(fā)布一樣。

    嘗試上面方法沒成功
    我把jar.exeCOPY到目錄裡用下面方法可以了,

    (1):打包war :進入 工程 應(yīng)用的根目錄, 

    比如: <CATALINA_HOME>/webapps/myjspweb ;

    (2)把整個 web 應(yīng)用打包為 myjspwar.war 文件,命令如下: jar cvf myjspweb.war  *.*

    (3):解包: jar xvf helloapp.war


    posted @ 2007-05-03 11:47 JavaSuns 閱讀(4776) | 評論 (2)編輯 收藏

    JS函數(shù)集合大全(轉(zhuǎn)載)

    1.document.write(""); 輸出語句
    2.JS中的注釋為//
    3.傳統(tǒng)的HTML文檔順序是:document->html->(head,body)
    4.一個瀏覽器窗口中的DOM順序是:window->(navigator,screen,history,location,document)
    5.得到表單中元素的名稱和值:document.getElementById("表單中元素的ID號").name(或value)
    6.一個小寫轉(zhuǎn)大寫的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase();
    7.JS中的值類型:String,Number,Boolean,Null,Object,Function
    8.JS中的字符型轉(zhuǎn)換成數(shù)值型:parseInt(),parseFloat()
    9.JS中的數(shù)字轉(zhuǎn)換成字符型:(""+變量)
    10.JS中的取字符串長度是:(length)
    11.JS中的字符與字符相連接使用+號.
    12.JS中的比較操作符有:==等于,!=不等于,>,>=,<.<=
    13.JS中聲明變量使用:var來進行聲明
    14.JS中的判斷語句結(jié)構(gòu):if(condition){}else{}
    15.JS中的循環(huán)結(jié)構(gòu):for([initial expression];[condition];[upadte expression]) {inside loop}
    16.循環(huán)中止的命令是:break
    17.JS中的函數(shù)定義:function functionName([parameter],...){statement[s]}
    18.當文件中出現(xiàn)多個form表單時.可以用document.forms[0],document.forms[1]來代替.
    19.窗口:打開窗口window.open(), 關(guān)閉一個窗口:window.close(), 窗口本身:self
    20.狀態(tài)欄的設(shè)置:window.status="字符";
    21.彈出提示信息:window.alert("字符");
    22.彈出確認框:window.confirm();
    23.彈出輸入提示框:window.prompt();
    24.指定當前顯示鏈接的位置:window.location.href="URL"
    25.取出窗體中的所有表單的數(shù)量:document.forms.length
    26.關(guān)閉文檔的輸出流:document.close();
    27.字符串追加連接符:+=
    28.創(chuàng)建一個文檔元素:document.createElement(),document.createTextNode()
    29.得到元素的方法:document.getElementById()
    30.設(shè)置表單中所有文本型的成員的值為空:
    var form = window.document.forms[0]
    for (var i = 0; i<form.elements.length;i++){
          if (form.elements[i].type == "text"){
              form.elements[i].value = "";
          }
    }
    31.復(fù)選按鈕在JS中判斷是否選中:document.forms[0].checkThis.checked (checked屬性代表為是否選中返回TRUE或FALSE)
    32.單選按鈕組(單選按鈕的名稱必須相同):取單選按鈕組的長度document.forms[0].groupName.length
    33.單選按鈕組判斷是否被選中也是用checked.
    34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有時用下拉列表框名稱加上.selectedIndex來確定被選中的值)
    35.字符串的定義:var myString = new String("This is lightsword");
    36.字符串轉(zhuǎn)成大寫:string.toUpperCase(); 字符串轉(zhuǎn)成小寫:string.toLowerCase();
    37.返回字符串2在字符串1中出現(xiàn)的位置:String1.indexOf("String2")!=-1則說明沒找到.
    38.取字符串中指定位置的一個字符:StringA.charAt(9);
    39.取出字符串中指定起點和終點的子字符串:stringA.substring(2,6);
    40.數(shù)學(xué)函數(shù):Math.PI(返回圓周率),Math.SQRT2(返回開方),Math.max(value1,value2)返回兩個數(shù)中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函數(shù),Math.floor(Math.random()*(n+1))返回隨機數(shù)
    41.定義日期型變量:var today = new Date();
    42.日期函數(shù)列表:dateObj.getTime()得到時間,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期幾,dateObj.getHours()得到小時,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)設(shè)置時間,dateObj.setYear(val)設(shè)置年,dateObj.setMonth(val)設(shè)置月,dateObj.setDate(val)設(shè)置日,dateObj.setDay(val)設(shè)置星期幾,dateObj.setHours設(shè)置小時,dateObj.setMinutes(val)設(shè)置分,dateObj.setSeconds(val)設(shè)置秒   [注意:此日期時間從0開始計]
    43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarName,frameName.ObjFuncVarName
    44.parent代表父親對象,top代表最頂端對象
    45.打開子窗口的父窗口為:opener
    46.表示當前所屬的位置:this
    47.當在超鏈接中調(diào)用JS函數(shù)時用:(Javascript:)來開頭后面加函數(shù)名
    48.在老的瀏覽器中不執(zhí)行此JS:<!--       //-->
    49.引用一個文件式的JS:<script type="text/Javascript" src="aaa.js"></script>
    50.指定在不支持腳本的瀏覽器顯示的HTML:<noscript></noscript>
    51.當超鏈和ONCLICK事件都有時,則老版本的瀏覽器轉(zhuǎn)向a.html,否則轉(zhuǎn)向b.html.例:<a href="a.html" onclick="location.href='b.html';return false">dfsadf</a>
    52.JS的內(nèi)建對象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError
    53.JS中的換行:\n
    54.窗口全屏大小:<script>function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}window.maximize=fullScreen;</script>
    55.JS中的all代表其下層的全部元素

    56.JS中的焦點順序:document.getElementByid("表單元素").tabIndex = 1
    57.innerHTML的值是表單元素的值:如<p id="para">"how are <em>you</em>"</p>,則innerHTML的值就是:how are <em>you</em>
    58.innerTEXT的值和上面的一樣,只不過不會把<em>這種標記顯示出來.
    59.contentEditable可設(shè)置元素是否可被修改,isContentEditable返回是否可修改的狀態(tài).
    60.isDisabled判斷是否為禁止狀態(tài).disabled設(shè)置禁止狀態(tài)
    61.length取得長度,返回整型數(shù)值
    62.addBehavior()是一種JS調(diào)用的外部函數(shù)文件其擴展名為.htc
    63.window.focus()使當前的窗口在所有窗口之前.
    64.blur()指失去焦點.與FOCUS()相反.
    65.select()指元素為選中狀態(tài).
    66.防止用戶對文本框中輸入文本:onfocus="this.blur()"
    67.取出該元素在頁面中出現(xiàn)的數(shù)量:document.all.tags("div(或其它HTML標記符)").length
    68.JS中分為兩種窗體輸出:模態(tài)和非模態(tài).window.showModaldialog(),window.showModeless()
    69.狀態(tài)欄文字的設(shè)置:window.status='文字',默認的狀態(tài)欄文字設(shè)置:window.defaultStatus = '文字.';
    70.添加到收藏夾:external.AddFavorite("
    http://www.xrss.cn","jaskdlf");
    71.JS中遇到腳本錯誤時不做任何操作:window.onerror = doNothing; 指定錯誤句柄的語法為:window.onerror = handleError;
    72.JS中指定當前打開窗口的父窗口:window.opener,支持opener.opener...的多重繼續(xù).
    73.JS中的self指的是當前的窗口
    74.JS中狀態(tài)欄顯示內(nèi)容:window.status="內(nèi)容"
    75.JS中的top指的是框架集中最頂層的框架
    76.JS中關(guān)閉當前的窗口:window.close();
    77.JS中提出是否確認的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}
    78.JS中的窗口重定向:window.navigate("
    http://www.sina.com.cn");
    79.JS中的打印:window.print()
    80.JS中的提示輸入框:window.prompt("message","defaultReply");
    81.JS中的窗口滾動條:window.scroll(x,y)
    82.JS中的窗口滾動到位置:window.scrollby
    83.JS中設(shè)置時間間隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout
    84.JS中的模態(tài)顯示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);
    85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and hope you will stay longer.";}}   window.onbeforeunload=verifyClose;
    86.當窗體第一次調(diào)用時使用的文件句柄:onload()
    87.當窗體關(guān)閉時調(diào)用的文件句柄:onunload()
    88.window.location的屬性: protocol(http:),hostname(
    www.example.com),port(80),host(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳轉(zhuǎn)到相應(yīng)的錨記),href(全部的信息)
    89.window.location.reload()刷新當前頁面.
    89-1.parent.location.reload()刷新父親對象(用于框架)
    89-2.opener.location.reload()刷新父窗口對象(用于單開窗口)
    89-3.top.location.reload()刷新最頂端對象(用于多開窗口)
    90.window.history.back()返回上一頁,window.history.forward()返回下一頁,window.history.go(返回第幾頁,也可以使用訪問過的URL)
    91.document.write()不換行的輸出,document.writeln()換行輸出
    92.document.body.noWrap=true;防止鏈接文字折行.
    93.變量名.charAt(第幾位),取該變量的第幾位的字符.
    94."abc".charCodeAt(第幾個),返回第幾個字符的ASCii碼值.
    95.字符串連接:string.concat(string2),或用+=進行連接
    96.變量.indexOf("字符",起始位置),返回第一個出現(xiàn)的位置(從0開始計算)
    97.string.lastIndexOf(searchString[,startIndex])最后一次出現(xiàn)的位置.
    98.string.match(regExpression),判斷字符是否匹配.
    99.string.replace(regExpression,replaceString)替換現(xiàn)有字符串.
    100.string.split(分隔符)返回一個數(shù)組存儲值.
    101.string.substr(start[,length])取從第幾位到指定長度的字符串.
    102.string.toLowerCase()使字符串全部變?yōu)樾?
    103.string.toUpperCase()使全部字符變?yōu)榇髮?
    104.parseInt(string[,radix(代表進制)])強制轉(zhuǎn)換成整型.
    105.parseFloat(string[,radix])強制轉(zhuǎn)換成浮點型.
    106.isNaN(變量):測試是否為數(shù)值型.
    107.定義常量的關(guān)鍵字:const,定義變量的關(guān)鍵字:var

    posted @ 2007-04-20 09:07 JavaSuns 閱讀(1231) | 評論 (0)編輯 收藏

    在JSP頁面用JS增加TABLE行及刪除行

    <button onClick="add()">add</button>
    <button onClick="del()">del</button>
    <button onClick="test()">test</button>
    <table id="t1" border="1"></table>
    <script language="JavaScript">
    var n=0;
    function add(){
    n++;
    t1.insertRow().insertCell().innerHTML = '<input type="radio" name="tt"><input name="test'+n+'"><button onclick="deleteRow(this)">delthis</button>';
    //t1.insertRow().insertCell().innerHTML = '<input type="radio" name="tt"><input name="test'+t1.rows.length+'">';
    }
    function del(){
     var c = document.getElementsByName('tt');
     for(var i=0; i<c.length; i++)
     if(c[i].checked)
     t1.deleteRow(i);
    }
    function deleteRow(obj){
     alert(obj.parentElement.parentElement.parentElement.parentElement.id);
     alert(obj.parentElement.parentElement.rowIndex);
    //t1.deleteRow(obj.parentElement.parentElement.rowIndex);
    }
    function test(){
    for(i=0;i<t1.rows.length;i++) alert(t1.rows[i].cells[0].innerHTML);
    }
    </SCRIPT>

     

    <html>
    <body>
    <form id="myForm">
    <table id="table1">
     <tr id="tr1">
      <td id="td1">
    <input id="myButton"
           type="button" value="Show my parent" onclick="function1();">
          </td>
        </tr>
      </table>
    </form>
    <script language="JavaScript">
        function function1() {
            var m = document.all.myButton.parentElement.parentElement.parentElement.parentElement.id;
            alert("Parent element: <FORM>, ID = "+'"'+m+'"');
        }
    </script>
    cloneNode()方法克隆表格:
    <input type=button value=clone name=ok onclick=add()>
    <table border=1>
    <tr id=a1 name=a1>
    <td><input></td><td><input></td>
    </tr>
    </table>
    <script language=JavaScript>
    i=1
    function add(){
    ++i;
    var newTR = a1.cloneNode(true);
    newTR.id="a"+i;
    newTR.name="a"+i;
    a1.parentNode.insertAdjacentElement("beforeEnd",newTR);
    //alert(a1.parentElement.innerHTML);
    }
    </script>

    appendChild() & removeChild()方法:(firefox only)
    <div id="oTest">1234 </div>
    <button onclick="oT=document.getElementById('oTest');oS=document.createElement('span');oS.textContent='1234 ';oT.appendChild(oS)">append +</button><button onclick="oT=document.getElementById('oTest');oT.removeChild(oT.lastChild)">remove -</button>

    posted @ 2007-04-16 16:17 JavaSuns 閱讀(3510) | 評論 (0)編輯 收藏

    compareTo 的使用



    public int compareTo(String anotherString)

    按字典順序比較兩個字符串。該比較基于字符串中各個字符的 Unicode 值。將此 String 對象表示的字符序列與參數(shù)字符串所表示的字符序列進行比較。如果按字典順序此 String 對象在參數(shù)字符串之前,則比較結(jié)果為一個負整數(shù)。如果按字典順序此 String 對象位于參數(shù)字符串之后,則比較結(jié)果為一個正整數(shù)。如果這兩個字符串相等,則結(jié)果為 0;compareTo 只有在方法 equals(Object) 返回 true 時才返回 0。

    這是字典排序的定義。如果這兩個字符串不同,則要么它們在某個索引處具有不同的字符,該索引對二者均為有效索引,要么它們的長度不同,或者同時具備上述兩種情況。如果它們在一個或多個索引位置上具有不同的字符,假設(shè) k 是這類索引的最小值;則按照 < 運算符確定的那個字符串在位置 k 上具有較小的值,其字典順序在其他字符串之前。這種情況下,compareTo 返回這兩個字符串在位置 k 處的兩個不同的 char 值,即值:

    this.charAt(k)-anotherString.charAt(k)


    如果它們沒有不同的索引位置,則較短字符串在字典順序上位于較長字符串的前面。這種情況下,compareTo 返回這兩個字符串長度的不同,即值:

    this.length()-anotherString.length()


    指定者:
    接口 Comparable<String> 中的 compareTo

    參數(shù):
    anotherString - 要比較的 String。
    返回:
    如果參數(shù)字符串等于此字符串,則返回 0 值;如果按字典順序此字符串小于字符串參數(shù),則返回一個小于 0 的值;如果按字典順序此字符串大于字符串參數(shù),則返回一個大于 0 的值。


    http://gceclub.sun.com.cn/download/Java_Docs/html/zh_CN/api/index.html
    這個是jdk中文文檔

    posted @ 2007-04-04 11:57 JavaSuns 閱讀(17243) | 評論 (2)編輯 收藏

    一些常用的方法

    //字符串初始化
    public String toString(String str){
     if(str == null){
      str = "";
     }
     if(str.equals("null")){
      str = "";
     }
     str = str.trim();
     return str;
    }
    //編碼轉(zhuǎn)換
    public String toGBK(String str){
     try{
      if(str == null){
       str = "";
      }else{
       str = new String(str.getBytes("ISO-8859-1"),"GBK");
      }
     }catch(Exception e){
      System.out.println("DealString::toGBK(String)運行時出錯:"+e;
     }
    }
    //UTF轉(zhuǎn)換
    public String to Utf8String(String src){
     byte[] b = src.getBytes();
     char[] c = new char[b.length];
     for(int i = 0; i < b.length; i++){
      c[i] = (char)(b[i]&0x00FF);
     }
     return new String(c);
    }
    //字符分隔
    public String[] splitStr(String str,char c){
     str += c;
     int n = 0;
     for(int i = 0; i < str.length();i++){
      if(str.charAt(i) == c){
       n ++;
      }
     }
     String out[] = new String[n];
     for(int i = 0; i < n; i++){
      int index = str.indexOf(c);
      out[i] = str.substring(0,index);
      str = str.substring(index+1),str.length());
     }
     return out;
    }
    //取得系統(tǒng)時間
    public String getDateTime(){
     java.text.SimpleDateFormat f = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     String time = f.format(new java.util.Date());
     return time;
    }
    //字符串替換
    public String Replace(String source,String oldString,String newString){
     StringBuffer output = new StringBuffer();
     int lengthOfSource = source.length();
     int lengthOfOld = oldString.length();
     int posStart = 0;
     int pos;
     
     while((pos = source.indexOf(oldString,posStart)) >= 0){
      output.append(source.substring(posStart,pos));
      output.append(newString);
      posStart = pos + lengthOfOld;
     }
     if(posStart < lengthOfSource){
      output.append(source.substring(posStart));
     }
     return output.toString();
    }

    //日期之差
    public long getDaysInterval(Date d1,Date d2){
     return (d2.getTime() - d1.getTime())/86400000;
    }
    //字符串右格式化
    public String toLengthStr(String instr,int len){
     int n = instr.length();
     for(int i = 0; i < (len - n); i++){
      instr = " " + instr;
     }
     return instr;
    }
    //字符串左格式化
    public String toLengthStr(String instr,int len){
     int n = instr.length();
     for(int i = 0; i < (len - n); i++){
      instr = instr + " ";
     }
     return instr;
    }
    //字符串位長度
    public int byteLength(String str){
     return ((str.getBytes()).length);
    }
    //字符串位截取
    public String strByteCopy(String str,int nEnd){
     if(nEnd == 0){
      return "";
     }
     byte[] byteStr = str.getBytes();
     int k = byteStr.length;
     String strSub = new String(byteStr,0,End<k?nEnd:k)
     if(strSub.length() == 0){
      strSub = new String(byteStr,0,nEnd-1);
     }
     return strSub;
    }

    posted @ 2007-04-03 11:39 JavaSuns 閱讀(1081) | 評論 (1)編輯 收藏

    ajax學(xué)習(xí)(轉(zhuǎn)發(fā))

         摘要: 理論上說 ,Ajax 由 HTML 、 JavaScript ? 技術(shù)、 DHTML 和 DOM 組成 . ? ...  閱讀全文

    posted @ 2007-03-06 09:32 JavaSuns 閱讀(1010) | 評論 (0)編輯 收藏

    AJAX基礎(chǔ)教程

    什么是 AJAX?

      AJAX (異步 JavaScript 和 XML) 是個新產(chǎn)生的術(shù)語,專為描述JavaScript的兩項強大性能.這兩項性能在多年來一直被網(wǎng)絡(luò)開發(fā)者所忽略,直到最近Gmail, Google suggest和google Maps的橫空出世才使人們開始意識到其重要性.

      這兩項被忽視的性能是:

    ???  * 無需重新裝載整個頁面便能向服務(wù)器發(fā)送請求.
    ???  * 對XML文檔的解析和處理.

      步驟 1 – "請!" --- 如何發(fā)送一個HTTP請求

      為了用JavaScript向服務(wù)器發(fā)送一個HTTP請求, 需要一個具備這種功能的類實例.

    這樣的類首先由Internet Explorer以ActiveX對象引入, 被稱為XMLHTTP. 后來Mozilla, Safari 和其他

    瀏覽器紛紛仿效, 提供了XMLHttpRequest類,它支持微軟的ActiveX對象所提供的方法和屬性.

      因此, 為了創(chuàng)建一個跨瀏覽器的這樣的類實例(對象), 可以應(yīng)用如下代碼:

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    ??? http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
    ??? http_request = new ActiveXObject("Microsoft.XMLHTTP");
    }

      (上例對代碼做了一定簡化,這是為了解釋如何創(chuàng)建XMLHTTP類實例.

    實際的代碼實例可參閱本篇步驟3.)

      如果服務(wù)器的響應(yīng)沒有XML mime-type header,某些Mozilla瀏覽器可能無法正常工作. 為了解決這個

    問題, 如果服務(wù)器響應(yīng)的header不是text/xml,可以調(diào)用其它方法修改該header.

    http_request = new XMLHttpRequest();
    http_request.overrideMimeType('text/xml');

      接下來要決定當收到服務(wù)器的響應(yīng)后,需要做什么.這需要告訴HTTP請求對象用哪一個JavaScript函數(shù)

    處理這個響應(yīng).可以將對象的onreadystatechange屬性設(shè)置為要使用的JavaScript的函數(shù)名,如下所示:

    http_request.onreadystatechange = nameOfTheFunction;

      注意:在函數(shù)名后沒有括號,也無需傳遞參數(shù).另外還有一種方法,可以在扉頁(fly)中定義函數(shù)及其對

    響應(yīng)要采取的行為,如下所示:

    http_request.onreadystatechange = function(){
    ??? // do the thing
    };

      在定義了如何處理響應(yīng)后,就要發(fā)送請求了.可以調(diào)用HTTP請求類的open()和send()方法, 如下所示:

    http_request.open('GET', 'http://www.example.org/some.file', true);
    http_request.send(null);

    ???  * open()的第一個參數(shù)是HTTP請求方式 – GET, POST, HEAD 或任何服務(wù)器所支持的您想調(diào)用的方式

    . 按照HTTP規(guī)范,該參數(shù)要大寫;否則,某些瀏覽器(如Firefox)可能無法處理請求.有關(guān)HTTP請求方法的詳

    細信息可參考http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html W3C specs
    ???  * 第二個參數(shù)是請求頁面的URL.由于自身安全特性的限制,該頁面不能為第三方域名的頁面.同時一定

    要保證在所有的頁面中都使用準確的域名,否則調(diào)用open()會得到"permission denied"的錯誤提示.一個

    常見的錯誤是訪問站點時使用domain.tld,而當請求頁面時,卻使用www.domain.tld.
    ???  * 第三個參數(shù)設(shè)置請求是否為異步模式.如果是TRUE, JavaScript函數(shù)將繼續(xù)執(zhí)行,而不等待服務(wù)器響

    應(yīng).這就是"AJAX"中的"A".

      如果第一個參數(shù)是"POST",send()方法的參數(shù)可以是任何想送給服務(wù)器的數(shù)據(jù). 這時數(shù)據(jù)要以字符串

    的形式送給服務(wù)器,如下所示:

    name=value&anothername=othervalue&so=on

      步驟 2 – "收到!" --- 處理服務(wù)器的響應(yīng)

      當發(fā)送請求時,要提供指定處理響應(yīng)的JavaScript函數(shù)名.

    http_request.onreadystatechange = nameOfTheFunction;

      我們來看看這個函數(shù)的功能是什么.首先函數(shù)會檢查請求的狀態(tài).如果狀態(tài)值是4,就意味著一個完整的

    服務(wù)器響應(yīng)已經(jīng)收到了,您將可以處理該響應(yīng).

    if (http_request.readyState == 4) {
    ??? // everything is good, the response is received
    } else {
    ??? // still not ready
    }

      readyState的取值如下:

    ??? * 0 (未初始化)
    ??? * 1 (正在裝載)
    ??? * 2 (裝載完畢)
    ??? * 3 (交互中)
    ??? * 4 (完成)

    (Source)

      接著,函數(shù)會檢查HTTP服務(wù)器響應(yīng)的狀態(tài)值. 完整的狀態(tài)取值可參見 W3C site. 我們著重看值為200

    OK的響應(yīng).

    if (http_request.status == 200) {
    ??? // perfect!
    } else {
    ??? // there was a problem with the request,
    ??? // for example the response may be a 404 (Not Found)
    ??? // or 500 (Internal Server Error) response codes
    }

      在檢查完請求的狀態(tài)值和響應(yīng)的HTTP狀態(tài)值后, 您就可以處理從服務(wù)器得到的數(shù)據(jù)了.有兩種方式可

    以得到這些數(shù)據(jù):

    ??? * http_request.responseText – 以文本字符串的方式返回服務(wù)器的響應(yīng)
    ??? * http_request.responseXML –

    以XMLDocument對象方式返回響應(yīng).處理XMLDocument對象可以用JavaScript DOM函數(shù)

      步驟 3 – "萬事俱備!" - 簡單實例

      我們現(xiàn)在將整個過程完整地做一次,發(fā)送一個簡單的HTTP請求. 我們用JavaScript請求一個HTML文件,

    test.html, 文件的文本內(nèi)容為"I'm a test.".然后我們"alert()"test.html文件的內(nèi)容.



    ??? style="cursor: pointer; text-decoration: underline"
    ??? onclick="makeRequest('test.html')">
    ??????? Make a request


      本例中:

    ??? * 用戶點擊瀏覽器上的"請求"鏈接;
    ??? * 接著函數(shù)makeRequest()將被調(diào)用.其參數(shù) – HTML文件test.html在同一目錄下;
    ??? * 這樣就發(fā)起了一個請求.onreadystatechange的執(zhí)行結(jié)果會被傳送給alertContents();
    ??? * alertContents()將檢查服務(wù)器的響應(yīng)是否成功地收到,如果是,就會"alert()"test.html文件的內(nèi)

    容.

      步驟 4 – "X-文檔" --- 處理XML響應(yīng)

      在前面的例子中,當服務(wù)器對HTTP請求的響應(yīng)被收到后,我們會調(diào)用請求對象的reponseText屬性.該屬

    性包含了test.html文件的內(nèi)容.現(xiàn)在我們來試試responseXML屬性.

      首先,我們新建一個有效的XML文件,后面我們將使用這個文件.該文件(test.xml)源代碼如下所示:



    ??? I'm a test.


      在該腳本中,我們只需修改請求部分:

    ...
    onclick="makeRequest('test.xml')">
    ...

      接著,在alertContents()中,我們將alert()的代碼alert(http_request.responseText);換成:

    var xmldoc = http_request.responseXML;
    var root_node = xmldoc.getElementsByTagName('root').item(0);
    alert(root_node.firstChild.data);

      這里,我們使用了responseXML提供的XMLDocument對象并用DOM方法獲取存于XML文件中的內(nèi)容.

    posted @ 2007-01-02 16:59 JavaSuns 閱讀(273) | 評論 (0)編輯 收藏

    僅列出標題
    共5頁: 上一頁 1 2 3 4 5 下一頁 
    主站蜘蛛池模板: 久久久受www免费人成| 免费观看成人毛片a片2008| 亚洲人成77777在线观看网| 国产精品久久久久免费a∨| 一个人看的免费观看日本视频www| 亚洲一区二区三区精品视频| 亚洲情XO亚洲色XO无码| 亚洲毛片av日韩av无码 | 亚洲老妈激情一区二区三区| 日韩视频免费一区二区三区| 亚洲视频在线免费看| 久久国产乱子免费精品| 少妇性饥渴无码A区免费 | 亚洲日韩国产成网在线观看| 午夜a级成人免费毛片| 免费电影在线观看网站| 国产精品色拉拉免费看| 久久国产乱子伦免费精品| 国产无遮挡无码视频免费软件| 精品国产污污免费网站入口| 亚洲AV网一区二区三区| 性色av极品无码专区亚洲| 亚洲av无码专区国产不乱码| 亚洲性无码一区二区三区| 亚洲精品午夜国产va久久| 亚洲w码欧洲s码免费| 亚洲免费电影网站| 国产成人精品日本亚洲11| 亚洲一欧洲中文字幕在线| 亚洲av无码电影网| 亚洲综合国产成人丁香五月激情 | 无码人妻一区二区三区免费看 | 中文字幕精品无码亚洲字| 亚洲一级特黄大片在线观看| 免费大学生国产在线观看p| 国产精品免费电影| 亚洲成人一区二区| 国产偷窥女洗浴在线观看亚洲| 国产中文在线亚洲精品官网| 自拍偷自拍亚洲精品被多人伦好爽 | 久久久亚洲精品蜜桃臀|