教程揭秘 | 動力節(jié)點內(nèi)部Java零基礎(chǔ)教學(xué)文檔第七篇:servlet(1)
接上期后續(xù)
本期分享第七章節(jié)-servlet
已經(jīng)分享過半了,你們都跟上了嗎?
每天都在學(xué)習(xí)嘛?
有什么不會的嘛?
今日教學(xué)文檔分享來了?

今日新篇章
【Web開發(fā)和HTTP協(xié)議】
1.?Web開發(fā)概述
1.1?web概述
萬維網(wǎng)(英語:World Wide Web)亦作WWW、Web、全球廣域網(wǎng),是一個透過互聯(lián)網(wǎng)訪問的,由許多互相鏈接的超文本組成的信息系統(tǒng)。英國科學(xué)家蒂姆·伯納斯-李于1989年發(fā)明了萬維網(wǎng)。1990年他在瑞士CERN的工作期間編寫了第一個網(wǎng)頁瀏覽器。網(wǎng)頁瀏覽器于1991年1月向其他研究機構(gòu)發(fā)行,并于同年8月向公眾開放。
萬維網(wǎng)是信息時代發(fā)展的核心,也是數(shù)十億人在互聯(lián)網(wǎng)上進(jìn)行交互的主要工具。網(wǎng)頁主要是文本文件格式化和超文本置標(biāo)語言(HTML)。除了格式化文字之外,網(wǎng)頁還可能包含圖片、視頻、聲音和軟件組件,這些組件會在用戶的網(wǎng)頁瀏覽器中呈現(xiàn)為多媒體內(nèi)容的連貫頁面。
蒂姆·伯納斯-李的另一個才華橫溢的突破是將超文本嫁接到因特網(wǎng)上。在他的《編織萬維網(wǎng)》一書中解釋,他曾多次向技術(shù)社群的成員暗示這兩種技術(shù)結(jié)合是可行的,但是卻沒有任何人接受他的建議,他最后只好自己解決了這個計劃。他發(fā)明了三項關(guān)鍵技術(shù):
1.?一個全球網(wǎng)絡(luò)資源唯一認(rèn)證的系統(tǒng),統(tǒng)一資源標(biāo)志符(URI)
2.?超文本標(biāo)記語言(HTML)
3.?超文本傳輸協(xié)議(HTTP)
1.2?B/S架構(gòu)的誕生
B是瀏覽器(Web Browser)的縮寫。S是(Application Server)應(yīng)用服務(wù)器的縮寫
網(wǎng)頁瀏覽器(英語:Web Browser,常簡稱為瀏覽器)是一種用于檢索并展示萬維網(wǎng)信息資源的應(yīng)用程序。這些信息資源可為網(wǎng)頁、圖片、影音或其他內(nèi)容,它們由統(tǒng)一資源標(biāo)志符標(biāo)識。信息資源中的超鏈接可使用戶方便地瀏覽相關(guān)信息。網(wǎng)頁瀏覽器雖然主要用于使用萬維網(wǎng),但也可用于獲取專用網(wǎng)絡(luò)中網(wǎng)頁服務(wù)器之信息或文件系統(tǒng)內(nèi)之文件。
蒂姆·伯納斯-李于1990年發(fā)明了第一個網(wǎng)頁瀏覽器WorldWideWeb。然后伯納斯-李雇用了妮可拉·佩洛編寫LMB瀏覽器,能在啞終端上顯示網(wǎng)頁,于1991年發(fā)行。
1993年,馬克·安德森發(fā)布Mosaic——“世界上最流行的瀏覽器”,進(jìn)一步推動了瀏覽器的創(chuàng)新,這使得萬維網(wǎng)更易于使用。安德森的瀏覽器引發(fā)了1990年代的互聯(lián)網(wǎng)熱潮。安德森是NCSA中Mosaic團隊的領(lǐng)導(dǎo)者,他不久后辭職并成立了自己的公司——Netscape,發(fā)布了受Mosaic影響的Netscape Navigator。Netscape Navigator很快便成為世界上最流行的瀏覽器,市占率一度達(dá)到90%。也標(biāo)志著BS架構(gòu)的時代到來。
作為應(yīng)對,錯失了互聯(lián)網(wǎng)浪潮的微軟匆促購入了Spyglass公司的技術(shù),發(fā)布Internet Explorer。這引發(fā)了第一輪瀏覽器大戰(zhàn)。因捆綁于Windows,Internet Explorer于網(wǎng)頁瀏覽器市場獲取了主導(dǎo)地位,其市占率于2002年達(dá)到最高時超過95%。
1.3?web通信
Web通信采用B/S模式,即瀏覽器服務(wù)器通信。通過超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)進(jìn)行通信。通過瀏覽器地址欄編寫 URL,向服務(wù)器發(fā)送一個請求,服務(wù)器端對該請求做出相應(yīng)的處理,處理完畢后會向瀏覽器作出一個響應(yīng),將數(shù)據(jù)發(fā)送給瀏覽器。瀏覽器做出響應(yīng)渲染呈現(xiàn)在用戶瀏覽器界面。
?

