想要做一個完整的Javaweb專案需要掌握哪些技能
近期,剛剛完整的接觸了一個Javaweb的專案,綜合自己在做專案的過程,列舉了一些所需要用到的技能和知識點,帶給還沒有真正接觸過完整Java Web專案的同學一個比較完整的視角,提供一個所謂的"大局觀",也以便於同學們更有針對性地學習。
在前端沒有那麼火的前幾年,或者說在經典的Java Web的開發模式中,我們使用Jsp技術來作為展現層的實現,其實也就是所謂的前端。當然只懂得Jsp是不夠的還需要懂html,css,js,ajax等一些前端的基礎技術,Jsp技術在其中扮演外層包裝的角色。那麼後端呢?後端是由於一些實現了業務邏輯Java程式碼和資料庫組成。
說到這,就可以推出Web開發中經典的MVC模式,Model-View-Controller。View,,就是指表現層,Model,是用來承載資料的抽象結構,而Controller則是View和Model的橋樑。View存在與前端程式碼中,Controller,Model存在與後端程式碼中。在後端程式碼中,為了保證程式碼的整潔,易讀性,一般會採用分層的辦法,自頂向下分為controller層,service層,dao層,資料層或者叫持久層(直接與資料庫打交道)。
有時候,為了達到解耦的目的,會在上述基層中間加入響應的介面層,以使得介面與實現分離。在更加大型的網站中,會出現更加複雜的架構,比如dao層與資料層之間要有快取層,或者訪問壓力增大後,需要使用叢集,負載均衡等高階技術,但在這裡,我們就不深入討論複雜架構了。
所以以上我們看到,一個Web 專案前端需要表現層,後端有controller層,service層,dao層,持久層。在表現層,除了剛才提到的html,css,js,ajax,jsp等基礎知識,在實際開發中,我們還會用到許多框架技術,比如tiles,velocity,freemarker等模板技術來簡化表現層的開發。在持久層,除了jdbc外,還有Mybatis,Hibernate等框架來提高開發效率。
除了這些,我們還需要熟練掌握一種關係型資料庫的使用,如MySQL,Oracle等,當然更好地話還需要掌握一種非關係型資料庫,MongoDB,Redis。
上面說了好多,可能很多小夥伴看起來比較雜亂,我整理了一些知識點,大家可以參考一下。
知識點列表:
開發:
檢視層技術——
HTML,CSS,JS,AJAX,Tiles,Velocity,FreeMarker
持久層技術——MyBatis,Hibernate
Spring , Spring MVC
專案構建工具Maven
日誌Log4j
版本控制 Git
資料庫技術:
SQL語句
引數調優
作業系統:
熟練掌握一種Linux系統,原理,Shell命令
伺服器技術:
熟練使用並理解一個應用伺服器技術的原理(Tomcat)
熟練使用並理解一個Web伺服器技術的原理(Nginx)
附加
快取技術:
熟練使用並理解一種快取技術(Redis,Memcache,EhCache)
非關係型資料庫
熟練使用並理解一種非關係型資料庫(MongoDB)
中介軟體技術:
JMS:activeMQ和kafka
RPC: Dubbo
設計模式:
瞭解並能夠使用幾種最主要的設計模式
網路:
熟練使用並理解一個網路開發技術(Netty)
熟悉http,TCP協議
Java虛擬機器:
熟悉jvm執行原理,記憶體分佈
jvm引數調優
掌握了以上知識點,恭喜你,你已經可以開始寫Java Web專案了。