五分鐘學(xué)Java:如何才能學(xué)好Java Web里這么多的技術(shù)?

副本_未命名.jpg

原創(chuàng)聲明

本文作者:黃小斜

轉(zhuǎn)載請務(wù)必在文章開頭注明出處和作者。

系列文章介紹

本文是《五分鐘學(xué)Java》系列文章的一篇

本系列文章主要圍繞Java程序員必須掌握的核心技能,結(jié)合我個人三年多的Java學(xué)習(xí)和工作經(jīng)歷,總結(jié)和沉淀下來的方法論,希望能讓Java學(xué)習(xí)這件事變得更簡單,作者目前在阿里做Java,忙里偷閑分享一些技術(shù)文章,有興趣看本系列更多文章可以關(guān)注我的公眾號【Java技術(shù)江湖】

系列文章將會把一些技術(shù)學(xué)習(xí)方法、過程、要領(lǐng)與我的學(xué)習(xí)經(jīng)驗相結(jié)合,更加淺顯易懂,并且我也會把我學(xué)習(xí)時用的資料,書籍和文章拿出來分享給大家,節(jié)省你我的時間。所謂授人以魚也要授人以漁,是本系列文章希望達到的目標。

本文思維導(dǎo)圖

什么是Java Web

不知道Java Web這個詞是從什么時候開始出現(xiàn)的,但是,據(jù)Java官方記載,只有JavaSE和JavaEE這類表述,似乎并沒有Java Web這么一個說法,所以,我更愿意認為,Java Web是各位Java前輩們對于Java在Web方向應(yīng)用的相關(guān)技術(shù)棧,正如現(xiàn)在的Python Web,golang web等等,只不過是通過某種語言來實現(xiàn)web應(yīng)用而已。

讓我們先看看百度百科對于Java Web的定義,Java Web,是用Java技術(shù)來解決相關(guān)web互聯(lián)網(wǎng)領(lǐng)域的技術(shù)總和。web包括:web服務(wù)器和web客戶端兩部分。Java在客戶端的應(yīng)用有java applet,不過使用得很少,Java在服務(wù)器端的應(yīng)用非常的豐富,比如Servlet,JSP和第三方框架等等。Java技術(shù)對Web領(lǐng)域的發(fā)展注入了強大的動力。

乍一看來,和我們上面鎖描述的類似,事實上,在Java招聘市場上,一個Java工程師,首先也要是一個Java Web工程師,因為這基本上是Java工程師的最低要求了,至少你要懂得CRUD,懂得寫一個后臺管理系統(tǒng),懂得和前端聯(lián)調(diào)吧。當然了,在這基礎(chǔ)上,還有很多純后端的Java后端工程師,他們負責造輪子,開發(fā)中間件,Java Web這么初級的東西他們才不愿意碰呢,當然這也是后話了。

Java Web發(fā)展了這么多年,各種新鮮技術(shù)層出不窮,不管是spring全家桶,還是ORM框架,還是各種基于Java開發(fā)的中間件,都有很多新的應(yīng)用和場景。像是最典型的電商場景,淘寶、京東、拼多多,都是把Java Web技術(shù)做到極致的公司,當然了,在Java Web之后,是能夠支持起億萬級流量和用戶的后端架構(gòu)。

這樣看來,Java Web似乎還有不少名堂,簡單的可以做個后臺系統(tǒng),復(fù)雜的也可以支持海量用戶訪問的電商平臺,那么要如何學(xué)習(xí),才能對Java Web從入門到精通呢,不妨一起來看看下面的內(nèi)容。

Java Web到底要學(xué)習(xí)那些東西

那么,作為一個新手Java工程師,如何學(xué)習(xí)Java Web呢,我先假設(shè)你只是一個Java小白,學(xué)過了一些Java基礎(chǔ),對于Web開發(fā)一竅不通,那么你應(yīng)該掌握的東西有哪些呢,不怕嚇到你,真的非常多。

Java基礎(chǔ)知識

