JavaEE成長之路

前言



學習Java已經有一段時間了,在學習的過程當中也走過了很多彎路。
寫下這篇博文,主要是想記錄下本身學習編程之路,以及反思本身在學習的時候出現的問題,下面也會給出我自認爲學習JavaEE的路線,想要學習JavaEE的同窗可適當地參考一下。

反思

在剛上大一的時候,什麼編程語言都不懂,也不知道怎麼學習編程。

當時想要加入學校的計算機協會,當時的師兄師姐告訴咱們想要加入協會須要審覈,給了一個外國的學習網站。這個網站主要是學習HTML、CSS的。因而就去草草學習了一番HTML和CSS。那時候只知道HTML和CSS的代碼可以使用瀏覽器來打開,能夠改變字體顏色,添加圖片,簡單的頁面佈局,隨後就再沒有去看它了。

大一學校開的編程語言課程是c++,去逛了一些論壇(知乎,貼吧等),學習的第一門編程語言最好是C,因而我就會找相應C語言的視頻去學習了。當時候把郝斌180講C語言的視頻地過了一遍,後來又把郝斌的數據結構視頻過了一遍。這麼一來,學校的c++課程對我來講好像就不成問題了,自覺得就有點基礎了,又去尋求其餘的技術了。 

在期間,逛論壇的時候出現了不少我不知道的專業名詞,看起來就以爲很是地高大上:「數據庫「,「Java」,「javaScript「」,「Jquery」什麼的。對於當時是萌新的我,就想什麼都學學。因而乎,在論壇上看見別人說「李興華的Oracle教程」不錯,我就去買了一本李興華的Oracle書籍,跟着自帶的視頻學習Oracle去了。學習着Oracle,發現不少知識理解不了,甚至學了一段時間以後,會存在這樣的想法:Oracle究竟學了有什麼用?後來又捨棄Oracle的學習,去學了一下Java,JavaScript,Jquery亂七八糟什麼的。

到了大一末時,要準備四級的考試了。編程什麼的都放了一邊,花了一個多月去複習英語四級,隨後放暑假偷懶沒有學習編程。等到大二的時候,發現以前學過的東西幾乎全忘了!

在大二的時候,又去從新學習了Java,書上和視頻的Demo也積極敲了,但是總以爲本身不知道在學什麼,成天對着命令行窗口太枯燥了!

我以爲出現這樣的狀況有如下主要緣由:
1、過於浮躁。一會學習HTML、CSS,一會學習Java、JavaScript、Oracle,甚至在不知道爲何要學習這門技術的狀況下就去胡亂學習了。
2、學習路線不合理。Oracle、Java、JavaScript這樣的技術沒有分清學習的前後順序而且沒有體驗到學習的趣味
3、沒有總結和作筆記。沒有對知識進行整理,並非理解了某個知識點,後邊就會天然地記起來的。只要不一段時間不接觸它,咱們就會遺忘。

所以在學習編程中,在咱們學習一門技術以前,咱們首先要知道這麼技術是用來幹嗎的,咱們爲何要學習它。這門技術解決了什麼問題。還有就是,我是強烈建議要作筆記的,而且筆記的格式要作得整齊,否則最後你也不想看你本身寫過的筆記、甚至會覺得你並無寫過這篇筆記的。

推薦作筆記工具

對於截圖工具,我推薦使用FastStone Capture,它十分輕巧,而且功能很是強大。

編輯筆記的工具我推薦使用markdown,在github上的不少readme都是使用它的,並且在編寫筆記的時候,能夠徹底不用到鼠標,僅僅用markdown的語法就能有對應的格式了。個人博文都是使用markdown來進行編輯的。

畫思惟導圖、一些簡單的流程圖的話,我推薦https://www.processon.com這個網站,很是好用,而且格式仍是挺好看的。

若是是須要用到輕量級的文本編輯器,我推薦使用sublimeText3或者notepad++



JavaEE學習路線

對於JavaEE的學習路線,我認爲是以實際需求來一步一步學習,而且在短期內能看到效果的,這樣是最好的。而當咱們把整個JavaEE體系有大概的瞭解和認識的時候,咱們再去專研基礎,閱讀源碼

Java基礎


在學習java基礎的時候,儘量去理解java經常使用的知識點。而一些比較偏門的知識點,能夠先放着無論,在初學的階段不必死磕。由於有一些偏門的知識點,即便咱們搞明白了,但在後續中用不上,咱們仍是會漸漸遺忘掉。

參考視頻:
1、Java畢向東
2、2015Java劉意

參考書籍:
1、java瘋狂講義
2、headFirstJava【雖然這本書銷量很高,我我的不太喜歡,插圖不少,與正常書籍的畫風差距有點大】

