AVA初學者的誤區:忽略基礎,直接從框架開始
好多同學在自學JAVA時會選擇直接從框架開始學習,他們可能覺得框架是最具有技術含量、最具挑戰性、最Cool和最能體現自己能力的一個選擇,而沒有考慮到他們的實際情況。實際情況是他們的JavaWeb基礎乃至於Java語言基礎都非常薄弱,如果你沒有寫過5000行程式碼,沒有做過任何一個Java Web專案,那麼就應該先去加強一下基礎。
好吧,首先我們先來介紹一下什麼是Web框架?Web框架是開發者在使用某種語言編寫Web應用服務端時關於架構的最佳實踐。很多Web框架是從實際的Web專案抽取出來的,僅和Web的請求和響應處理有關,形成一個基礎,在開發別的應用專案的時候則可以從這個剝離出來的基礎做起,讓開發者更關注更具體的業務問題,而不是Web的請求和響應的控制。 框架很多,但套路基本類似,幫你隱藏很多關於 HTTP 協議細節內容,專注功能開發。
但對於一個初學者來說,過早的接觸框架往往是事倍功半!一個簡單的問題可能會讓你不知所措,因為你對WEB程式還很陌生,JAVA程式碼也是你的致命傷,你無法從底層去理解框架的基本原理,從而幫助你解決這個簡單的問題。 下面是針對初學 Java Web 開發的一些個人見解和思路,高手可略過。
一、打好基礎
良好的 Java 語言程式設計基礎是必須的,你必須得寫足5000行程式碼,在討論 Web 開發技術時提了一個 Java 程式設計基礎問題是會被鄙視的,我們不能在討論一個“高深的問題”時,還對一些“幼稚的問題”還一無所知。
二、 環境準備
(MyEclipse + Tomcat)你應該從學習JSP和Servlet開始, 選擇一個你喜愛的Servlet容器,推薦 Tomcat 、Resin 或者 Jetty 這些輕量級的產品。這三個產品下載 zip 包解壓後就可以用了。如果你不熟悉 Tomcat 的話請不要使用 exe 版本的 Tomcat,那會徒增很多煩惱。 關於開發工具 不推薦使用 MyEclipse 和 Eclipse 的 JEE 版本,徒增煩惱、執行緩慢而且還讓你無法瞭解 Web 專案的結構。普通的 Eclipse 或者你喜歡的開發工具就足夠了,能支援普通 Java 專案開發即可。
三、 理解和熟練使用 Servlet 和 Filter
前面的步驟是為了搭建一個測試的環境,然後讓你瞭解一個最基本的 Java Web 專案的結構。
一個最基本的 Java Web 專案所需的 jar 包只需要一個 servlet-api.jar ,這個 jar 包中的類大部分都是介面,還有一些工具類,共有 2 個包,分別是 javax.servlet 和 javax.servlet.http。我把這個jar包放到了 webapp 目錄外的一個獨立 packages 資料夾裡,這是因為所有的 Servlet 容器都帶有這個包,你無需再放到Web專案裡,我們放到這裡只不過是編譯的需要,執行是不需要的。
每個 servlet 都必須在 web.xml 中定義並進行 URL 對映配置,早期 Java 開發 Web 在沒有框架滿天飛的時候,這個檔案會定義了大量的 servlet,或者有人為了省事幹脆來一個 /servlet/* 來通過類名直接呼叫 Servlet。
四、 理解Servlet 和 HTTP 的關係
Servlet 是 J2EE 最重要的一部分,有了 Servlet 你就是 J2EE 了,J2EE 的其他方面的內容擇需採用。而 Servlet 規範你需要掌握的就是 servlet 和 filter 這兩項技術。絕大多數框架不是基於 servlet 就是基於 filter,如果它要在 Servlet 容器上執行,就永遠也脫離不開這個模型。
為什麼 Servlet 規範會有兩個包,javax.servlet 和 javax.servlet.http ,早先設計該規範的人認為 Servlet 是一種服務模型,不一定是依賴某種網路協議之上,因此就抽象出了一個 javax.servlet ,同時在提供一個基於 HTTP 協議上的介面擴充套件。但是從實際執行這麼多年來看,似乎沒有發現有在其他協議上實現的 Servlet 技術。
五、關於 JSP
任何一個 JSP 頁面在執行的時候都會編譯成一個 Servlet 類檔案,如果是 Tomcat 的話,這些生成的 java 檔案會放置在 {TOMCAT}/work 目錄下對應專案的子目錄中。
六、總結
讓我們來稍微簡單地歸納總結一下:
(1)熟知 Servlet 規範之前,請不要學習任何框架
(2) 使用最簡單的工具,不要任何嚮導和視覺化
(3) 熟知 HTTP 協議
等正在掌握了JSP和 Servlet 規範再去學習框架,你會覺你是一件再自然不過的事情,事情將變得非常簡單。總之一點:不要被框架綁架了,框架是你的工具,它應該聽你的!