首先,請先掌握好Java基礎(chǔ),之前我在第一篇文章已經(jīng)講了,如何學(xué)習(xí)java基礎(chǔ),建議你先去看看那篇文章后,再來看本文,比較容易銜接的上。

要想搞定Java Web,Java基本功必須扎實,像是面向?qū)ο蠡A(chǔ)、集合類、異常處理、IO流、多線程等技術(shù)都是經(jīng)常會用到的。

前端知識

我一個后端工程師,為啥還要懂前端知識呢?想來還有點郁悶,不過其實現(xiàn)在前后端分離的趨勢已經(jīng)很明顯了,很少還有哪個Java工程師需要懂jsp,也很少有Java工程師還在搞全棧了,畢竟現(xiàn)在專業(yè)的H5工程師多的是,你一個做Java的外行何必湊熱鬧。

不過作為一個學(xué)習(xí)者,很多東西還是繞不過去的,比如你要寫一個簡單的web頁面,至少也要會個HTML、CSS和JS吧,然后,如果你想用點高級的語法,可能就要上jQuery了,想搞點漂亮的頁面,再上個bootstrap,最后,你還想用高大上的框架,結(jié)果你掏出了reactjs(不好意思這個我也不會)

對于前端知識,我的建議是,了解一下html、js、css還是有必要的,至少你要能大概看懂前端的代碼,其他的內(nèi)容就不用太在意了,懂得在瀏覽器上使用開發(fā)者工具排查請求問題就行了,現(xiàn)在的前后端交互大多是用json,也不需要你去寫前端代碼。

HTTP和web基礎(chǔ)知識

作為一個Java Web工程師,你天天要打交道的就是http請求,給你一個url,你要如何返回給他一個http的響應(yīng)報文,不過還好,Tomcat幫你把HTTP報文請求和處理的問題解決了,你只要告訴tomcat你要返回什么內(nèi)容給前端就好了,一般來說,前后端用的數(shù)據(jù)格式就是json。

關(guān)于這個http請求,你要了解的東西就不少了,計算機網(wǎng)絡(luò)的基礎(chǔ)知識要知道吧,http協(xié)議的報文結(jié)構(gòu)和常見方法你要知道吧,url的dns解析你也需要懂。

這還只是基礎(chǔ)的,web應(yīng)用里面有兩個常用的技術(shù),叫做session和cookie,session一般存在服務(wù)器上,用于記住用戶狀態(tài),而cookie一般保存在瀏覽器上,用于記錄你的一些常用信息,比如登錄某個網(wǎng)站的賬號密碼,這兩個東西平時你應(yīng)該不陌生,但是Java Web工程師需要合理地使用這兩個東西,以實現(xiàn)自己的應(yīng)用目的。

session和cookie一般用于解決應(yīng)用問題,而網(wǎng)絡(luò)通訊里還有一個重要的內(nèi)容就是安全問題,防止不法分子盜取信息,詐騙盜刷。這里就涉及到了HTTPS協(xié)議,以及使用token、加密算法等技術(shù)來提升應(yīng)用的安全性。

除此之外,還有很多web相關(guān)的技術(shù)知識,這里不再一一列舉,畢竟這些東西,只有真正接觸到了之后,多加實踐,才能更好地進行學(xué)習(xí)和理解。

servlet和jsp

繞來繞去,還是繞不開這兩個早已過氣的技術(shù),以前我們用這兩個東西是直接用,現(xiàn)在我們不直接用,框架會把servlet封裝起來,我們只需要寫一些喜聞樂見的controller就可以了,而jsp早就已經(jīng)退出歷史舞臺了。

這兩個東西沒必要花太多時間,畢竟現(xiàn)在的Java Web其實就是spring全家桶+web相關(guān)技術(shù),接下來我們就來看看spring全家桶應(yīng)該如何學(xué)習(xí)。

spring全家桶

spring全家桶主要包括spring、springmvc和springboot,當然還有springcloud,主要是用于分布式服務(wù)的,我們一個小小的Java Web就不請它出來了。對于前面三樣技術(shù),很多人早就已經(jīng)不陌生了。