在初學的時候,咱們可使用輕量級的文本編輯器sublimeText3或者notepad++,在使用久了以後,我推薦使用Intellij idea這個集成開發工具。即便咱們的視頻都是使用eclipse,可是Intellij idea的風勢愈來愈大,用起來也很好用,只不過有點難上手而已。

對於idea,sublimeText3的初步使用或者一些設置問題,能夠看我其餘的博文有沒有解決方案:Idea、SublimeText教程

對於Java基礎中的Swing、AWT、JDBC、註解章節的,到目前爲止咱們均可以先放着不看

Web前端基礎 

在學習完Java基礎以後,我建議直接去學習Web前段的基礎HTML、CSS和JavaScript。

由於Java基礎都是面對一個命令行窗口或者咱們IDE的輸出窗口,太過無聊了,咱們得學習些見效快的東西。

參考視頻:
1、韓順平HTML+CSS【講得比較細,能夠加速觀看的視頻速度】
2、韓順平JavaScript【講得比較細,能夠加速觀看的視頻速度】

參考書籍:
HTML5+CSS3瘋狂講義

參考網站:
w3c

參考博文:
JavaScript基礎教程

在學完此階段上,咱們就會理解到HTML是名詞,CSS是形容詞,JavaScript是動詞這麼一個比喻。

XML 

在學習完Web前端以後,咱們知道了HTML的概念,而XML是HTML的升級,可是XML是用來傳輸數據的【它自己是但願既可以作頁面展現,又可以傳輸數據,但是咱們以爲它作頁面展現很差】。

XML解決了傳輸的數據是關係型數據的問題,而且是一種格式通用的傳輸數據文本,一般咱們能夠將它做爲配置文件。接下來Servlet就是使用XML做爲配置文件的。

參考視頻:
韓順平xml細講【講得比較細,能夠加速觀看的視頻速度】

參考博文:
XML教程

Tomcat 


在學習Servlet以前,咱們得先學習一箇中間件:Tomcat。這個是可讓咱們寫的頁面可以被別人訪問。在以前,咱們寫的HTML都僅僅是本身機器上的訪問,咱們寫出來的東西固然是想被別人訪問的,只要把寫的東西放在Tomcat這麼一箇中間件上,就可以被別人訪問到了(局域網)

而Tomcat也是裝載着Servlet和JSP的一個容器,是很是適合咱們學習的。

參考視頻:
方立勳JavaWeb教程

參考博文:
Tomcat基礎知識

Servlet與JSP


在學習Servlet以前,要看看HTTP協議的基本知識,瞭解HTTP的消息頭。

市面上不少書籍都是先講JSP,再講Servlet的,其實我認爲咱們先要學Servlet,再學JSP。

Servlet其實就是一個Java類,只是這個Java類被稱做是Servlet這樣高大上的名稱而已。因爲Servlet不適合作頁面的輸出,所以就誕生了JSP。JSP本質上就是Servlet的,所以咱們只要把Servlet學好,JSP就很天然的懂了。

參考視頻:
方立勳JavaWeb教程

參考書籍:
李興華JavaWeb
JavaWeb王者歸來【我認爲這本書仍是囉嗦了一點,不少輸出到頁面上的代碼都是用Servlet來寫,實際上是不必】

參考博文:
Servlet與JSP教程


Servlet和JSP要好好學,由於Servlet是JavaWeb最基礎的部分了,後面所謂的框架本質上都是對Servlet進行包裝的。只要把Servlet好好學了,那麼理解後面的框架也就不難了,就很快能夠上手。

Servlet知識點:



JSP知識點:


過濾器和監聽器知識點:


JDBC與數據庫


學到這裏,咱們就存儲數據有這麼幾種方式

1、使用普通文件來存儲數據
2、使用XML來存儲數據

通常地,因爲咱們涉及到的數據量多是很大的, 普通的文件和XML能存儲的數據量是遠遠不夠支撐咱們的數據 。所以咱們作項目都是將數據存儲到數據庫中的,因此咱們要學習數據庫的內容。

第一次接觸數據庫的話,我推薦是使用Mysql比較好,安裝起來比較方便,配置沒有那麼麻煩。固然了,Oracle也順帶學學也不錯。

參考視頻:
方立勳JavaWeb教程
傳智播客32期中Oracle教程
李興華Oracle

參考書籍:
SQL必知必會 【這本書挺薄的,涵蓋了數據庫的全部知識,做爲入門是不錯的】
李興華Oracle

參考博文:
數據庫基礎知識教程

Mysql命令圖:


SQL知識點大綱圖:




當咱們知道如何使用SQL,瞭解數據庫的基本用法以後,咱們就能夠去學習JDBC了。

JDBC其實翻譯過來就是Java鏈接數據庫的縮寫。也就是說,Java經過程序接口來鏈接數據庫!

JDBC參考視頻:
方立勳JavaWeb教程

