聲明:本欄目所使用的素材都是凱哥學(xué)堂VIP學(xué)員所寫,學(xué)員有權(quán)匿名,對文章有最終解釋權(quán);凱哥學(xué)堂旨在促進(jìn)VIP學(xué)員互相學(xué)習(xí)的基礎(chǔ)上公開筆記。
JavaWeb也就是J2EE,JavaWeb主要是使用各種Java企業(yè)級技術(shù)來解決相關(guān)web互聯(lián)網(wǎng)領(lǐng)域的技術(shù)總和。
而且這些技術(shù)有一個標(biāo)準(zhǔn)也就是J2EE規(guī)范,J2EE規(guī)范是這樣定義J2EE組件的:客戶端應(yīng)用程序和applet是運(yùn)行在客戶端的組件;Java Servlet和Java Server Pages (JSP) 是運(yùn)行在服務(wù)器端的Web組件;Enterprise Java Bean (EJB )組件是運(yùn)行在服務(wù)器端的業(yè)務(wù)組件。J2EE組件和“標(biāo)準(zhǔn)的” Java類的不同點(diǎn)在于:它被裝配在一個J2EE應(yīng)用中,具有固定的格式并遵守J2EE規(guī)范,由J2EE服務(wù)器對其進(jìn)行管理。
所以web包括:web服務(wù)器和web客戶端兩部分。Java在服務(wù)器端的應(yīng)用非常的豐富,比如Servlet,JSP和第三方框架等等。
常見的技術(shù)有以下幾種:
現(xiàn)在最常見的兩種程序架構(gòu)方式就是C/S和B/S架構(gòu),C/S也就是Client/Server架構(gòu),即客戶端/服務(wù)器架構(gòu)。是大家熟知的軟件系統(tǒng)體系結(jié)構(gòu),通過將任務(wù)合理分配到Client端和Server端,降低了系統(tǒng)的通訊開銷,需要安裝客戶端才可進(jìn)行管理操作??蛻舳撕头?wù)器端的程序不同,用戶的操作主要在客戶端,服務(wù)器端主要是提供數(shù)據(jù)管理、數(shù)據(jù)共享、數(shù)據(jù)及系統(tǒng)維護(hù)和并發(fā)控制等,客戶端程序主要完成用戶的具體的業(yè)務(wù)。
所以C/S架構(gòu)的程序?qū)δ軌驕p輕服務(wù)器壓力,而且客戶端是安裝在用戶本地的電腦上,調(diào)用本地的一些硬件設(shè)備就比較方便,適合用于大型游戲、音頻軟件、各種工具類軟件的程序架構(gòu)方式。
但是C/S架構(gòu)也有缺點(diǎn),升級更新還有維護(hù)比較麻煩,系統(tǒng)升級的話,全部的客戶端都需要升級,而且沒有客戶端的話就無法使用任何的功能,設(shè)備需要提前安裝、更新客戶端。 因為這些特性,數(shù)據(jù)管理軟件、網(wǎng)上購物、信息交互部分都不適合使用C/S架構(gòu)。
C/S程序架構(gòu)示意圖:
另外一種B/S架構(gòu),即Browser/Server (瀏覽器/服務(wù)器) 結(jié)構(gòu),是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶界面完全通過瀏覽器實現(xiàn)。在這種結(jié)構(gòu)下,用戶工作界面是通過瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實現(xiàn),形成所謂三層3-tier結(jié)構(gòu)。B/S結(jié)構(gòu)是WEB興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式,WEB瀏覽器是客戶端最主要的應(yīng)用軟件。這種模式統(tǒng)一了客戶端,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務(wù)器上,簡化了系統(tǒng)的開發(fā)、維護(hù)和使用。
客戶機(jī)上只要安裝一個瀏覽器(Browser),如Chrome,F(xiàn)irefox或Internet Explorer,服務(wù)器安裝Oracle、Sybase、Informix或SQL Server等數(shù)據(jù)庫。瀏覽器通過Web Server同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。
以為頁面上的內(nèi)容全部都是從服務(wù)器上下載下來的,以后客戶端沒有什么更新這一說,這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本,在瀏覽器上只需要刷新一下就能看到最新的內(nèi)容,不用更新客戶端。
但是B/S架構(gòu)也有相應(yīng)的缺點(diǎn),游戲方面只能做網(wǎng)頁小游戲,如果是大型游戲的話瀏覽器受不了,而且網(wǎng)絡(luò)和服務(wù)器也支撐不了,因為全部的特效渲染、數(shù)據(jù)計算都得在服務(wù)器上完成后通過網(wǎng)絡(luò)發(fā)送到瀏覽器上,這是不可能完成的,所以B/S架構(gòu)不適合做大型游戲。B/S架構(gòu)不能像C/S架構(gòu)那樣方便的訪問、調(diào)用用戶本地的硬件設(shè)備,訪問起來很麻煩。B/S架構(gòu)把系統(tǒng)功能實現(xiàn)的核心部分集中到服務(wù)器上,所以服務(wù)器的壓力也比較大。
B/S程序架構(gòu)示意圖:
兩種程序架構(gòu)的思維導(dǎo)圖:
在B/S架構(gòu)的程序中,通過瀏覽器對服務(wù)器進(jìn)行的請求分為動態(tài)請求和靜態(tài)請求:
所謂靜態(tài)請求,就是訪問網(wǎng)頁時僅從服務(wù)器上下載靜態(tài)文件,例如網(wǎng)頁的html、js、css、圖片文件等,都屬于靜態(tài)文件。示意圖:
動態(tài)請求則是你的請求會經(jīng)過服務(wù)器上的程序處理,和與數(shù)據(jù)庫交互,然后再反饋到網(wǎng)頁上,例如最經(jīng)典的動態(tài)請求就是登錄賬戶,示意圖:
可以實現(xiàn)動態(tài)頁面的常見技術(shù):
關(guān)于為什么B/S架構(gòu)的服務(wù)器壓力比較大:
這是因為所有的網(wǎng)頁文件都是存放在服務(wù)器的,所以客戶通過瀏覽器訪問網(wǎng)頁時都是需要從服務(wù)器上下載的。并且所有的請求處理都在服務(wù)器上進(jìn)行,動態(tài)請求還得需要通過服務(wù)器上的應(yīng)用程序進(jìn)行處理,并且還要與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的交互,所以相對于C/S架構(gòu)來說B/S架構(gòu)的服務(wù)器壓力要大,通過搭建服務(wù)器分布式處理和集群架構(gòu)能提升服務(wù)器的性能,從而可以解決服務(wù)器由于性能不足而出現(xiàn)的負(fù)載過高的問題。