spring顛覆了Java中實例管理的方式,實例的管理被統(tǒng)一到spring的bean容器中,而很多切面型邏輯也被AOP這種處理方式給解放出來了,IOC和AOP是spring最令人稱道的兩個特點。

而到了springmvc時代,分層結(jié)構(gòu)開始愈發(fā)流行,model層用于映射數(shù)據(jù),view用于渲染數(shù)據(jù)和前端交互,controller則用來分發(fā)請求。而對于很多的Javaweb應(yīng)用,他們的代碼結(jié)構(gòu)一般也是controller-service-dao這樣的分層結(jié)構(gòu)。springmvc制霸了Java Web應(yīng)用很久了,直到它的進化版springboot的出現(xiàn)。

springboot橫空出世,直接砍掉了復(fù)雜的spring配置,轉(zhuǎn)而用注解的方式簡化了開發(fā)流程,并且直接吃掉了tomcat了,一切從簡。springboot的出現(xiàn)使得JavaWeb的學(xué)習(xí)成本更低了,建議新手朋友直接用springboot開啟你的第一個Java web項目,體驗一定會比用springmvc好得多。

當然了,spring全家桶要細講起來可不止這么些東西,由于篇幅優(yōu)先,后續(xù)會單獨拎出來寫一篇關(guān)于如何學(xué)習(xí)spring全家桶的文章,敬請期待。

數(shù)據(jù)庫

不好意思,把這個老哥給忘了,數(shù)據(jù)庫作為一切web應(yīng)用的基石,沒有它就沒有數(shù)據(jù),應(yīng)用就毫無價值,當然了,讓我們天天沉迷于CRUD無法自拔的也是這個東西。

幾乎沒有哪個web應(yīng)用是不用數(shù)據(jù)庫的,現(xiàn)在市面上最流行的仍然是MySQL數(shù)據(jù)庫,想要做一個web應(yīng)用,先學(xué)會sql的基本語法吧,懂得建表,懂得在sql里CRUD,這樣你才能夠回到代碼里繼續(xù)CRUD(增刪改查)當然了,關(guān)于數(shù)據(jù)庫要學(xué)習(xí)的知識遠不止于此,由于篇幅優(yōu)先,后續(xù)會單獨拎出來寫一篇關(guān)于數(shù)據(jù)庫的文章,敬請期待。

Java Web實用工具和技術(shù)

接下來這些內(nèi)容,都是Java Web周邊的一些開源技術(shù)組件,它們有的是大工程,有的是小項目,總之,它們都是這個技術(shù)生態(tài)中不可缺少的一部分

1、Maven
做一個成熟的構(gòu)建工具,Maven不僅可以幫你管理依賴,還能幫你管理工程目錄,比如我們的工程為什么目錄格式都是一樣的,有src包也有test包,這就是遵守了maven的規(guī)范,這種基于約定的管理方式,使得maven可以非常輕量化地幫你管理和構(gòu)建項目。

2、Tomcat
Tomcat自然是Java Web中的中堅力量,畢竟大部分的Java Web應(yīng)用都運行在tomcat上,作為一個Java Web工程師,還是要盡量多了解Tomcat的實現(xiàn)原理和運行原理,這也有助于你理解web應(yīng)用的運行模式,即使以后換了別的應(yīng)用容器你也可以快速上手。

3、日志組件和單元測試組件
日志組件和單元測試組件都是很實用的技術(shù)組件,平時自己搞項目的話可能不會太在意,但是在公司里的項目是一定要用好這兩個東西的,打好了日志,才能夠排查和監(jiān)控問題,而單元測試組件,可以幫你檢查代碼的正確性,提高代碼質(zhì)量,把bug擋在門外。

4、orm框架
orm框架是什么,其實就是為了更好地進行對數(shù)據(jù)庫的CRUD,而設(shè)計出來給Java使用的持久層映射框架,比如mybatis和hibernate,雖然本質(zhì)上還是在寫sql,但是我們可以直接通過對一個對象進行操作,并且把這個操作映射成一個sql語句,大大簡化了我們操作數(shù)據(jù)庫的流程。

