java各種框架涉及的知識點(diǎn)太多了循集,項(xiàng)目中用到了倒是會用,但是對于原理則一臉懵比蔗草。甚至連為什么要用框架也一知半解咒彤,最基本的servlet也知道的不深入,對它在其中發(fā)揮的作用更是了解的暈暈乎乎的咒精。就有一種站在山腳看哪哪都是山的迷茫感镶柱,真心難受。
改正一下學(xué)習(xí)方式模叙,站在山頂看一下歇拆,最起碼知道我們?yōu)槭裁匆眠@些框架?沒有這些框架之前我們是怎么做的范咨?框架封裝了那些重要的基礎(chǔ)操作故觅?還需要學(xué)習(xí)哪些javaWeb基礎(chǔ)知識,這些知識在框架中的地位如何渠啊?是如何工作的输吏?然后再一點(diǎn)點(diǎn)攻克細(xì)節(jié)!需要重視的是替蛉,前端工具也越來越強(qiáng)大了贯溅,不能停止學(xué)習(xí)拄氯,不能狹隘!
從以下幾個(gè)方面入手(還不太確定):
- JavaWeb發(fā)展史
- 不同框架的作用及優(yōu)點(diǎn)(Spring盗迟,MVC框架坤邪,ORM框架)
- 其中必須要掌握的基礎(chǔ)知識(工作原理,框架如何封裝的)
- 框架的更多使用與原理的學(xué)習(xí)
JavaWeb發(fā)展史
1.web的出現(xiàn):
最初的web在1991年出現(xiàn)罚缕,目的是為了實(shí)現(xiàn)計(jì)算機(jī)之間的信息共享與傳遞的艇纺,即TCP/IP協(xié)議將計(jì)算機(jī)連接在一起,而Web則在其之上邮弹,進(jìn)一步將計(jì)算機(jī)的信息資源連接在一起黔衡。
Web設(shè)計(jì)初衷是一個(gè)靜態(tài)信息資源發(fā)布媒介,通過超文本標(biāo)記語言(HTML)描述信息資源腌乡,通過統(tǒng)一資源標(biāo)識符(URL)定位信息資源盟劫,通過超文本轉(zhuǎn)移協(xié)議(HTTP)請求信息資源∮肱Γ【要掌握web必須理解侣签,這是重點(diǎn)基礎(chǔ)】
2.純靜態(tài)頁面:
最初的時(shí)候,瀏覽器端展示的只有靜態(tài)的文本或圖像信息急迂。實(shí)現(xiàn)原理就是將靜態(tài)的網(wǎng)頁存儲在服務(wù)器中的一個(gè)特定目錄的文件下面影所,然后接受到客戶端的請求時(shí),去該目錄下尋找對應(yīng)的HTML文件返回僚碎。
3.動態(tài)內(nèi)容的出現(xiàn)--CGI:
為滿足人們對動態(tài)內(nèi)容的需求猴娩,出現(xiàn)了CGI【like servlet】。CGI定義了Web服務(wù)器與外部應(yīng)用程序之間的通信接口標(biāo)準(zhǔn)勺阐,因此程序員可以通過編寫需要的符合CGI規(guī)范的代碼卷中,接受web服務(wù)器發(fā)來的請求,并為Web請求生成動態(tài)內(nèi)容(執(zhí)行動態(tài)邏輯渊抽,輸出結(jié)合了動態(tài)處理結(jié)果的靜態(tài)的HTML內(nèi)容-->大量HTML代碼)返回給服務(wù)器蟆豫,進(jìn)而返回給用戶。
而CGI對每個(gè)請求都會啟動一個(gè)進(jìn)程來處理懒闷,因此性能上的擴(kuò)展性不高无埃。而編寫CGI程序當(dāng)時(shí)主要是Perl和C等語言,會在程序中輸出大片的HTML字符串毛雇,可讀性和維護(hù)性是個(gè)大問題嫉称。【這樣代碼看起來很糟糕】
為了處理更復(fù)雜的應(yīng)用灵疮,一種方法是把HTML返回中固定的部分存起來织阅,即一個(gè)返回的HTML模板,為動態(tài)的結(jié)果預(yù)留位置震捣,Web請求處理的時(shí)候荔棉,程序先處理動態(tài)請求得到結(jié)果闹炉,再把模版讀入進(jìn)來,把結(jié)果填充到預(yù)留位置中润樱,形成最終返回的HTML頁面渣触。【感覺就是將CGI時(shí)期的大片HTML代碼封裝成模板了而已壹若,我們?nèi)匀皇切枰止討B(tài)執(zhí)行結(jié)果嵌入HTML中】
4.Web編程腳本語言--PHP/JSP/ASP:
在上面說到的模板方法中嗅钻,仍然是需要繁瑣的人工編寫代碼嵌入HTML模板中,PHP(1994)的出現(xiàn)就代替了這種人工操作店展。PHP可以把程序(動態(tài)內(nèi)容)嵌入到HTML(模版)中去執(zhí)行养篓,執(zhí)行過程為:web服務(wù)器(Apache)接收到用戶請求,判斷該請求是php請求后赂蕴,交給PHP執(zhí)行引擎去執(zhí)行柳弄,將執(zhí)行結(jié)果即一個(gè)HTML頁面,返回給服務(wù)器概说,進(jìn)而返回給用戶碧注。
而后,出現(xiàn)了ASP(1996)和JSP(1998)糖赔,本質(zhì)上也都可以看成是一種支持某種腳本語言編程(分別是VB和Java)的模版引擎应闯。并且在1996年時(shí),W3C發(fā)布了CSS1.0規(guī)范挂捻。CSS允許開發(fā)者用外聯(lián)的樣式表來取代難以維護(hù)的內(nèi)嵌樣式,而不需要逐個(gè)去修改HTML元素船万,這讓HTML頁面更加容易創(chuàng)建和維護(hù)刻撒。
此時(shí),有了這些腳本語言耿导,搭配上后端的數(shù)據(jù)庫技術(shù)声怔,Web已經(jīng)從一個(gè)靜態(tài)資源分享媒介真正變?yōu)榱艘粋€(gè)分布式的計(jì)算平臺了〔丈耄【這樣看來醋火,開發(fā)web項(xiàng)目并不局限于某種語言,只要了解實(shí)現(xiàn)原理箱吕,用啥語言都OK的芥驳。】
5.分布式企業(yè)計(jì)算平臺--J2EE/.Net:
隨著Web的廣泛應(yīng)用時(shí)茬高,在分布式兆旬、安全性、事務(wù)性等方面的要求催生了J2EE(現(xiàn)在已更名為Java EE)平臺在1999年的誕生怎栽,從那時(shí)開始為企業(yè)應(yīng)用提供支撐平臺的各種應(yīng)用服務(wù)器也開始出現(xiàn)了丽猬∷薇ィ【這里需要了解那時(shí)的的javaEE是如何實(shí)現(xiàn)的,又是如何在分布式脚祟、安全性谬以、事務(wù)性上體現(xiàn)的∮勺溃】
Java EE中为黎,定義了其核心規(guī)范,包括:Java Servlet沥寥、Java Server Pages (JSP)和Enterprise Java Bean (EJB )碍舍,Servlet和JSP是運(yùn)行在服務(wù)器端的Web組件,EJB運(yùn)行在服務(wù)器端的業(yè)務(wù)組件邑雅,是一種分布式組件技術(shù)片橡。【EJB的相關(guān)知識了解】
6.各種框架--全棧淮野、MVC捧书、ORM:
面對及其復(fù)雜的web項(xiàng)目,為了提高項(xiàng)目的可維護(hù)性與可擴(kuò)展性骤星,簡化開發(fā)人員的工作经瓷,越來越多的框架被設(shè)計(jì)實(shí)現(xiàn)出來,并且得到廣泛的應(yīng)用洞难。
框架包括全椨咚保框架如Spring,MVC框架如structs與SpringMVC队贱,ORM框架如Hibernate與Mybatis色冀。它們在web項(xiàng)目中有各自的分工,通過Spring將他們整合起來柱嫌。
(此外锋恬,前端技術(shù)也在不斷進(jìn)步,還需學(xué)習(xí)再加進(jìn)來)