存在于 web 應(yīng)用服務(wù)器可供外界訪問的資源就是 web 資源,它分為如下兩種:
1.?靜態(tài)資源:指 web 頁面中供人們?yōu)g覽的數(shù)據(jù)始終是不變。比如:HTML、CSS、JS、圖片、多媒體。
2.?動態(tài)資源:指 web 頁面中供人們?yōu)g覽的數(shù)據(jù)是由程序產(chǎn)生的,不同時間點訪問web 頁面看到的內(nèi)容各不相同。比如:JSP/Servlet、ASP、PHP。
2.?WEB開發(fā)基石-HTTP協(xié)議
2.1?HTTP協(xié)議背景 ?ip ?dns ftp
超文本傳輸協(xié)議(英語:HyperText Transfer Protocol,縮寫:HTTP)是一種用于分布式、協(xié)作式和超媒體信息系統(tǒng)的應(yīng)用層協(xié)議。HTTP是萬維網(wǎng)的數(shù)據(jù)通信的基礎(chǔ)。
設(shè)計HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法。通過HTTP或者HTTPS協(xié)議請求的資源由統(tǒng)一資源標(biāo)識符(Uniform Resource Identifiers,URI)來標(biāo)識。
?
HTTP的發(fā)展是由蒂姆·伯納斯-李于1989年在歐洲核子研究組織(CERN)所發(fā)起。HTTP的標(biāo)準(zhǔn)制定由萬維網(wǎng)協(xié)會(World Wide Web Consortium,W3C)和互聯(lián)網(wǎng)工程任務(wù)組(Internet Engineering Task Force,IETF)進(jìn)行協(xié)調(diào),最終發(fā)布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定義了HTTP協(xié)議中現(xiàn)今廣泛使用的一個版本——HTTP 1.1。
2014年12月,互聯(lián)網(wǎng)工程任務(wù)組(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小組將HTTP/2標(biāo)準(zhǔn)提議遞交至IESG進(jìn)行討論,于2015年2月17日被批準(zhǔn)。HTTP/2標(biāo)準(zhǔn)于2015年5月以RFC 7540正式發(fā)表,取代HTTP 1.1成為HTTP的實現(xiàn)標(biāo)準(zhǔn)。
2.2?HTTP協(xié)議概述
HTTP是一個客戶端(用戶)和服務(wù)端(網(wǎng)站)之間請求和應(yīng)答的標(biāo)準(zhǔn),通常使用TCP協(xié)議。通過使用網(wǎng)頁瀏覽器、網(wǎng)絡(luò)爬蟲或者其它的工具,客戶端發(fā)起一個HTTP請求到服務(wù)器上指定端口(默認(rèn)端口為80)。我們稱這個客戶端為用戶代理程序(user agent)。應(yīng)答的服務(wù)器上存儲著一些資源,比如HTML文件和圖像。我們稱這個應(yīng)答服務(wù)器為源服務(wù)器(origin server)。在用戶代理和源服務(wù)器中間可能存在多個“中間層”,比如代理服務(wù)器、網(wǎng)關(guān)或者隧道(tunnel)。
盡管TCP/IP協(xié)議是互聯(lián)網(wǎng)上最流行的應(yīng)用,但是在HTTP協(xié)議中并沒有規(guī)定它必須使用或它支持的層。事實上HTTP可以在任何互聯(lián)網(wǎng)協(xié)議或其他網(wǎng)絡(luò)上實現(xiàn)。HTTP假定其下層協(xié)議提供可靠的傳輸。因此,任何能夠提供這種保證的協(xié)議都可以被其使用,所以其在TCP/IP協(xié)議族使用TCP作為其傳輸層。
通常,由HTTP客戶端發(fā)起一個請求,創(chuàng)建一個到服務(wù)器指定端口(默認(rèn)是80端口)的TCP連接。HTTP服務(wù)器則在那個端口監(jiān)聽客戶端的請求。一旦收到請求,服務(wù)器會向客戶端返回一個狀態(tài),比如"HTTP/1.1 200 OK",以及返回的內(nèi)容,如請求的文件、錯誤消息、或者其它信息。
2.3?HTTP請求協(xié)議
2.3.1?格式
?


2.3.2?代碼示例

2.4?HTTP響應(yīng)協(xié)議
2.4.1?格式


2.4.2?代碼示例
?
?
?
?

3.?應(yīng)用服務(wù)器
3.1?應(yīng)用服務(wù)器的誕生
應(yīng)用程序服務(wù)器(英語:application server)是一種軟件框架,提供一個應(yīng)用程序執(zhí)行的環(huán)境。用于為應(yīng)用程序提供安全、數(shù)據(jù)、事務(wù)支持、負(fù)載平衡大型分布式系統(tǒng)管理等服務(wù)。
這個名詞最初是用來討論主從式架構(gòu)系統(tǒng)時,用來區(qū)分?jǐn)?shù)據(jù)庫服務(wù)器、文件服務(wù)器等的不同。但現(xiàn)今常指能運行Web應(yīng)用程序的Web服務(wù)器。
為什么會出現(xiàn)應(yīng)用服務(wù)器呢?從程序復(fù)用性及架構(gòu)角度思考。
3.2?Tomcat應(yīng)用服務(wù)器
3.2.1?Tomcat應(yīng)用服務(wù)器概述 ?
Tomcat 服務(wù)器是一個免費的開放源代碼的 Web 應(yīng)用服務(wù)器,屬于輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試 JSP 程序的首選。對于一個初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺機器上配置好 Apache 服務(wù)器,可利用它響應(yīng) HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)頁面的訪問請求。實際上 Tomcat 部分是 Apache 服務(wù)器的擴展,但它是獨立運行的,所以當(dāng)你運行 tomcat 時,它實際上作為一個與 Apache 獨立的進(jìn)程單獨運行的。另外,Tomcat 和 IIS 等 Web 服務(wù)器一樣,具有處理 HTML 頁面的功能,另外它還是一個 Servlet 和 JSP 容器,獨立的 Servlet 容器是 Tomcat 的默認(rèn)模式。不過,Tomcat 處理靜態(tài) HTML 的能力不如 Apache 服務(wù)器。目前 Tomcat 最新版本為10。
官網(wǎng):https://tomcat.apache.org/
?

