Sunspl

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

          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>
          取得虛擬目錄對應的磁盤路徑<br>
          Web站點主目錄的位置為<font color=#ff0000><%=request.getRealPath("/")%></font><br>
          JSP網頁所在的目錄位置<font color=#ff0000><%=request.getRealPath("./")%></font><br>
          JSP網頁所在目錄上一層目錄的位置<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對象數組
          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)//判斷是否已讀到文件的結尾
          {
          out.print("AtEnd.txt文件中沒有數據<br>");
          }else{
          out.println("AtEnd.txt文件中有數據");
          }
          fr.close();
          %>
          </body>
          </html>


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


          一行一行讀取數據
          <%@ 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>");//輸出從文件中讀取的數據
          Line=br.readLine();//從文件中繼續讀取一行數據
          }
          br.close();//關閉BufferedReader對象
          fr.close();//關閉文件
          %>
          </body>
          </html>


          略過文件中的字符不讀取
          <%@ 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 + "\\ReadData.txt");
          fr.skip(2);//跳過2個字節
          int c=fr.read();//讀取一個字節
          while(c!=-1){
          out.print((char)c);
          c=fr.read();
          }
          fr.close();
          %>
          </body>
          </html>


          將數據寫入文件
          <%@ page contentType="text/html;charset=gb2312"%>
          <%@ page import="java.io.*"%>
          <html>
          <head>
          <title>將數據寫入文件</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();
          //讀取一行數據
          out.println(Line + "<br>");
          br.close();//關閉BufferedReader對象
          fr.close();
          %>
          </body>
          </html>


          將寫入文件的數據分行
          <%@ page contentType="text/html;charset=gb2312"%>
          <%@ page import="java.io.*"%>
          <html>
          <head>
          <title>將寫入文件的數據分行</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();//將數據更新至文件
          fw.close();//關閉文件流
          out.println("寫入文件內容為:<br>");
          FileReader fr=new FileReader(path + "\\WriteData.txt");
          BufferedReader br=new BufferedReader(fr);
          String Line=br.readLine();//讀取一行數據
          while(Line!=null){
          out.println(Line + "<br>");
          Line=br.readLine();
          }
          fr.close();
          %>
          </body>
          </html>
          如何將數據追加寫入到文件
          <%@ page contentType="text/html;charset=gb2312"%>
          <%@ page import="java.io.*"%>
          <html>
          <head>
          <title>將寫入文件的數據分行</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();//關閉文件流
          out.println("寫入文件內容為:<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();//關閉文件
          %>
          </body>
          </html></I></I></I></I>

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

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

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

            1、Java泛型

            其實Java的泛型就是創建一個用類型作為參數的類。就象我們寫類的方法一樣,方法是這樣的method(String str1,String str2 ),方法中參數str1、str2的值是可變的。而泛型也是一樣的,這樣寫class Java_Generics<K,V>,這里邊的K和V就象方法中的參數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遍事.),不過看看是不是創建一個用類型作為參數的類,參數是K,V,傳入的“值”是String類型。這個類他沒有特定的待處理型別,以前我們定義好了一個類,在輸入輸入參數有所固定,是什么型別的有要求,但是現在編寫程序,完全可以不制定參數的類型,具體用的時候來確定,增加了程序的通用性,像是一個模板

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

            1.1. 泛型通配符

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

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

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

            接著我們調用它,問題就出現了,我們將一個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的關系,就是說List<String>不隸屬于list<Object>,他們不是繼承關系,所以是不行的,這里的extends是表示限制的。

            類型通配符是很神奇的,List<?>這個你能為他做什么呢?怎么都是“?”,它似乎不確定,他總不能返回一個?作為類型的數據吧,是啊他是不會返回一個“?”來問程序員的?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) 在定義一個泛型類的時候,在 “<>”之間定義形式類型參數,例如:“class TestGen<K,V>”,其中“K” , “V”不代表值,而是表示類型。

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

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

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

            2.1. 消除類型轉換

            上面的例子大家看到什么了,數據類型轉換的代碼不見了。在以前我們經常要書寫以下代碼,如:

          //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);
           }
          }

            這個我們做了類型轉換,是不是感覺很煩的,并且強制類型轉換會帶來潛在的危險,系統可能會拋一個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,這樣就不用我們來編寫類型轉換的代碼了,類型轉換的過程交給編譯器來處理,是不是很方便,而且很安全。上面是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之前我們只能忍著了,現在這種問題已經解決了,請看下面這個方法。我們傳入一個int這一基本型別,然后再將i的值直接添加到List中,其實List是不能儲存基本型別的,List中應該存儲對象,這里編譯器將int包裝成Integer,然后添加到List中去。接著我們用List.get(0);來檢索數據,并返回對象再將對象解包裝成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 限制泛型中類型參數的范圍

            也許你已經發現在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個上限。一個指定的類型參數可以具有一個或多個上限。具有多重限制的類型參數可以用于訪問它的每個限制的方法和域。

            2.4. 多態方法

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

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

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

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

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

          將一個Web應用打包成war文件

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

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

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

          比如: <CATALINA_HOME>/webapps/myjspweb

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

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


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

          JS函數集合大全(轉載)

          1.document.write(""); 輸出語句
          2.JS中的注釋為//
          3.傳統的HTML文檔順序是:document->html->(head,body)
          4.一個瀏覽器窗口中的DOM順序是:window->(navigator,screen,history,location,document)
          5.得到表單中元素的名稱和值:document.getElementById("表單中元素的ID號").name(或value)
          6.一個小寫轉大寫的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase();
          7.JS中的值類型:String,Number,Boolean,Null,Object,Function
          8.JS中的字符型轉換成數值型:parseInt(),parseFloat()
          9.JS中的數字轉換成字符型:(""+變量)
          10.JS中的取字符串長度是:(length)
          11.JS中的字符與字符相連接使用+號.
          12.JS中的比較操作符有:==等于,!=不等于,>,>=,<.<=
          13.JS中聲明變量使用:var來進行聲明
          14.JS中的判斷語句結構:if(condition){}else{}
          15.JS中的循環結構:for([initial expression];[condition];[upadte expression]) {inside loop}
          16.循環中止的命令是:break
          17.JS中的函數定義:function functionName([parameter],...){statement[s]}
          18.當文件中出現多個form表單時.可以用document.forms[0],document.forms[1]來代替.
          19.窗口:打開窗口window.open(), 關閉一個窗口:window.close(), 窗口本身:self
          20.狀態欄的設置:window.status="字符";
          21.彈出提示信息:window.alert("字符");
          22.彈出確認框:window.confirm();
          23.彈出輸入提示框:window.prompt();
          24.指定當前顯示鏈接的位置:window.location.href="URL"
          25.取出窗體中的所有表單的數量:document.forms.length
          26.關閉文檔的輸出流:document.close();
          27.字符串追加連接符:+=
          28.創建一個文檔元素:document.createElement(),document.createTextNode()
          29.得到元素的方法:document.getElementById()
          30.設置表單中所有文本型的成員的值為空:
          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.復選按鈕在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.字符串轉成大寫:string.toUpperCase(); 字符串轉成小寫:string.toLowerCase();
          37.返回字符串2在字符串1中出現的位置:String1.indexOf("String2")!=-1則說明沒找到.
          38.取字符串中指定位置的一個字符:StringA.charAt(9);
          39.取出字符串中指定起點和終點的子字符串:stringA.substring(2,6);
          40.數學函數:Math.PI(返回圓周率),Math.SQRT2(返回開方),Math.max(value1,value2)返回兩個數中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函數,Math.floor(Math.random()*(n+1))返回隨機數
          41.定義日期型變量:var today = new Date();
          42.日期函數列表:dateObj.getTime()得到時間,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期幾,dateObj.getHours()得到小時,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)設置時間,dateObj.setYear(val)設置年,dateObj.setMonth(val)設置月,dateObj.setDate(val)設置日,dateObj.setDay(val)設置星期幾,dateObj.setHours設置小時,dateObj.setMinutes(val)設置分,dateObj.setSeconds(val)設置秒   [注意:此日期時間從0開始計]
          43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarName,frameName.ObjFuncVarName
          44.parent代表父親對象,top代表最頂端對象
          45.打開子窗口的父窗口為:opener
          46.表示當前所屬的位置:this
          47.當在超鏈接中調用JS函數時用:(Javascript:)來開頭后面加函數名
          48.在老的瀏覽器中不執行此JS:<!--       //-->
          49.引用一個文件式的JS:<script type="text/Javascript" src="aaa.js"></script>
          50.指定在不支持腳本的瀏覽器顯示的HTML:<noscript></noscript>
          51.當超鏈和ONCLICK事件都有時,則老版本的瀏覽器轉向a.html,否則轉向b.html.例:<a href="a.html" onclick="location.href='b.html';return false">dfsadf</a>
          52.JS的內建對象有: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可設置元素是否可被修改,isContentEditable返回是否可修改的狀態.
          60.isDisabled判斷是否為禁止狀態.disabled設置禁止狀態
          61.length取得長度,返回整型數值
          62.addBehavior()是一種JS調用的外部函數文件其擴展名為.htc
          63.window.focus()使當前的窗口在所有窗口之前.
          64.blur()指失去焦點.與FOCUS()相反.
          65.select()指元素為選中狀態.
          66.防止用戶對文本框中輸入文本:onfocus="this.blur()"
          67.取出該元素在頁面中出現的數量:document.all.tags("div(或其它HTML標記符)").length
          68.JS中分為兩種窗體輸出:模態和非模態.window.showModaldialog(),window.showModeless()
          69.狀態欄文字的設置:window.status='文字',默認的狀態欄文字設置:window.defaultStatus = '文字.';
          70.添加到收藏夾:external.AddFavorite("
          http://www.xrss.cn","jaskdlf");
          71.JS中遇到腳本錯誤時不做任何操作:window.onerror = doNothing; 指定錯誤句柄的語法為:window.onerror = handleError;
          72.JS中指定當前打開窗口的父窗口:window.opener,支持opener.opener...的多重繼續.
          73.JS中的self指的是當前的窗口
          74.JS中狀態欄顯示內容:window.status="內容"
          75.JS中的top指的是框架集中最頂層的框架
          76.JS中關閉當前的窗口: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中設置時間間隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout
          84.JS中的模態顯示在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.當窗體第一次調用時使用的文件句柄:onload()
          87.當窗體關閉時調用的文件句柄:onunload()
          88.window.location的屬性: protocol(http:),hostname(
          www.example.com),port(80),host(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳轉到相應的錨記),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("字符",起始位置),返回第一個出現的位置(從0開始計算)
          97.string.lastIndexOf(searchString[,startIndex])最后一次出現的位置.
          98.string.match(regExpression),判斷字符是否匹配.
          99.string.replace(regExpression,replaceString)替換現有字符串.
          100.string.split(分隔符)返回一個數組存儲值.
          101.string.substr(start[,length])取從第幾位到指定長度的字符串.
          102.string.toLowerCase()使字符串全部變為小寫.
          103.string.toUpperCase()使全部字符變為大寫.
          104.parseInt(string[,radix(代表進制)])強制轉換成整型.
          105.parseFloat(string[,radix])強制轉換成浮點型.
          106.isNaN(變量):測試是否為數值型.
          107.定義常量的關鍵字:const,定義變量的關鍵字: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 閱讀(3511) | 評論 (0)編輯 收藏

          compareTo 的使用



          public int compareTo(String anotherString)

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

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

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


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

          this.length()-anotherString.length()


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

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


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

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

          一些常用的方法

          //字符串初始化
          public String toString(String str){
           if(str == null){
            str = "";
           }
           if(str.equals("null")){
            str = "";
           }
           str = str.trim();
           return str;
          }
          //編碼轉換
          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轉換
          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;
          }
          //取得系統時間
          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 閱讀(1084) | 評論 (1)編輯 收藏

          ajax學習(轉發)

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

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

          AJAX基礎教程

          什么是 AJAX?

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

            這兩項被忽視的性能是:

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

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

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

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

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

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

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

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

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

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

          問題, 如果服務器響應的header不是text/xml,可以調用其它方法修改該header.

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

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

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

          http_request.onreadystatechange = nameOfTheFunction;

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

          響應要采取的行為,如下所示:

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

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

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

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

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

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

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

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

          應.這就是"AJAX"中的"A".

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

          的形式送給服務器,如下所示:

          name=value&anothername=othervalue&so=on

            步驟 2 – "收到!" --- 處理服務器的響應

            當發送請求時,要提供指定處理響應的JavaScript函數名.

          http_request.onreadystatechange = nameOfTheFunction;

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

          服務器響應已經收到了,您將可以處理該響應.

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

            readyState的取值如下:

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

          (Source)

            接著,函數會檢查HTTP服務器響應的狀態值. 完整的狀態取值可參見 W3C site. 我們著重看值為200

          OK的響應.

          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
          }

            在檢查完請求的狀態值和響應的HTTP狀態值后, 您就可以處理從服務器得到的數據了.有兩種方式可

          以得到這些數據:

          ??? * http_request.responseText – 以文本字符串的方式返回服務器的響應
          ??? * http_request.responseXML –

          以XMLDocument對象方式返回響應.處理XMLDocument對象可以用JavaScript DOM函數

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

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

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



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


            本例中:

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

          容.

            步驟 4 – "X-文檔" --- 處理XML響應

            在前面的例子中,當服務器對HTTP請求的響應被收到后,我們會調用請求對象的reponseText屬性.該屬

          性包含了test.html文件的內容.現在我們來試試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文件中的內容.

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

          僅列出標題
          共5頁: 上一頁 1 2 3 4 5 下一頁 
          主站蜘蛛池模板: 绥宁县| 海淀区| 三门县| 龙口市| 江口县| 岑巩县| 若羌县| 临城县| 射阳县| 鄂尔多斯市| 余姚市| 平陆县| 九寨沟县| 池州市| 延川县| 桦川县| 阳东县| 宣城市| 东源县| 汽车| 库伦旗| 临澧县| 格尔木市| 陈巴尔虎旗| 长寿区| 昌宁县| 曲松县| 五指山市| 三台县| 鄯善县| 泾川县| 大埔区| 聂拉木县| 新龙县| 宁化县| 历史| 茌平县| 洪洞县| 东安县| 出国| 萍乡市|