javaweb是什么原理?
如果你是70后、80后程序員,一定要看完這篇文章,保證記憶飽滿。如果你是90后,你應(yīng)該看看這篇文章,因為你可以找到j(luò)avaweb開發(fā)的歷史。
不管怎么說,java語言之所以能長期占據(jù)語言榜的重要原因之一就是其強(qiáng)大的web開發(fā)能力。web開發(fā)是Java的基石(孫在介紹的時候用它來形容),所以了解javaweb開發(fā)的原理非常重要。如果它僅僅談?wù)搄avaweb開發(fā)的原理有點(diǎn)單薄,今天我將與頭條讀者分享javaweb開發(fā)的主要內(nèi)容(我一直打算寫一篇關(guān)于javaweb的文章,但是我還沒有我沒有時間寫它,所以讓讓我們從今天開始。
web開發(fā)的歷史web開發(fā)的歷史不是很長。要了解javaweb開發(fā)的特點(diǎn)(主要是優(yōu)勢),首先要了解web開發(fā)的歷史(簡單回歸)。在早期,網(wǎng)絡(luò)是一個非常簡單的結(jié)構(gòu)。用戶發(fā)送請求,服務(wù)器給出響應(yīng)。在這個時期,我們稱之為web站點(diǎn)的web應(yīng)用程序的特征是靜態(tài)內(nèi)容的集合。看一個圖標(biāo):
圖中的服務(wù)器保存了一系列html腳本來響應(yīng)用戶。;請求。可以說這個時期的web應(yīng)用還是比較簡單的,但是它建立了兩個重要的對象:一個請求(代表請求)和一個響應(yīng)(代表響應(yīng))。如果把web發(fā)展的歷史比作一部美國大片,那么請求和響應(yīng)絕對是這部大片的女主角,每一個都是不可或缺的主角(簡而言之,他們可以t死)。
看到這張照片,我不不知道第一批從事web開發(fā)的80后是不是和我一樣。我已經(jīng)有一些感覺了。為了了解這個結(jié)構(gòu),連續(xù)做了多少個通宵的實驗(實驗環(huán)境比較惡劣)。它不沒關(guān)系,這只是開始。我想你看完這篇文章一定會淚流滿面(相信我)。為了配合這個結(jié)構(gòu)圖,我有一張圖(當(dāng)年的我):
在web開發(fā)的過程中,有一個小插曲,就是在網(wǎng)站發(fā)展到web應(yīng)用的過程中,一個小"小工具"出現(xiàn)了,就是小程序。很多人都知道java是用java小程序起家的(70后80后程序員群體)。當(dāng)時校園里流行網(wǎng)易聊天室(當(dāng)時我大一)。唉,這是一場大火(讓讓我們回憶一下你在學(xué)校機(jī)房上網(wǎng)時的興奮心情。這個聊天室是用小程序建立的。當(dāng)時小程序給了靜態(tài)頁面動態(tài)交互的可能,真的流行了一段時間。現(xiàn)在我們知道了pplet的程序員,你已經(jīng)暴露了你的年齡。看一張圖:
我認(rèn)為在這個時候。;70后80后的低淚已經(jīng)有點(diǎn)濕了。濕漉漉的,自覺在這里呆一分鐘,跟屏幕合個影,發(fā)個朋友圈。
經(jīng)過這一集,真正的三層web開發(fā)來了,一個里程碑式的web處理方法CGI,看一張圖:
隨著CGI的引入,web開發(fā)正式進(jìn)入了動態(tài)處理時代。服務(wù)器可以和客戶進(jìn)行真正意義上的交流,有一個可以存儲數(shù)據(jù)的數(shù)據(jù)庫。雖然CGI的使用周期不長,但是一定要紀(jì)念一下。畢竟是里程碑式的改變。Javaweb技術(shù)只是踩在CGI的肩膀上,來到程序員的面前。javaweb解決了CGI的性能問題。CGI以進(jìn)程為基礎(chǔ)管理請求,而javaweb以線程為基礎(chǔ),處理能力更強(qiáng),占用資源更少。這個核心組件是Servlet。看一組資源占用圖,先看CGI:
再次查看javaweb中的servlet資源圖:
孰優(yōu)孰劣顯而易見。Servlet解決同樣數(shù)量的請求,卻占用更少的系統(tǒng)資源,這也是大多數(shù)程序員放棄CGI,轉(zhuǎn)向javaweb的原因。
此外,開發(fā)一個Servlet并不復(fù)雜。看一個由Servlet編寫的HelloWorld應(yīng)用程序:
這種代碼結(jié)構(gòu)友好嗎?是不是有編碼的感覺?實際上,Servlet只是一個有一些限制的java類,所以開發(fā)Servlet并不復(fù)雜。然后部署到web服務(wù)器上(Tomcat還是很健康的!),然后就等著客戶的要求。這是Servlet的三層部署圖:
javaweb開發(fā)的技術(shù)體系還包括javabean和jsp。將這三種技術(shù)與MVC結(jié)構(gòu)相結(jié)合,是javaweb開發(fā)的基本內(nèi)容。讓讓我們先來看看MVC的功能圖:
讓讓我們來看看結(jié)合ServletjavaBeanJSP的Model2開發(fā)結(jié)構(gòu):
這個結(jié)構(gòu)是一個標(biāo)準(zhǔn)的Javaweb開發(fā)結(jié)構(gòu)。這樣的a"清潔"現(xiàn)在描述圖?以上是標(biāo)準(zhǔn)javaweb開發(fā)的歷史描述。當(dāng)然,這并不是說這些內(nèi)容已經(jīng)過時了,而是一直以來都是官方的標(biāo)準(zhǔn)解決方案。It只是web的發(fā)展迎來了另一個階段,繁榮的開源架構(gòu)時代已經(jīng)到來。。。
開源框架時代的典型代表是Struts,Spring和Hibernate,簡稱SSH。
嚴(yán)格來說,這部分內(nèi)容并不是官方的解決方案,但是這些解決方案已經(jīng)得到了廣大程序員的支持。一方面,EJB方案過于沉重。另一方面,開源框架使用起來非常方便靈活,所以從2003年開始就被普遍使用。
讓我簡單描述一下這三個框架:
Struts基于MVC結(jié)構(gòu)的解決方案分為兩個版本:struts1(已經(jīng)淘汰,用過Struts1的程序員都老了)和struts2。像Python一樣,這兩個版本是不兼容的。目前,Struts2的最新版本是2.5.14.1。簡單來說,Struts就是搭建一個現(xiàn)成的MVC框架,程序員可以在這個框架中添加代碼,使用起來非常方便。
Hib
關(guān)于游戲的運(yùn)行原理_?
首先,讓我們讓我們來看看網(wǎng)絡(luò)游戲的工作原理:網(wǎng)絡(luò)游戲是這樣工作的:
1.服務(wù)器記錄并保存所有用戶信息,所有信息修改都由服務(wù)器完成。
2.服務(wù)器接受客戶端的請求,向客戶端發(fā)送必要的信息,讓播放器正常播放。
3.服務(wù)器接收客戶端反饋的信息,并根據(jù)反饋信息修改游戲賬號。從上面的簡單介紹可以看出,網(wǎng)絡(luò)游戲可以認(rèn)為是這樣工作的:客戶端電腦操作服務(wù)器電腦修改游戲賬號信息!現(xiàn)在大部分網(wǎng)絡(luò)游戲都是基于互聯(lián)網(wǎng)上的客戶端/服務(wù)器模式。服務(wù)器程序運(yùn)行在游戲服務(wù)器上,游戲設(shè)計者在其中創(chuàng)建了一個巨大的游戲空間,世界各地的玩家可以通過運(yùn)行客戶端程序同時登錄游戲。簡單來說,網(wǎng)絡(luò)游戲其實就是游戲開發(fā)商提供的一個游戲環(huán)境,玩家在這個環(huán)境下相對自由開放的玩游戲。網(wǎng)游制作不是說說而已,具體可以看一下這個環(huán)節(jié)。里面的知識可能對你有用。
