了解最新公司動(dòng)態(tài)及行業(yè)資訊
最近做了幾個(gè)Java Web項(xiàng)目,有公司的商業(yè)項(xiàng)目,也有自己做的好玩的小項(xiàng)目。我寫(xiě)了一篇文章來(lái)記錄和總結(jié)收獲,并列出了項(xiàng)目全過(guò)程所需的技能和技能。知識(shí)點(diǎn)給沒(méi)有真正接觸過(guò)完整Java Web項(xiàng)目的同學(xué)一個(gè)比較完整的視角,提供了所謂的“大圖”,也方便同學(xué)們有針對(duì)性的學(xué)習(xí)更多。當(dāng)然,這里使用的示例項(xiàng)目都是非常初級(jí)、簡(jiǎn)單的項(xiàng)目。
首先,讓我們從網(wǎng)站的架構(gòu)開(kāi)始。通常,我們將網(wǎng)站分為前端和后端。前端主要負(fù)責(zé)頁(yè)面的展示,后端是業(yè)務(wù)邏輯的實(shí)現(xiàn)。由于html5的興起,前端領(lǐng)域越來(lái)越火,前端技術(shù)發(fā)展極其迅速。今天就不過(guò)多介紹了,因?yàn)楝F(xiàn)在的互聯(lián)網(wǎng)公司,前端工程師和Java工程師是兩個(gè)完全不同的技術(shù)崗位。所以我們還是從Java的角度來(lái)看一個(gè)項(xiàng)目。在前端還沒(méi)有那么流行的前幾年,或者在經(jīng)典的 Java Web 開(kāi)發(fā)模型中,我們使用 Jsp 技術(shù)作為表示層的實(shí)現(xiàn),也就是所謂的前端。當(dāng)然,只知道Jsp是不夠的。還需要了解一些基本的前端技術(shù),如html、css、js、ajax。jsp技術(shù)起到外包裝的作用。后端呢?后端由一些 Java 代碼和實(shí)現(xiàn)業(yè)務(wù)邏輯的數(shù)據(jù)庫(kù)組成。說(shuō)起來(lái),可以啟動(dòng)Web開(kāi)發(fā)中經(jīng)典的MVC模式,Model-View-。View,指表示層,Model是用來(lái)承載數(shù)據(jù)的抽象結(jié)構(gòu),是View和Model之間的橋梁。View存在于前端代碼中,Model存在于后端代碼中。在后端代碼中,為了保證代碼的整潔和可讀性,一般采用分層的方式,分為,,dao , 數(shù)據(jù)層或持久層(直接與數(shù)據(jù)庫(kù)打交道)自上而下。有時(shí),為了達(dá)到解耦的目的,會(huì)在上述基礎(chǔ)層中間增加一個(gè)相應(yīng)的接口層,將接口與實(shí)現(xiàn)分離。在更大的網(wǎng)站中服務(wù)器運(yùn)維技術(shù),會(huì)出現(xiàn)更復(fù)雜的架構(gòu)。比如在dao層和數(shù)據(jù)層之間有一個(gè)緩存層,或者當(dāng)訪(fǎng)問(wèn)壓力增加的時(shí)候,需要用到集群、負(fù)載均衡等先進(jìn)技術(shù),但是這里我們就不深入討論復(fù)雜的架構(gòu)了。會(huì)出現(xiàn)更復(fù)雜的架構(gòu)。比如在dao層和數(shù)據(jù)層之間有一個(gè)緩存層,或者當(dāng)訪(fǎng)問(wèn)壓力增加的時(shí)候,需要用到集群、負(fù)載均衡等先進(jìn)技術(shù),但是這里我們就不深入討論復(fù)雜的架構(gòu)了。會(huì)出現(xiàn)更復(fù)雜的架構(gòu)。比如在dao層和數(shù)據(jù)層之間有一個(gè)緩存層,或者當(dāng)訪(fǎng)問(wèn)壓力增加的時(shí)候,需要用到集群、負(fù)載均衡等先進(jìn)技術(shù),但是這里我們就不深入討論復(fù)雜的架構(gòu)了。
所以我們?cè)谏厦婵梢钥吹?,一個(gè)web項(xiàng)目的前端需要一個(gè)表現(xiàn)層,而后端有一個(gè)層、一個(gè)層、一個(gè)dao層、一個(gè)持久層。在表現(xiàn)層,除了剛才提到的html、css、js、ajax、jsp等基礎(chǔ)知識(shí)外,在實(shí)際開(kāi)發(fā)中,我們還會(huì)使用很多框架技術(shù),比如tiles,以及其他模板技術(shù)來(lái)簡(jiǎn)化表示層的開(kāi)發(fā)。在持久層,除了jdbc,還有其他的框架來(lái)提高開(kāi)發(fā)效率。Java Web中最耀眼的就是,作為貫穿整個(gè)項(xiàng)目的框架,為項(xiàng)目開(kāi)發(fā)帶來(lái)了依賴(lài)注入和面向方面的編程功能。除了這些,我們還需要熟練使用關(guān)系型數(shù)據(jù)庫(kù),比如MySQL等。當(dāng)然,
掌握了以上知識(shí)點(diǎn),恭喜你,可以開(kāi)始編寫(xiě)Java Web項(xiàng)目了。但是只能寫(xiě)不能部署,我們的項(xiàng)目還是不能用。那么到這里,我們的項(xiàng)目代碼已經(jīng)寫(xiě)好了,接下來(lái)我們?cè)撛趺醋瞿???dāng)然,我們需要找到一個(gè)容器來(lái)運(yùn)行我們的代碼。當(dāng)然,這里的容器并不是指Java中的數(shù)據(jù)類(lèi)型,而是指應(yīng)用服務(wù)器。這里需要區(qū)分應(yīng)用服務(wù)器和Web服務(wù)器。至于什么是web ,后面會(huì)介紹。(如果有同學(xué)對(duì)服務(wù)器的概念不是很清楚,可以先看下一段,再回過(guò)頭來(lái)。)目前市場(chǎng)上比較流行的應(yīng)用服務(wù)器主要有Jetty、JBoss等。很多人會(huì)問(wèn)我們?yōu)槭裁葱枰獞?yīng)用服務(wù)器?顧名思義,應(yīng)用服務(wù)器就是用來(lái)運(yùn)行我們的應(yīng)用代碼的。這里需要特別提一下的是,Java Web使用了像Jsp這樣的動(dòng)態(tài)Web技術(shù),這些技術(shù)的代碼必須運(yùn)行在應(yīng)用服務(wù)器中。所以在我們寫(xiě)好應(yīng)用代碼之后,我們需要將我們的應(yīng)用部署到應(yīng)用服務(wù)器上。應(yīng)用部署后,用戶(hù)如何訪(fǎng)問(wèn)?直接訪(fǎng)問(wèn)應(yīng)用服務(wù)器?此時(shí),需要一個(gè) Web 服務(wù)器。在 上,最強(qiáng)大的應(yīng)用層協(xié)議是 http 協(xié)議。人們通過(guò)http協(xié)議訪(fǎng)問(wèn)網(wǎng)站,而web服務(wù)器是支持http協(xié)議的服務(wù)器,所以稱(chēng)為http服務(wù)器。Web 服務(wù)器接收到 http 請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給應(yīng)用程序服務(wù)器。有人會(huì)問(wèn)用戶(hù)直接訪(fǎng)問(wèn)應(yīng)用服務(wù)器不好嗎?為什么先給web服務(wù)器再給應(yīng)用服務(wù)器?在功能實(shí)現(xiàn)方面,是可以的。許多應(yīng)用程序服務(wù)器,例如 Web 服務(wù)器,可以直接訪(fǎng)問(wèn)。但是在實(shí)際生產(chǎn)環(huán)境中,由于負(fù)載均衡、cdn加速等原因,我們還是需要在應(yīng)用服務(wù)器前面增加一個(gè)web服務(wù)器來(lái)提高訪(fǎng)問(wèn)效率。常用的服務(wù)器是 Nginx。許多應(yīng)用程序服務(wù)器,例如 Web 服務(wù)器,可以直接訪(fǎng)問(wèn)。但是在實(shí)際生產(chǎn)環(huán)境中,由于負(fù)載均衡、cdn加速等原因,我們還是需要在應(yīng)用服務(wù)器前面增加一個(gè)web服務(wù)器來(lái)提高訪(fǎng)問(wèn)效率。常用的服務(wù)器是 Nginx。許多應(yīng)用程序服務(wù)器,例如 Web 服務(wù)器,可以直接訪(fǎng)問(wèn)。但是在實(shí)際生產(chǎn)環(huán)境中,由于負(fù)載均衡、cdn加速等原因,我們還是需要在應(yīng)用服務(wù)器前面增加一個(gè)web服務(wù)器來(lái)提高訪(fǎng)問(wèn)效率。常用的服務(wù)器是 Nginx。
我之前一直在談?wù)撨@臺(tái)服務(wù)器和那臺(tái)服務(wù)器。我想知道我的同學(xué)是否感到困惑。其實(shí)在真正進(jìn)入計(jì)算機(jī)專(zhuān)業(yè)領(lǐng)域之前,我們應(yīng)該已經(jīng)聽(tīng)說(shuō)過(guò)服務(wù)器這個(gè)概念。比如我們以前玩游戲,感覺(jué)卡住的時(shí)候,大家時(shí)不時(shí)就用服務(wù)器這個(gè)詞。但是我真正了解和學(xué)習(xí)了服務(wù)器之后才學(xué)習(xí)服務(wù)器運(yùn)維技術(shù),jetty。那么服務(wù)器究竟是什么?服務(wù)器的概念其實(shí)很簡(jiǎn)單。它是一臺(tái)計(jì)算機(jī)。它和我們?nèi)粘J褂玫碾娔X有什么區(qū)別?首先,它一般沒(méi)有顯示器,它只有一個(gè)主機(jī)。其次,它的操作系統(tǒng)不同于我們常用的Mac OS。更多的 *nix 系統(tǒng)。第三,它運(yùn)行一些服務(wù)器端軟件。比如我們上面提到的Jetty、Nginx,實(shí)際上是服務(wù)器軟件,但是主機(jī)運(yùn)行這些軟件,所以有時(shí)人們會(huì)混淆名稱(chēng)。所以所謂的數(shù)據(jù)庫(kù)服務(wù)器,眾所周知,其實(shí)就是運(yùn)行數(shù)據(jù)庫(kù)的主機(jī)。說(shuō)到服務(wù)器,我們需要掌握的關(guān)鍵知識(shí)就是服務(wù)器操作系統(tǒng),也就是*nix系統(tǒng),如.net等。話(huà)雖如此,其實(shí)一個(gè)簡(jiǎn)單完整的Java Web項(xiàng)目也差不多。讓我們簡(jiǎn)單回顧一下,首先,我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上。現(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。但是主機(jī)運(yùn)行這些軟件,所以有時(shí)人們會(huì)混淆名稱(chēng)。所以所謂的數(shù)據(jù)庫(kù)服務(wù)器,眾所周知,其實(shí)就是運(yùn)行數(shù)據(jù)庫(kù)的主機(jī)。說(shuō)到服務(wù)器,我們需要掌握的關(guān)鍵知識(shí)就是服務(wù)器操作系統(tǒng),也就是*nix系統(tǒng),如.net等。話(huà)雖如此,其實(shí)一個(gè)簡(jiǎn)單完整的Java Web項(xiàng)目也差不多。讓我們簡(jiǎn)單回顧一下,首先,我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上?,F(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。但是主機(jī)運(yùn)行這些軟件,所以有時(shí)人們會(huì)混淆名稱(chēng)。所以所謂的數(shù)據(jù)庫(kù)服務(wù)器,眾所周知,其實(shí)就是運(yùn)行數(shù)據(jù)庫(kù)的主機(jī)。說(shuō)到服務(wù)器,我們需要掌握的關(guān)鍵知識(shí)就是服務(wù)器操作系統(tǒng),也就是*nix系統(tǒng),如.net等。話(huà)雖如此,其實(shí)一個(gè)簡(jiǎn)單完整的Java Web項(xiàng)目也差不多。讓我們簡(jiǎn)單回顧一下,首先,我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上?,F(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。所以所謂的數(shù)據(jù)庫(kù)服務(wù)器,眾所周知,其實(shí)就是運(yùn)行數(shù)據(jù)庫(kù)的主機(jī)。說(shuō)到服務(wù)器,我們需要掌握的關(guān)鍵知識(shí)就是服務(wù)器操作系統(tǒng),也就是*nix系統(tǒng),比如,等等。話(huà)雖如此,其實(shí)一個(gè)簡(jiǎn)單完整的Java Web項(xiàng)目也差不多。讓我們簡(jiǎn)單回顧一下,首先,我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上?,F(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。所以所謂的數(shù)據(jù)庫(kù)服務(wù)器,眾所周知,其實(shí)就是運(yùn)行數(shù)據(jù)庫(kù)的主機(jī)。說(shuō)到服務(wù)器,我們需要掌握的關(guān)鍵知識(shí)就是服務(wù)器操作系統(tǒng),也就是*nix系統(tǒng),如.net等。話(huà)雖如此,其實(shí)一個(gè)簡(jiǎn)單完整的Java Web項(xiàng)目也差不多。讓我們簡(jiǎn)單回顧一下,首先,我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上。現(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。我們需要掌握的關(guān)鍵知識(shí)是服務(wù)器操作系統(tǒng),也就是*nix系統(tǒng),如.net等。話(huà)雖如此,其實(shí)一個(gè)簡(jiǎn)單完整的Java Web項(xiàng)目也差不多。讓我們簡(jiǎn)單回顧一下,首先,我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上?,F(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。我們需要掌握的關(guān)鍵知識(shí)是服務(wù)器操作系統(tǒng),也就是*nix系統(tǒng),如.net等。話(huà)雖如此,其實(shí)一個(gè)簡(jiǎn)單完整的Java Web項(xiàng)目也差不多。讓我們簡(jiǎn)單回顧一下,首先,我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上?,F(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上?,F(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。我們需要使用各種框架和開(kāi)發(fā)技術(shù)來(lái)編寫(xiě)應(yīng)用程序代碼。接下來(lái),我們需要一臺(tái)安裝了*nix系統(tǒng)的主機(jī),在上面安裝web服務(wù)器軟件和應(yīng)用服務(wù)器軟件,然后將我們的應(yīng)用代碼部署到應(yīng)用服務(wù)器上?,F(xiàn)在我們只需要獲取主機(jī)的 IP 地址就可以遠(yuǎn)程訪(fǎng)問(wèn)應(yīng)用程序了。
知識(shí)點(diǎn)列表:
發(fā)展:
1. 視圖層技術(shù) - HTML, CSS, JS, AJAX, Tiles,,
2. 持久層技術(shù)—,
3. ,MVC
4. 項(xiàng)目構(gòu)建工具 Maven
5. 記錄 Log4j
6. 版本控制 Git
數(shù)據(jù)庫(kù)技術(shù):
1. SQL 語(yǔ)句
2. 參數(shù)調(diào)優(yōu)
操作系統(tǒng):
1. 精通Linux系統(tǒng)、原理、Shell命令
服務(wù)器技術(shù):
1. 熟練使用和理解某應(yīng)用服務(wù)器技術(shù)原理()
2. 熟練使用和理解Web服務(wù)器技術(shù)(Nginx)的原理
額外的:
緩存技術(shù):
1. 精通使用和理解一種緩存技術(shù)(Redis,,)
非關(guān)系數(shù)據(jù)庫(kù)
2. 熟練使用和理解非關(guān)系型數(shù)據(jù)庫(kù)()
中間件技術(shù):
1. JMS: 和卡夫卡
2. RPC:Dubbo
設(shè)計(jì)模式:
1. 了解并能夠使用幾種主要的設(shè)計(jì)模式
互聯(lián)網(wǎng):
1. 精通使用和理解一種Web開(kāi)發(fā)技術(shù)(Netty)
24小時(shí)免費(fèi)咨詢(xún)
請(qǐng)輸入您的聯(lián)系電話(huà),座機(jī)請(qǐng)加區(qū)號(hào)