JDBC參考博文:
JDBC教程

JavaWeb小項目


到這個階段,咱們已經把全部的JavaWeb基礎學完了,咱們能夠作幾個小項目來練手練手

參考博文:
五個JavaWeb項目練手

參考視頻:
方立勳JavaWeb教程

AJAX與JSON


作完幾個JavaWeb小項目以後,咱們會發現即便請求的是頁面上一小部分的內容,咱們仍是使用Servlet返回整一個頁面給瀏覽器。這樣的話是很是耗費資源的,明明咱們頁面上其餘的數據是不用動的。所以,咱們接下來就要學習AJAX了。 AJAX就是可以將一小部分的數據發送給咱們的Servlet ,Servlet處理完數據返回給頁面也是一小部分, 那麼瀏覽器只要處理那小部分數據就好了

Servlet返回的數據若是是很是簡答的話,那麼咱們能夠直接使用字符串便可了。若是返回的數據是帶關係型的話,那麼咱們就要使用XML了。而XML數據又過於複雜化了,所以又出現了一種 通用的傳輸技術-JSON

JSON其實也就是字符串,它能夠被JavaScript語法解析,輕量級而且很方便解析。

參考視頻:
王興魁Ajax教程 【這個教程有點老了,而且我我的不太喜歡那種風格】
傳智播客32期Ajax章節視頻


參考博文:
AJAX與JSON

Web前端庫


在以前,咱們一直用的是HTML、CSS、JavaScript來作簡單的頁面佈局,但咱們發現,若是每次都是從零開始寫頁面的話,那未免複雜了一點。

還有就是,咱們在學習AJAX和處理XML的的時候就知道,瀏覽器的兼容性問題,IE和Chrome等瀏覽器處理方式多是會不一樣的。

每次使用原生JavaScript的時候,代碼量的也比較高...

基於上面的問題,咱們就要開始學習一些簡單的Web前端庫了。首先就是咱們的Jquery

Jquery是JavaScript的一個庫,它封裝了Javascpirt不少的功能,屏蔽了瀏覽器的兼容性問題,在使用AJAX的時候就十分地簡單了。




在學習完Jquery以後,咱們發現要對頁面進行DOM操做就很是簡單了。Jquery也提供了動畫效果這樣的接口供咱們使用。

但是在頁面上,仍是須要咱們從零開始寫HTML、CSS代碼呀。此時,咱們就能夠學習ESAY-UI,BootStrap這樣的前端框架了。

對於咱們學習過了Juqery而言,而且EASY-UI和BootStrap都是有中文的文檔的,咱們是很是容易上手的。

Jquery參考視頻:
傳智播客32期

Jquery參考書籍:
鋒利Jquery

參考資料:
bootStrap中文網
EASYUI中文網

參考博文:
Web前端庫

Struts2


在進入此階段的時候,咱們已經將全部JavaWeb基礎都已經學完了,是時候去學習框架了。

在學習框架的時候,咱們 要明確咱們爲何要學框架?好比,爲何咱們要學習Struts2這個框架呢??

1、咱們在頁面上獲取數據到Sevlet上的時候,若是咱們要獲取的參數有多個,那麼咱們就必須一個一個來進行獲取(固然了,咱們可使用beanUtils)。
2、在文件上傳的時候,咱們又要使用SmartUpload或者FileUpload等上傳組件,並且用起來也沒有想象中那麼方便
3、若是咱們的功能比較多的話,那麼咱們的編寫Servlet的次數是會很是多的,而且Servlet上的不少代碼其實也是重複的。

Struts2框架是針對咱們的Controller控制層的,也就是Servlet處理那模塊的。

基於上面幾種緣由,咱們就須要學習框架來幫咱們管理一些重複性的代碼,這樣就可以提升咱們的開發效率。

參考視頻:
傳智播客Java32期

參考博文:
Struts2教程

參考書籍:
JavaWeb王者歸來

Hibernate


學完了Controller層的框架,咱們接下來學習Dao層的框架了。

咱們Dao層中經歷了這麼的階段
1、原生JDBC
2、JDBCUtils框架

其實咱們用JDBCUtils框架的時候,已是用得很是爽了。但是若是你學習了Hibernate的話,那麼就更加爽了!

Hibernate能夠說是全自動實現ORM(對象映射數據庫表)的一個框架,學習了它就 不用咱們寫SQL語句來對數據庫進行操做了。

它裏邊封裝了增刪改查的方法,對應SQL中的insert、delete、select、update語句,用起來就很爽!

參考視頻:
傳智播客Java32期

參考博文:
Hibernate教程

參考書籍:
JavaWeb王者歸來

未完待續,若是想要上面所說的視頻資源的,在評論下留言。若是我有的都免費發
相關文章
相關標籤/搜索