當(dāng)前最新版本是 Tomcat10,我們課程中使用 Tomcat9。Tomcat7 支持Servlet3.0,而 Tomcat6 只支持 Servlet2.5!
Servlet,JSP 規(guī)范與 Tomcat 版本的對應(yīng)

3.2.2?Tomcat下載、安裝、啟動
1.官方下載地址:http://tomcat.apache.org
2.Tomcat 分為安裝版和解壓版:
安裝版是.exe 形式的安裝包,雙擊安裝到我們的電腦上,一臺電腦上只能安裝一個,用的比較少。
解壓版,即綠色版,解壓后直接使用,解壓份數(shù)無限制,用的比較多。注意要解壓到一個沒有中文及空格的文件夾中。例如:D:\soft\tomcat\apache-tomcat-7.0.78
3.啟動 Tomcat 服務(wù)器:
A.啟動前必須配置 JAVA_HOME 環(huán)境變量,變量值為 JDK 安裝目錄。因為 Tomcat 程序本身是用 java 寫的,需要用到 JDK。
B.進(jìn)入到 Tomcat 解壓目錄下的 bin\startup.bat, 雙擊可啟動 Tomcat 服務(wù)器
?

C.進(jìn)入到 Tomcat 解壓目錄下的 bin\shutdown.bat 雙擊即可關(guān)閉 Tomcat 服務(wù)器
D.啟動完成后可以在瀏覽器地址欄輸入:http://localhost:8080 來檢查 Tomcat 是否
啟動成功,如果看到如下頁面。則恭喜你成功了
?