進階后端技術(shù)

剛剛我們也說過了,Java Web應(yīng)用的技術(shù)范圍很廣,小項目可能用到上面這些東西就夠了,而大項目,一些分布式應(yīng)用,要涉及的東西就太多了,這里不展開介紹,因為每一部分的內(nèi)容都值得用一篇文章來講,這里就簡單地給各位介紹一下,有哪些后端技術(shù)是值得我們關(guān)注和學(xué)習(xí)的。

1、緩存
緩存可以幫助數(shù)據(jù)庫緩解讀寫壓力,一般用于數(shù)據(jù)庫讀寫負載無法支撐業(yè)務(wù)場景的情況,像是Redis、memcache這類緩存,都是比較常用的,緩存在web應(yīng)用中也經(jīng)常使用。

2、消息隊列
消息隊列用于處理多個應(yīng)用的消息,負責在分布式應(yīng)用之間進行通信,也適用于高并發(fā)大流量的場景,比如電商購物,下單消息太多,下游處理不來,通過消息隊列先存儲一些,處理另外一些,可以達到限流和削峰的目的

3、分布式服務(wù)
分布式服務(wù)區(qū)別于本地服務(wù),一般用于多個應(yīng)用之間的服務(wù)調(diào)用,比如應(yīng)用A有一個服務(wù)S1,應(yīng)用B有一天個服務(wù)S2,S1要調(diào)用S2,只能通過網(wǎng)絡(luò)傳輸才能實現(xiàn),分布式服務(wù)解決的就是這個問題。

除此之外,還有像負載均衡、反向代理、分布式事務(wù)、分布式數(shù)據(jù)庫等復(fù)雜的應(yīng)用技術(shù),這里不再一一列舉,如果你們感興趣的話,后續(xù)我會再寫一篇關(guān)于如何學(xué)習(xí)分布式技術(shù)的文章。

推薦資源

這篇文章和之前的幾篇不太一樣,內(nèi)容比較多,涉及的技術(shù)也很多,主要是想把Java Web的整體樣貌給講清楚,這里推薦一些相關(guān)的資源,在精不在多。

這里只推薦Java Web的基礎(chǔ)書籍,在后面我們會有另外的文章介紹如何學(xué)習(xí)具體的某個后端技術(shù),比如緩存、消息隊列,以及分布式服務(wù)等等,到那個時候再去推薦書籍也不遲。

書籍

《深入分析 JavaWeb技術(shù)內(nèi)幕》
《Maven實戰(zhàn)》
《spring實戰(zhàn)》
《sql必知必會》

視頻

關(guān)于Java Web的視頻應(yīng)該是市面上最多的,這里我整理了一些還算不錯的視頻資源分享給大家

博客

Java技術(shù)倉庫《Java程序員復(fù)習(xí)指南》
https://github.com/h2pl/Java-Tutorial

整合全網(wǎng)優(yōu)質(zhì)Java學(xué)習(xí)內(nèi)容,幫助你從基礎(chǔ)到進階系統(tǒng)化復(fù)習(xí)Java

總結(jié)

關(guān)于Java Web技術(shù)棧都有哪些東西,以及如何學(xué)習(xí)JavaWeb技術(shù),我們今天就講到這里了,如果還有什么疑問也可以到我公眾號里找我探討,后續(xù)會有更多的文章推出,包括如何系統(tǒng)性地學(xué)習(xí)JavaWeb,敬請期待。

對了,你想問我文章里提到的書籍和視頻去哪找?我已經(jīng)給你準備好了

文中提到的資源都可以免費領(lǐng)取,在我的公眾號【程序員黃小斜】回復(fù)“JavaWeb”即可免費領(lǐng)取對應(yīng)的資源。

寫在最后

對本系列文章有什么建議和意見,也歡迎留言告訴我,期待你的回饋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容