1.基礎(chǔ)技術(shù)
Web應(yīng)用的簡易流程:瀏覽器向Web服務(wù)器請求,Web應(yīng)用根據(jù)請求信息進行業(yè)務(wù)邏輯處理,如果需要查詢數(shù)據(jù),則與數(shù)據(jù)庫交互即可;然后把結(jié)果返回給用戶的瀏覽器;最后瀏覽器將頁面渲染并呈現(xiàn)出來。如下圖所示:
Web服務(wù)器介于操作系統(tǒng)和Web應(yīng)用之間,通常被稱為中間件,比較流行的有IIS、Apache、Tomcat、JBoss、WebSphere、WebLogic等等。這里討論的Web后端技術(shù)僅涉及到Web應(yīng)用。下面我們來看看其發(fā)展歷程:
最早使用CGI(Common Gateway Interface,通用網(wǎng)關(guān)接口),可惜我完美地錯過了。據(jù)說在這個時代,可以使用C、Perl等語言,通過printf將希望返回的HTML內(nèi)容一行一行地寫出來。這種方法費時費力,可讀性很差。后來PHP語言出現(xiàn)了,PHP可以將動態(tài)內(nèi)容嵌入到HTML中執(zhí)行,可惜我只是看過PHP代碼,沒有實際編程。再后來微軟提出的ASP和Sun提出的JSP,我很榮幸地開始使用ASP和JSP編程了,我們可以先看下JSP的廬山真面目:
可以看出,JSP將Java代碼嵌入到HTML頁面中,并用<%= %>標(biāo)識。我們將包含這個代碼的文件放入到Tomcat(Web容器的一種),然后就可以運行了。
雖然ASP、JSP等提高了應(yīng)用開發(fā)效率,但對一個復(fù)雜的大型Web應(yīng)用來說,頁面顯示和邏輯代碼混雜在一起,可讀性慢慢地就變差了。此時,引入了MVC(Model-View-Controller,模型-視圖-控制器)架構(gòu),其中,模型的職責(zé)是:封裝與業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)和數(shù)據(jù)處理方法;視圖的職責(zé)是數(shù)據(jù)的展示;控制器的職現(xiàn)是:根據(jù)請求信息,路由至模型,并將響應(yīng)消息定位到視圖。Java針對Web應(yīng)用制定Servlet規(guī)范:把Web應(yīng)用程序定義為“Servlet、HTML頁面、類以及其他資源的集合”,并將Servlet將HTTP公開給Java,如下圖所示:
Servlet規(guī)范存在一些沒有解決的問題:
l Web應(yīng)用程序處理請求時要解決的日常任務(wù):
l 呈現(xiàn)表示層(HTML);
l 請求參數(shù)到Java類型的數(shù)據(jù)綁定;
l 驗證數(shù)據(jù);
l 業(yè)務(wù)邏輯的組織;
l 訪問數(shù)據(jù)層。
這些問題在Web應(yīng)用編程中被看作是公共通用問題,“不重復(fù)發(fā)明輪子”是軟件開發(fā)工程領(lǐng)域中提高軟件生產(chǎn)效率的重要思想。于是,產(chǎn)生了很多諸如Struct、Spring、MyBatis等等框架(后端使用不同的語言,分別對應(yīng)不同的框架,這里以Java為例)。到這里,Web后端的基礎(chǔ)畫像如圖所示:
2.基本原理
我們以Java語言生態(tài)為例來說明Web后端的簡要處理過程。如下圖所示:
請求到達Socket后,Tomcat將啟動Servlet并將請求的IP地址、請求參數(shù)傳給Servlet對象,然后根據(jù)URL地址匹配Servlet處理類,并映射到對應(yīng)的處理方法。請求進入處理方法之后,如果是需要將數(shù)據(jù)保存在數(shù)據(jù)庫,則通過JDBC連接數(shù)據(jù),將數(shù)據(jù)存入到數(shù)據(jù)庫中;如果需要提取數(shù)據(jù)并傳到頁面,該方法也會從數(shù)據(jù)庫中取出數(shù)據(jù),經(jīng)過反序列化處理,生成Java對象,并將其序列化送到瀏覽器去渲染并展示。
-
Web
+關(guān)注
關(guān)注
2文章
1255瀏覽量
69299 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3752瀏覽量
64239 -
瀏覽器
+關(guān)注
關(guān)注
1文章
1009瀏覽量
35241
發(fā)布評論請先 登錄
相關(guān)推薦
評論