最近自己做了幾個Java Web項目,有公司的商業(yè)項目,,也有個人做著玩的小項目,,寫篇文章記錄總結一下收獲,列舉出在做項目的整個過程中,,所需要用到的技能和知識點,,帶給還沒有真正接觸過完整Java Web項目的同學一個比較完整的視角,提供一個所謂的“大局觀”,,也以便于同學們更有針對性地學習,。當然,這里所用到的例子項目是非常初級,,簡單的項目,,所以大神們就可以不用往下看了。 首先我們從網(wǎng)站的架構談起,。一般來說,,我們將網(wǎng)站分為前端和后端。前端主要負責頁面的展示,,后端則是業(yè)務邏輯的實現(xiàn),。由于html5的興起,前端領域已經(jīng)越來越火熱,,前端技術發(fā)展極快,,今天我們不做過多介紹,因為現(xiàn)在的互聯(lián)網(wǎng)公司,,前端工程師和Java工程師是完全不同的兩種技術崗位,。所以我們還是以Java的角度去看待一個項目。在前端沒有那么火的前幾年,,或者說在經(jīng)典的Java Web的開發(fā)模式中,,我們使用Jsp技術來作為展現(xiàn)層的實現(xiàn),其實也就是所謂的前端,。當然只懂得Jsp是不夠的還需要懂html,css,js,ajax等一些前端的基礎技術,,Jsp技術在其中扮演外層包裝的角色。那么后端呢,?后端是由于一些實現(xiàn)了業(yè)務邏輯Java代碼和數(shù)據(jù)庫組成,。說到這,,就可以推出Web開發(fā)中經(jīng)典的MVC模式,Model-View-Controller,。View,,,就是指表現(xiàn)層,Model,,是用來承載數(shù)據(jù)的抽象結構,,而Controller則是View和Model的橋梁。View存在與前端代碼中,,Controller,,Model存在與后端代碼中。在后端代碼中,,為了保證代碼的整潔,,易讀性,一般會采用分層的辦法,,自頂向下分為controller層,,service層,dao層,,數(shù)據(jù)層或者叫持久層(直接與數(shù)據(jù)庫打交道),。有時候,為了達到解耦的目的,,會在上述基層中間加入響應的接口層,,以使得接口與實現(xiàn)分離。在更加大型的網(wǎng)站中,,會出現(xiàn)更加復雜的架構,,比如dao層與數(shù)據(jù)層之間要有緩存層,或者訪問壓力增大后,,需要使用集群,,負載均衡等高級技術,但在這里,,我們就不深入討論復雜架構了,。 所以以上我們看到,一個Web 項目前端需要表現(xiàn)層,,后端有controller層,,service層,dao層,,持久層,。在表現(xiàn)層,除了剛才提到的html,css,js,ajax,jsp等基礎知識,在實際開發(fā)中,,我們還會用到許多框架技術,,比如tiles,velocity,freemarker等模板技術來簡化表現(xiàn)層的開發(fā)。在持久層,,除了jdbc外,,還有Mybatis,Hibernate等框架來提高開發(fā)效率。在Java Web中最耀眼的當屬Spring了,,Spring作為一個貫穿整個項目的框架,,為項目開發(fā)帶來依賴注入,面向切面編程的功能,。除了這些,,我們還需要熟練掌握一種關系型數(shù)據(jù)庫的使用,,如MySQL,Oracle等,,當然更好地話還需要掌握一種非關系型數(shù)據(jù)庫,MongoDB,,Redis,。 掌握了以上知識點,恭喜你,,你已經(jīng)可以開始寫Java Web項目了,。但是只會寫而不會部署,我們的項目仍然不能拿出來用,。所以說到這里,,我們的項目代碼已經(jīng)寫好,接下來該怎么辦呢,?當然是需要找一個容器來運行我們的代碼,。這里的容器是當然不是指Java里的數(shù)據(jù)類型,而是指應用服務器,,此處要特別區(qū)分應用服務器與Web服務器,,至于Web服務器是什么,稍后會介紹,。(如果有同學不是很清楚服務器的概念,,可以先看下一段,再回來看)目前,,市面主要流行的應用服務器有Tomcat,Jetty,,JBoss等。很多人會問我們?yōu)槭裁葱枰獞梅掌??顧名思義,,應用服務器就是用來運行我們的應用代碼的。這里需要特別提到的是,Java Web用到了像Jsp,,servlet這樣的動態(tài)web技術,,而這些技術的代碼是必須運行中應用服務器中的。所以當我們寫好應用代碼后,,需要把自己的應用部署到應用服務器上,。應用部署好后,那么用戶們該怎么訪問呢,?直接訪問應用服務器嗎,?這個時候就需要web服務器出場了。在互聯(lián)網(wǎng)上,,最強大的應用層協(xié)議當屬http協(xié)議了,,人們訪問網(wǎng)站就是通過http協(xié)議來進行訪問的,而Web服務器就是支持http協(xié)議的服務器,,所以就叫http服務器,。Web服務器接收http請求,然后再將請求轉交給應用服務器,。有人會問用戶直接訪問應用服務器不好嗎,?為什么要給web服務器,然后再到應用服務器,?從功能實現(xiàn)上來說,,是可以的。許多應用服務器,,比如Tomcat是具有web服務器的功能,,所以直接訪問也可以。但是由于在實際的生產(chǎn)環(huán)境中,,由于負載均衡,,cdn加速等原因,我們還是需要在應用服務器的前端再加一個web服務器來提高訪問效率,,常用的有Nginx,Apache這樣的服務器,。 之前老是在講這個服務器,那個服務器,,不知道有沒有同學聽懵了,。其實服務器這個概念,我們應該在真正接觸計算機專業(yè)領域之前早就聽說過,,比如以前打游戲覺得卡的時候大家都時不時會用到服務器這個詞匯,。但是我真正理解并研究服務器是在學習tomcat, jetty之后才開始的。那么服務器到底什么呢,?服務器這個概念其實很簡單,,就是一臺電腦,那它和我們日常用的電腦有什么區(qū)別?第一,,它一般沒有顯示器,,它只有主機。第二,,它的操作系統(tǒng)不同于我們常用的windows , Mac OS,。更多的是*nix系統(tǒng)。第三,,它運行了一些服務器端軟件,。比如說,我們上文提到的Tomcat , Jetty , Nginx,Apache,其實這些都是服務器軟件,,只是主機運行了這些軟件,,所以有時候大家就混淆了叫法。所以所謂的數(shù)據(jù)庫服務器,,大家也知道了,,其實就是運行了數(shù)據(jù)庫的主機。說到服務器,,我們所需要掌握的重點知識就是服務器操作系統(tǒng),,也就是*nix系統(tǒng),比如CentOS , Ubuntu等,。 說到這里,其實一個簡單的完整的Java Web項目就差不多了,。我們簡單回顧一下,,首先,我們需要利用各種框架和開發(fā)技術寫出應用代碼,。接下來,,我們需要一個臺安裝了*nix系統(tǒng)的主機,在上面安裝好Web服務器軟件,,應用服務器軟件,,再把我們的應用代碼部署到應用服務器上。現(xiàn)在我們只需要獲取到主機的IP地址,,就能夠遠程訪問應用了,。 知識點列表: 開發(fā):
數(shù)據(jù)庫技術:
操作系統(tǒng):
服務器技術:
附加: 緩存技術:
非關系型數(shù)據(jù)庫
中間件技術:
設計模式:
網(wǎng)絡:
Java虛擬機:
|
|