如何學好java

          如何學好java,其實很簡單,只要用心體會,慢慢積累!
          posts - 106, comments - 7, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          一.什么是事務  
               事務是應用程序中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。也就是事務具有原子性,一個事務中的一系列的操作要么全部成功,要么一個都不做。
              事務的結束有兩種,當事務中的所以步驟全部成功執行時,事務提交。如果其中一個步驟失敗,將發生回滾操作,撤消撤消之前到事務開始時的所以操作。
                  二.事務的 ACID
              事務具有四個特征:原子性( Atomicity )、一致性( Consistency )、隔離性( Isolation )和持續性( Durability )。這四個特性簡稱為 ACID 特性。
          1 、原子性
              事務是數據庫的邏輯工作單位,事務中包含的各操作要么都做,要么都不做
          2 、一致性  
               事 務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。因此當數據庫只包含成功事務提交的結果時,就說數據庫處于一致性狀態。如果數據庫系統 運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處于一種不正確的狀態,或者說是 不一致的狀態。  
          3 、隔離性
              一個事務的執行不能其它事務干擾。即一個事務內部的操作及使用的數據對其它并發事務是隔離的,并發執行的各個事務之間不能互相干擾。
          4 、持續性
             也稱永久性,指一個事務一旦提交,它對數據庫中的數據的改變就應該是永久性的。接下來的其它操作或故障不應該對其執行結果有任何影響。

          數據庫系統必須維護事務的以下特性 ( 簡稱 ACID) :

             原子性 (Atomicity)

            一致性 (Consistency)

            隔離性 (Isolation)

            持久性 (Durability)

          原子性 (Atomicity)

          事務中的所有操作要么全部執行,要么都不執行;

          如果事務沒有原子性的保證,那么在發生系統

          故障的情況下,數據庫就有可能處于不一致狀

          態。

           

          原子性 (Atomicity)

          如果故障發生在 write(A) 和 read(B) 之間,則將有可能造成帳戶 A 的余額已經減去 50 元錢,而帳戶 B 的余額卻沒有改變,憑空就少了 50 元錢。值得注意的是,即使沒有故障發生,系統在某一時刻也會處于不一致狀態。原子性的要求就是這種不一致狀態除了在事務執行當中出現外,在其他任何時刻都 是不可見的。保證原子性是 DBMS 的責任:即事務管理器和恢復管理器的責任。

           

          一致性 (Consistency)

          主要強調的是,如果在執行事務之前數據庫是一致的,那么在執行事務之后數據庫也還是一

          致的;所謂一致性簡單地說就是數據庫中數據的完整性,包括它們的正確性。對于圖中的事務 Ti 來說,一致性要求就是事務的執行不改變帳戶 A 和帳戶 B 的和。否則的話事務就會創造或銷毀錢!單個事務的一致性是由對該事務進行編鍵的應用程序員的責任,但是在某些情況下利用 DBMS 中完整性約束 ( 如觸發器 ) 的自動檢查功能有助于一致性的維護。

           

          隔離性 (Isolation)

          即使多個事務并發(同時)執行,每個事務都感覺不到系統中有其他的事務在執行,因而也

          就能保證數據庫的一致性;事情的起因 : 即使每個事務都能保持一致性和原子性,但如果幾個事務并發執行,且訪問相同的數據項,則它們的操作會以人們所不希望的某種方式交叉執行,結果導致不一致的狀態!訪問相同數據項的兩個事務并發執行

          解決辦法 :

          如果幾個事務要訪問相同的數據項,為了保證數據庫的一致性,可以讓這幾個事務:

          ① 串行執行:即一個接著一個地執行事務;

          ② 并發執行:即同時執行多個事務,但用并發控制機制來解決不同事務間的相互影響。隔離性的保證 :

          事務的隔離性能夠確保事務并發執行后的系統狀態與這些事務按某種次序串行執行后的狀態是等價的。

          保證隔離性也是 DBMS 的責任:即并發控制管理器的責任。

           

          持久性 (Durability)

          事務成功執行后它對數據庫的修改是永久的,即使系統出現故障也不受影響。

          持久性的含義是說:一旦事務成功執行之后,它對數據庫的更新是永久的。可以用以下兩種

          方式中的任何一種來達到持久性的目的:

          以犧牲應用系統的性能為代價

          以多占用磁盤空間為代價

          以犧牲應用系統的性能為代價:要求事務對數據庫系統所做的更新在事務結束前已經寫入磁盤;以 多占用磁盤空間為代價:要求事務已經執行的和已寫到磁盤的、對數據庫進行更新的信息是充分的(例如,數據庫日志的信息就足夠的多),使得 DBMS 在系統出現故障后重新啟動系統時,能夠 ( 根據日志 ) 重新構造更新。保證持久性也是 DBMS 的責任:即恢復

          管理器的責任。

           

          事物的狀態有如下幾種:

          ⑴ 中止事務:執行中發生故障、不能執行完成的

          事務;

          ⑵ 事務回滾:將中止事務對數據庫的更新撤消

          掉;

          ⑶ 已提交事務:成功執行完成的事務。

           

          系統的恢復步驟是:

          1 、反向掃描文件日志(即從最后向前掃描日志文件),查找該事務

          的更新操作。

          2 、對該事務的更新操作執行逆操作。即將日志記錄 “ 更新前的值 ” 寫

          入數據庫。這樣,如果記錄中是插入操作,則相當于做刪除操

          作;若記錄中是刪除操作,則做插入操作;若是修改操作,則相

          當于用修改前的值代替修改后的值。

          3 、繼續反向掃描日志文件,查找該事務的其他更新操作,并做和 2

          一樣的同樣處理。

          4 、如此處理下去,直至讀到此事務的開始標記,事務的故障恢復就

          完成了。

          事務的隔離級別

          隔離級別定義了事務與事務之間的隔離程度。

          隔離級別與并發性是互為矛盾的:隔離程度越高,數據庫的并發性越差;隔離程度越低,數

          據庫的并發性越好。

          ANSI/ISO SQL92 標準定義了一些數據庫操作的隔離級別

             未提交讀( read uncommitted )

             提交讀( read committed )

             重復讀( repeatable read )

             串行讀( serializable )

          隔離級別的效果更新丟失( lost update ):當系統允許兩個事務同時更新同一數據是,發生更新丟失。臟讀( dirty read ):當一個事務讀取另一個事務尚未提交的修改時,產生臟讀。

          不可重復讀取( nonrepeatableread ):同一查詢在同一事務中多次進行,由于其他提交事務所做的修改或刪除,每次返回不同的結果集,此時發生不可重復讀取。

          幻像( phantom read ):同一查詢在同一事務中多次進行,由于其他提交事務所做的插入操作,每次返回不同的結果集,此時發生幻像讀。

          posted @ 2011-05-06 21:34 哈希 閱讀(311) | 評論 (0)編輯 收藏

              泛型是1.5中引入的一個新的概念,由于 不用進行強制轉換類型了,所以具有較高的安全性和易用性。因為泛型其實只是在編譯器中實現的而虛擬機并不認識泛型類項,所以要在虛擬機中將泛型類型進行擦除。也就是說,在編譯階段使用泛型,運行階段取消泛型,即擦除。 擦除是將泛型類型以其父類代替,如String 變成了Object等。其實在使用的時候還是進行帶強制類型的轉化,只不過這是比較安全的轉換,因為在編譯階段已經確保了數據的一致性。
           

          java 泛型的殘酷現實就是:

          在泛型代碼內部,無法獲得任何有關泛型參數類型的信息。

          在使用泛型時,任何具體的類型都被擦除,唯一知道的是你在使用一個對象。比如:List<String>和List<Integer>在運行事實上是相同的類型。他們都被擦除成他們的原生類型,即List。

          snippet 1:

          package com.cognizant.ch15;

          import java.lang.reflect.Array;
          import java.util.Arrays;

          public class ArrayMaker<T> {
              private Class<T> kind;

              public ArrayMaker(Class<T> kind) {
                 this.kind = kind;
           }

           @SuppressWarnings("unckecked")
             T[] create(int size) {
                 return (T[]) Array.newInstance(kind, size);
           }

            public static void main(String[] args) {
                ArrayMaker<String> stringMaker = new ArrayMaker<String>(String.class);
                String[] stringArray = stringMaker.create(10);
                System.out.println(Arrays.toString(stringArray));
           }
          }
          ouput:[null, null, null, null, null, null, null, null, null, null]

          由于擦除,kind實際上將被存儲為了Class,非String.calss。在創建數組的時候,Array.newInstance()實際上并沒有擁有kind所含的類型信息,因此就不會產生具體的結果。

          如果要創建一個容器而不是數組,情況卻有點不同:

          snippet 2:

          public class ListMaker<T>{

             List<T> create(){

                return new ArrayList<T>();

          }

            public static void main(String[] args){

                ListMaker<String> stringMaker=new ListMaker<String>();

                List<String> stringList=stringMaker.create();

          }

          }

          擦 除使得create()內部的new ArrayList<T>中的<T>被擦除了,在運行時,這個類的內部沒有任何<T>,但是又不能把 ArrayList<T>改為ArrayList,否則雖然編譯器通過,但會給出警告。

          snippet 3:

          package com.cognizant.ch15;

          import java.util.ArrayList;
          import java.util.List;

          public class FilledListMaker<T> {
             List<T> create(T t, int n) {
             List<T> result = new ArrayList<T>();
              for (int i = 0; i < n; i++) {
                 result.add(t);
            }
              return result;
           }

           public static void main(String[] args) {
              FilledListMaker<String> stringMaker = new FilledListMaker<String>();
              List<String> list = stringMaker.create("hello", 6);
              System.out.println(list);
           }
          }

          output:[hello, hello, hello, hello, hello, hello]

          編譯器無法知道有關create中T的任何信息,但是他仍然可以在編譯期確保放置到result中對象具有T類型。因此就有了一個現象:即使擦除在方法或類內部移除了實際類型的信息,編譯器還是可以在方法或類的使用的類型的內部一致性。

          那么就有一個問題:擦除后的不知道又到知道其具體類型,他是這么做到的呢?

          答案是:擦除在方法體中移除了類型信息,所以在運行時的問題就是邊界即對象進入和離開方法的地點,這正是編譯器在編譯期執行類型檢查并插入轉型代碼的地點。

          泛型中的所有動作都發生在邊界處:對傳遞進來的值進行額外的編譯期檢查,并插入 對傳遞出去的值的轉型。

          由于不用進行強制轉換類型了,所以具有較高的安全性和易用性。但泛型其實只是在編譯器中實現的而虛擬機并不認識泛型類項,所以要在虛擬機中將泛型類型進行擦除。也就是說,在編譯階段使用泛型,運行階段取消泛型,即擦除。
          這導致了一個問題:無法創建泛型數組。
          Java的泛型在編譯時會擦除類型信息。Java中的數組是通過反射動態建立的。沒有了類型信息怎么能構造出數組。

             



          posted @ 2011-05-06 21:16 哈希 閱讀(201) | 評論 (0)編輯 收藏

          public class StringBufferTest
          {
          public  void operater(StringBuffer x,StringBuffer y)
          {
          //string.append(String)字符串添加函數
          x.append(y);
          y=x;
          System.out.println("operater輸出:"+"a="+x+",b="+y);
          }
          public static void main(String [] args)
          {
          StringBuffer a=new StringBuffer("A");
          StringBuffer b=new StringBuffer("B");
          StringBufferTest test=new StringBufferTest();
          test.operater(a, b);
          System.out.println("main輸出:a="+a + ",b=" +b);
          }
          java的引用類型是地址傳遞,可是在operater中和main中輸出結果為什么不一樣呢?


          在main中 a => new StringBuffer("A"); b => new StringBuffer("B"); 在test.operater(a, b);這句,傳入的是兩個引用 在operater方法中,b被重新賦值了,即引用地址改變了 ================ 補充一下:java中任何一個對象變量只是指向創建的對象的一個引用 例如 String a = "KKK"; 那么 “KKK”是創建的String對象, a 則是這個對象的引用,或者說a保存對象“KKK”在內存中的地址

          “==”與“Equals”區別

          ==操作比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量在堆中存儲的地址是否相同,即棧中的內容是否相同。 equals操作表示的兩個變量是否是對同一個對象的引用,即堆中的內容是否相同。 ==比較的是2個對象的地址,而equals比較的是2個對象的內容。 顯然,當equals為true時,==不一定為true;

          posted @ 2011-05-03 16:44 哈希 閱讀(279) | 評論 (0)編輯 收藏

          string和stringbuffer區別
          這是好友面試的一道題,其實我知道使用的區別,StringBuffer必須new出來,StringBuffer的append的效率比string的+=的效率高,
          其實發現還有很大的區別,看了看以前scjp的考題

          Test


          答案是 javajavaC
          這是Java參數傳遞(by value)造成的
          而題目中第七行text = text.append ("C"),append方法會改變text中的值
          而這個text與main中的textBuffer是指向同一個對象,所以對應的輸出是javac。
          string的值永遠不會改變!
          String a = "a";//假設a指向地址0x0001,
          a = "b";//重新負值后a指向地址0x0002,但0x0001地址中保存的"a"依舊存在,但已經不再是a所指向的。
          從表面上看String類型的對象改變了值,但事實是他不能改變值,只能改變指向的地址
          StringBuffer則不同,直接改變指向的地址中保留的值
          還有

          public static void main(String[] args) {
                  StringBuffer s1 
          = new StringBuffer("a");
                  StringBuffer s2 
          = new StringBuffer("a");
                  s1.equals(s2);
          //為什么是false
                  System.out.println(s1.equals(s2));
                  String s3 
          = new String("a");
                  String s4 
          = new String("a");
                  s3.equals(s4);
          //為什么是true
                  System.out.println(s3.equals(s4));
              }
             


          StringBuffer類中沒有重新定義equals這個方法,因此這個方法就來自Object類,
          而Object類中的equals方法是用來比較地址的,所以等于false.

          String類中重新定義了equals這個方法,而且比較的是值,而不是地址。所以會是
          true。

          posted @ 2011-05-03 16:02 哈希 閱讀(204) | 評論 (0)編輯 收藏

          1、
          輸出三角形
          *
          **
          ***
          ****
          ***
          **
          *

          posted @ 2011-05-03 15:19 哈希 閱讀(139) | 評論 (0)編輯 收藏

          1、很難理解輸出形狀嗎?
              其實很簡單,不要被它嚇懵了,首先你要明白輸出,就是按行執行的,而且有順序的輸出,好了,要什么形狀先畫出來,總結規律,寫代碼依次輸出就OK了,如金字塔
          。。。。。*
          。。。。* * *
          。。。* * * * *
           這樣理解:左邊輸出一個梯形,ok,5,4,3,右邊三角形1,3,5,for(int i=0;i<3;i++)這是行數,每行要轉彎<br/>,for(int j=5;j>3;j--)這是“。”的輸出規律,for(int k=1;k<=2i-1;k++);這樣就出來了!
           
          js輸出金字塔
          2、日歷的輸出:
            
          日歷

          3、數組的使用
            
          數組的使用

          4、
          不間斷的字幕

          5、

          posted @ 2011-05-02 12:39 哈希 閱讀(144) | 評論 (0)編輯 收藏

            MyEclipse斷點調試JavaScript向你介紹了使用MyEclipse斷點來調試JavaScript,希望對你有所幫助。

          MyEclipse斷點調試JavaScript我們可以從以下的幾個步驟來說明:

          1.在站點下準備兩個文件:1.js和index.html,在index.html中引入1.js,點擊index.html中的按鈕,就會調用1.js中的test()方法:

          xml 代碼

              
          1. ﹤html﹥  
          2. ﹤head﹥  
          3. ﹤meta http-equiv="Content-Type" content="text/html; charset=gb2312" /﹥  
          4. ﹤/head﹥  
          5. ﹤script type='text/javascript' src='./1.js'﹥﹤/script﹥  
          6. ﹤body﹥  
          7. ﹤input type="button" name="t" value="測試" onclick="test()"/﹥  
          8. ﹤/body﹥  
          9. ﹤/html﹥  

          2.啟動tomcat后,用myEclipse的web2.0瀏覽器瀏覽頁面:

          MyEclipse斷點調試JavaScript1 

          MyEclipse斷點調試JavaScript淺析圖1

          3.在web2.0瀏覽器中,輸入頁面地址,出現頁面后,點擊工具欄中的“js調試”按鈕,這時會在“Javascript Scripts Inspector”窗口中列出當前頁面設計的所有js文件。選擇需要斷點調試的js文件,雙擊進入。

          MyEclipse斷點調試JavaScript2 

          MyEclipse斷點調試JavaScript淺析圖2

          4.進入到1.js文件后,就可以給js代碼加斷點了:

          MyEclipse斷點調試JavaScript3 

          MyEclipse斷點調試JavaScript淺析圖3

          5.這時再回到剛才web2.0的瀏覽頁面,點擊 按鈕,調用1.js中的test()方法,系統就會自動跳轉到調試狀態,并定位到1.js中剛才設置斷點的位置了。

          (我用的是myEclipse5,不知道5之前的版本可不可以這樣)

          MyEclipse斷點調試JavaScript就向你介紹到這里,希望對你有所幫助。

          posted @ 2011-05-01 21:28 哈希 閱讀(208) | 評論 (0)編輯 收藏




          第2章 創建網站
          雙擊自動滾屏/單擊停止
          字號:[大  小]
            本章教學目標

            在使用Dreamwear制作網頁之前,必須首先創建網站或打開網站,此時Dreamwear會自動將所有網站資源(HTML文檔、圖片、動畫、聲音、程序等)都保存到網站文件夾中,從而保證網站發布后網頁上的所有元素可以正常瀏覽。本章教學目標:

            • 學習設計、創建網站的基本步驟
            • 使用Dreamwear 建立本地站點操作方法
            • 使用Dreamwear 建立遠程站點的操作方法
          本章主要內容
            2.1 規劃網站
           

          2.2 創建本地站點

            2.3 創建遠程站點 
            2.4 設置本地計算機為可訪問服務器
             本章動畫演示  
           
          · 建立本地站點
          · 建立遠程站點
          2.1 規劃網站

           在建立網站與制作網頁之前首先要規劃站點:

          ① 規劃站點結構:合理的站點結構可以加快對站點的設計,提高工作效率。

          • 用文件夾保存文檔:首先建一個根文件夾,然后在其中建若干子文件夾,分類存放網站全部文檔。
          • 使用合理的文件名:文件夾名稱與文件名稱,用容易理解網頁內容的英文名(或拼音),最好不要使用大寫或中文。這是由于很多網站使用Unix操作系統,該操作系統對大小寫敏感,且不能識別中文文件名。
          • 合理分配文檔資源:不同的對象放在不同的文件夾中。不要將與網頁制作無關的文件放置在該文件夾中。

          ② 規劃站點導航機制:提供清晰易懂的瀏覽方法,采用統一的網頁組織形式,引導用戶輕松訪問網站。

          • 建立返回主頁鏈接:在每個頁面上設置,避免迷失方向。
          • 顯示網站專題目錄:每一頁面都應提供網站簡明目錄結構,引導用戶快速進入。
          • 顯示當前位置:在顯著位置上標出當前頁在網站中的位置。
          • 搜索索引反饋:數據網站應設搜索功能。
          • 反饋:設置管理員email信箱、意見反饋表單等功能。

          ③ 構建整體的站點風格:網站中網頁風格應該統一,使網站特點鮮明,突出主題。

          • 風格統一:在多個網頁上重復出現標識網站特征的某些對象。
          • 使用模板和庫:快速批量創建相同風格的網頁。
          2.2 創建本地站點 

            在制作 網頁之前,必須首先創建網站或打開網站,此后Dreamwear會自動將所有網站資源(HTML文檔、圖片、動畫、聲音、程序等)都保存到網站文件夾中, 從而保證網站發布后網頁上的所有元素可以正常瀏覽。網站分為本地站點(網站存放在本機硬盤上)與遠程站點(網站存放在用于發布網站的服務器端)。

            使用dreamwear創建創建本地站點方法如下:

          1.打開站點定義”對話框。

           打開Dreamwear 選取站點菜單→選取管理站點項目→點擊新建按鈕→選取站點項目

          2.給站點命名

           選取站點名稱文本方塊,輸入站點名稱

          3.選取或建立站點文件夾

           點擊瀏覽文件夾按鈕→點擊創建新文件夾按鈕→輸入新建的站點文件夾名后,選擇該文件夾→點擊打開按鈕→點擊選擇按鈕

          4.選取或建立默認圖像文件夾

           選取默認圖像文件夾文本框→點擊瀏覽文件夾按鈕→打開新建的站點文件夾→點擊創建新文件夾按鈕→輸入圖象文件夾名(images)后,選取該文件夾→點擊打開按鈕→點擊選擇按鈕

          5.設置訪問本機網站的Http地址

           選取HTTP 地址文本框→輸入訪問本機網站時的地址→點擊確定按鈕→點擊完成按鈕

           練習2-1
          1.在本機硬盤上創建一個本地站點,文件夾名用mysite,Http地址為
          http://localhost/mysite  
          站點名用自己姓名拼音縮寫。
          2.在本地站點創建一個新文件夾(如Image),用于存放圖形文件。
          3.在根文件夾下創建一個新文件。命名為default.htm,輸入一些內容。
          4.按F12鍵預覽網頁

          2.3 創建遠程站點 

            在創建了本地站點之后,使用[定義站點]命令設置或改變遠程服務器信息。

          1.打開站點定義中遠程信息設置對話框。

           選取站點菜單 → 選取管理站點項目 → 選取要編輯的網站 → 點擊編輯按鈕 → 選取遠程信息項目

          2.設置訪問類型

           選取訪問框進行設置

          • [無]:如果不計劃將站點上載到一個服務器時選擇該項。
          • [本地/網絡]:如果web服務器被映射為一個網絡驅動器,或者是在本地機上運行web服務,選擇該項。
          • [FTP]:若要使用FTP連接到Web服務器,選擇該項。

          3.設置遠端文件夾

           點擊瀏覽文件夾按鈕 →選取本地磁盤 (C:)項目→打開 Inetpub 文件夾→打開 wwwroot 文件夾→點擊創建新文件夾按鈕→輸入文件夾名mysite(該文件夾名即為遠程網站名)→點擊選擇按鈕

          4.設置其它參數

          • 如果需要在添加和刪除文件時[站點]窗口的[遠端站點]欄可以自動更新,選取[自動刷新遠程文件列表]選項。如果要提高向遠程站點拷貝文件的速度,請不要選定該選項。(若要在任何時候手工刷新[站點]窗口,點擊[站點]窗口的[刷新]按鈕。)
          • 如果在協作環境中工作,則可以使用存回/取出系統在本地和遠程站點之間傳輸文件。當文件取出后,Dreamweaver 會在“站點”面板上顯示取出該文件的人員的名稱,并且在該文件的圖標旁顯示選中標記。存回文件后本地版本將變為只讀,一個鎖形符號出現在“站點”面板上該 文件的旁邊,以防止更改該文件
          • 如果只有一個人在遠程站點上工作,則可以使用“獲取”和“上傳”命令傳輸文件,而不用存回或取出文件。

          5. 點擊“確定”按鈕后點擊“完成”按鈕

          2.4 設置本地計算機為可訪問服務器

           如果要使本地計算機作為服務器接受訪問,需要安裝服務器程序(例如微軟的PWS或IIS)并啟動網站.
          一.啟動網站方法:

          1) 在已安裝IIS的計算機上,選擇開始→設置→控制面板→管理工具→Internet信息服務,打開如下面板

          2) 選擇網站下的默認網站,點擊"啟動"按鈕

          二.在本地計算機發布網站方法

          方法一:
          1) 在Dreamwear中將遠程站點設置為本地機的C:"Inetpub"wwwroot"站點文件夾(例如mysite)
          2) 點擊上傳文件按鈕,將本地站點文件夾所有文件上傳至遠程站點

          方法二:
          1) 選擇開始→程序→資源管理器
          ,找到本地站點文件夾
          2) 右鍵點擊站點文件夾,在彈出的菜單中選擇共享
          3)選擇web共享選項卡
          4)選擇共享文件夾
          5)在別名框中輸入要發布的文件夾名稱的別名(要求:字母或數字,不能是漢字或全角字符)
          6)點擊"確定"

          三.瀏覽網站方法

           打開瀏覽器,輸入訪問地址:

          • 本機訪問URL  http://localhost/發布的站點名   
            例如:http://localhost/mysite
          • 其他機訪問URL http://IP地址或計算機名/發布的站點名例如:
            例如:http://st11/mysite
            http://10.1.5.128/mysite   
          • 查看本機IP地址方法:
            選擇開始→運行→cmd→在dos提示符后輸入ipconfig)
          • 查看本機計算機名方法:
            右鍵點擊"我的電腦"→在彈出的菜單中選擇"屬性"→點擊"計算機名"選項卡查看

          練習2-2
          1.在C:"Inetpub"wwwroot"文件夾下新建一個用于存放自己網站的文件夾,文件夾名mysite
          2.設置遠程信息,選擇服務器為“本地/網絡”;遠程站點文件的目錄地址為C:"Inetpub"wwwroot"mysite
          3.將本地站點上傳至遠程站點后,刷新遠程站點。
          4.使用URL地址訪問自己所建的站點:
          本機訪問URL  http://localhost/mysite
          其他機訪問URL http://IP地址/mysite

          本章要點
          ·規劃站點
          1. 用文件夾保存文檔:首先建一個根文件夾,然后在其中建若干子文件夾,分類存放網站全部文檔。
          2. 使用合理的文件名:文件夾名稱與文件名稱,用容易理解網頁內容的英文名(或拼音),最好不要使用大寫或中文。
          3. 合理分配文檔資源:不同的對象放在不同的文件夾中。不要將與網頁制作列關的文件放置在該文件夾中。

          ·建立本地站點操作步驟

          1. 打開站點定義”對話框
          2. 給站點命名
          3. 選取或建立站點文件夾
          4. 選取或建立默認圖像文件夾
          5. 設置訪問本機網站的Http地址
          ·建立遠程站點操作步驟  1. 打開遠程站點定義對話框
          2. 設置遠程訪問的類型
          3. 建立遠程站點文件夾
          4. 設置參數
          5. 上傳站點并訪問

          posted @ 2011-04-30 00:24 哈希 閱讀(180) | 評論 (0)編輯 收藏

          Web.xml
          二話不說看代碼:
            
           
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.4" 
              xmlns
          ="http://java.sun.com/xml/ns/j2ee" 
              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">
            <servlet>
              
          <description>This is the description of my J2EE component</description>
              
          <display-name>This is the display name of my J2EE component</display-name>
              
          <servlet-name>ValidateView</servlet-name>
              
          <servlet-class>org.man.prj.ValidateView</servlet-class>
            
          </servlet>

            
          <servlet-mapping>
              
          <servlet-name>ValidateView</servlet-name>
              
          <url-pattern>/ValidateView</url-pattern>
            
          </servlet-mapping>
            
          <welcome-file-list>
              
          <welcome-file>index.jsp</welcome-file>
            
          </welcome-file-list>
          </web-app>

          package org.man.prj;

          import java.io.IOException;
          import java.io.PrintWriter;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class ValidateView extends HttpServlet {

              
          /**
               * The doGet method of the servlet. <br>
               *
               * This method is called when a form has its tag value method equals to get.
               * 
               * 
          @param request the request send by the client to the server
               * 
          @param response the response send by the server to the client
               * 
          @throws ServletException if an error occurred
               * 
          @throws IOException if an error occurred
               
          */
              
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, IOException {

                  doPost(request, response);
              }

              
          /**
               * The doPost method of the servlet. <br>
               *
               * This method is called when a form has its tag value method equals to post.
               * 
               * 
          @param request the request send by the client to the server
               * 
          @param response the response send by the server to the client
               * 
          @throws ServletException if an error occurred
               * 
          @throws IOException if an error occurred
               
          */
              
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, IOException {

                  response.setContentType(
          "text/html");
                  PrintWriter out 
          = response.getWriter();
                  out.println(
          "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
                  out.println("<HTML>");
                  out.println(
          "  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
                  out.println(
          "  <BODY>");
                  out.print(
          "    This is ");
                  out.print(
          this.getClass());
                  out.println(
          ", using the POST method");
                  out.println(
          "  </BODY>");
                  out.println(
          "</HTML>");
                  out.flush();
                  out.close();
              }

          }
          輸入tomcat驗證一下:
          http://localhost:8888/Validate/ValidateView


          posted @ 2011-04-29 15:11 哈希 閱讀(264) | 評論 (0)編輯 收藏

          這三者存放的都是對象的引用
          Set是無序集合,里邊的對象沒有先后順序,而且不能重復(重復是指:同一個類的對象,并且hashCode和equals方法的返回值相同)
          List是有序集合,里邊的對象有先后順序,并且可以重復(重復是指,當取得指定的對象時,同一個類的對象并且equals方法的返回值相同即為重復)
          Map中存放的鍵值對象的引用,但是鍵不能重復(鍵集即無序集合Set【具有Set重復的特性】)

          Set List 繼承了Collection接口,可以使用Collection實現多態,而Map沒有。



          posted @ 2011-04-29 14:40 哈希 閱讀(129) | 評論 (0)編輯 收藏

          僅列出標題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          主站蜘蛛池模板: 桂阳县| 曲沃县| 陵水| 五家渠市| 阳春市| 碌曲县| 谢通门县| 民丰县| 漯河市| 黔南| 休宁县| 定边县| 汤原县| 肇庆市| 临澧县| 蒙自县| 达日县| 简阳市| 佛坪县| 巴南区| 万山特区| 望谟县| 平远县| 嘉鱼县| 福州市| 江源县| 大兴区| 宜宾市| 会同县| 镇安县| 永新县| 高邑县| 莒南县| 博乐市| 宁城县| 南丹县| 满城县| 饶河县| 巧家县| 象州县| 辰溪县|