最近本身作了幾個Java Web項目,有公司的商業項目,也有我的作着玩的小項目,寫篇文章記錄總結一下收穫,列舉出在作項目的整個過程當中,所須要用到的技能和知識點,帶給尚未真正接觸過完整Java Web項目的同窗一個比較完整的視角,提供一個所謂的「大局觀」,也以便於同窗們更有針對性地學習。固然,這裏所用到的例子項目是很是初級,簡單的項目,因此大神們就能夠不用往下看了。css
![](http://static.javashuo.com/static/loading.gif)
首先咱們從網站的架構談起。通常來講,咱們將網站分爲前端和後端。前端主要負責頁面的展現,後端則是業務邏輯的實現。因爲html5的興起,前端領域已經愈來愈火熱,前端技術發展極快,今天咱們不作過多介紹,由於如今的互聯網公司,前端工程師和Java工程師是徹底不一樣的兩種技術崗位。因此咱們仍是以Java的角度去看待一個項目。在前端沒有那麼火的前幾年,或者說在經典的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層與數據層之間要有緩存層,或者訪問壓力增大後,須要使用集羣,負載均衡等高級技術,但在這裏,咱們就不深刻討論複雜架構了。html
![](http://static.javashuo.com/static/loading.gif)
開發:前端
視圖層技術——HTML,CSS,JS,AJAX,Tiles,Velocity,FreeMarker持久層技術——MyBatis,HibernateSpring , Spring MVC項目構建工具Maven日誌Log4j版本控制 Githtml5
數據庫技術:ajax
SQL語句參數調優數據庫
操做系統:後端
熟練掌握一種Linux系統,原理,Shell命令設計模式
服務器技術:緩存
熟練使用並理解一個應用服務器技術的原理(Tomcat)熟練使用並理解一個Web服務器技術的原理(Nginx)服務器
附加:
緩存技術:
熟練使用並理解一種緩存技術(Redis,Memcache,EhCache)
非關係型數據庫
熟練使用並理解一種非關係型數據庫(MongoDB)
中間件技術:
JMS:activeMQ和kafkaRPC: Dubbo
設計模式:
瞭解並可以使用幾種最主要的設計模式
網絡:
熟練使用並理解一個網絡開發技術(Netty)熟悉http,TCP協議
Java虛擬機:
熟悉jvm運行原理,內存分佈jvm參數調優