4.啟動問題:如果啟動有問題,首先檢查 JAVA_HOME 環(huán)境變量配置是否正確,再檢查8080 端口是否被別的應(yīng)用程序占用。(Tomcat 默認(rèn)使用端口號為 8080)
3.2.3?Tomcat目錄結(jié)構(gòu)
?

3.2.3.1?bin
該目錄下存放二進(jìn)制可執(zhí)行文件,有 startup.bat 和 shutdown.bat 文件(其余文件無需理會),startup.bat 用來啟動 Tomcat,但需要先配置JAVA_HOME 環(huán)境變量才能啟動,shutdown.bat 用來停止 Tomcat
3.2.3.2?conf
這是一個非常非常重要的目錄,這個目錄下有四個最為重要的文件:
server.xml:配置整個服務(wù)器信息。例如修改端口號,添加虛擬主機等;以后會詳細(xì)介紹這個文件;
端口配置:
?
context.xml:容器默認(rèn)配置
?
web.xml?: 服務(wù)器自身的默認(rèn)servlet、支持的媒體類型映射、歡迎頁面等配置
?
3.2.3.3?lib
Tomcat 的類庫,里面是tomcat運行時需要的相關(guān) jar 文件
?

3.2.3.4?logs
這個目錄中都是日志文件,記錄了 Tomcat 啟動和關(guān)閉的信息,如果啟動 Tomcat 時有錯誤,那么異常也會記錄在日志文件中。
3.2.3.5?temp
存放 Tomcat 的臨時文件,這個目錄下的東西可以在停止 Tomcat 后刪除!
3.2.3.6?webapps
存放 web 項目的目錄,其中每個文件夾都是一個項目;如果這個目錄下已經(jīng)存在了目錄,那么都是 tomcat 自帶的項目。其中 ROOT 是一個特殊的項目,在地址欄中沒有給出項目目錄時,對應(yīng)的就是 ROOT 項目。
http://localhost:8080/examples,進(jìn)入示例項目。其中 examples 就是項目名,即文
件夾的名字。
3.2.3.7?work
運行時生成的文件,最終運行的文件都在這里。通過 webapps 中的項目生成的!可以把這個目錄下的內(nèi)容刪除,再次運行時會生再次生成 work 目錄。當(dāng)客戶端用戶訪問一個 JSP 文件時,Tomcat 會通過 JSP 生成 Java 文
件,然后再編譯 Java 文件生成 class 文件,生成的 java 和 class 文件都會存放到這個目錄下。
3.2.4?創(chuàng)建靜態(tài)web應(yīng)用
創(chuàng)建靜態(tài) web 應(yīng)用并訪問的步驟如下:
1.在 tomcat 的 webapps 下創(chuàng)建一個 hello 目錄;
2.在 webapps\hello\下創(chuàng)建 hello.html,內(nèi)容如下:

3.啟動 tomcat;
4.打開瀏覽器訪問 http://localhost:8080/hello/hello.html

5.在同一個教室內(nèi),大家可以通過:http://192.168.137.1:8080/hello/hello.html這個地址訪問服務(wù)。
具體ip查看: ?cmd--->ipconfig
6.?查看下請求與響應(yīng)的信息
7.?靜態(tài)web應(yīng)用于動態(tài)web應(yīng)用
???靜態(tài)應(yīng)用:數(shù)據(jù)在html頁面寫死
???動態(tài)應(yīng)用:頁面中的數(shù)據(jù)是從數(shù)據(jù)庫中獲取
8、tomcat閃退問題:
1)?tomcat軟件存放在中文目錄下 ?
2)?計算機名為中文
3)?jdk配置問題:必須配置JAVA_HOME、不要去配置classpath
4.?IDEA與Tomcat
給 IDEA配置 Tomcat 服務(wù)器后,我們可以把服務(wù)器的啟動和停止交給 IDEA來管理,簡化我們開發(fā),提高開發(fā)效率。
4.1?IDEA集成Tomcat
4.1.1?在磁盤的某個根目錄解壓tomcat

4.1.2?在IDEA中配置tomcat
















更多干貨我們下期再說!
下期會分享
第七章節(jié)
servlet
第二篇章
相關(guān)知識~
下期見!??
