TomcatHttp協議


1 javaWEB

1.1 Web概述

Web在英文中的含義是網狀物,網絡。在計算機領域,它通常指的是后者,即網絡。像我們前面接觸的WWW,它是由3個單詞組成的,即:World Wide Web,中文含義是萬維網。而我們前面學的HTMLCSSJS的參考文檔《W3School全套教程》中的W3C就是萬維網聯盟。他們的出現都是為了讓我們在網絡的世界中獲取資源,這些資源的存放之處,我們稱之為網站。我們通過輸入網站的地址(即:網址),就可以訪問網站中提供的資源。在網上我們能訪問到的內容全是資源(不區分局域網還是廣域網)。只不過,不同類型的資源展示的效果不一樣。

首先,我們先來介紹資源的分類,它分為靜態資源和動態資源。其中:

靜態資源指的是,網站中提供給人們展示的資源是一成不變的,也就是說不同人或者在不同時間,看到的內容都是一樣的。例如:我們看到的新聞,網站的使用手冊,網站功能說明文檔等等。而作為開發者,我們編寫的html,css,js,圖片,多媒體等等都可以稱為靜態資源。

動態資源它指的是,網站中提供給人們展示的資源是由程序產生的,在不同的時間或者用不同的人員由于身份的不同,所看到的內容是不一樣的。例如:我們在12306上購買火車票,火車票的余票數由于時間的變化,會逐漸的減少,直到最后沒有余票。還有,我們在CSDN上下載資料,只有登錄成功后,且積分足夠時才能下載。否則就不能下載,這就是訪客身份和會員身份的區別。作為開發人員,我們編寫的JSPservletphpASP等都是動態資源。

關于廣域網和局域網的劃分,廣域網指的就是萬維網,也就是我們說的互聯網。局域網是指的是在一定范圍之內可以訪問的網絡,出了這個范圍,就不能再使用的網絡。

1.2 系統結構

1.2.1 系統結構簡介

在我們前面課程的學習中,開發的都是Java工程。這些工程在企業中稱之為項目或者產品。項目也好,產品也罷,它是有系統架構的,系統架構的劃分有很多種方式。我們今天討論的是基礎結構上的劃分。除此之外,還有技術選型劃分,部署方式劃分等等。

基礎結構劃分:C/S結構,B/S結構兩類。

1.2.2 C/S結構

它指的是客戶端——服務器的方式。其中C代表著Client,S代表著服務器。C/S結構的系統設計圖如下:

1.3.3 B/S結構

它指的是瀏覽器——服務器的方式。其中B代表著Browser,S代表著服務器。B/S結構的系統設計圖如下:

1.3.4 兩種結構的區別及優略

兩種結構的區別

第一:硬件環境不同,C/S通常是建立在專用的網絡或小范圍的網絡環境上(即局域網),且必須要安裝客戶端。而B/S是建立在廣域網上的,適應范圍強,通常有操作系統和瀏覽器就行。

第二:C/S結構比B/S結構更安全,因為用戶群相對固定,對信息的保護更強。

第三:B/S結構維護升級比較簡單,而C/S結構維護升級相對困難。

優略

1 C/S:是能充分發揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務器。對應的優點就是客戶端響應速度快。

2 B/S:總體擁有成本低、維護方便、 分布性強、開發簡單,可以不用安裝任何專門的軟件就能 實現在任何地方進行操作,客戶端零維護,系統的擴展非常容易,只要有一臺能上網的電腦就能使用。

關于課程中結構的選擇

我們的課程中涉及的系統結構都是是基于B/S結構。

2 Tomcat

2.1 Tomcat介紹

2.1.1 關于服務器

服務器的概念非常的廣泛,它可以指代一臺特殊的計算機(相比普通計算機運行更快、負載更高、價格更貴),也可以指代用于部署網站的應用。我們這里說的服務器,其實是web服務器,或者應用服務器。它本質就是一個軟件,一個應用。作用就是發布我們的應用(工程),讓用戶可以通過瀏覽器訪問我們的應用。

常見的應用服務器,請看下表:

服務器名稱說明
weblogic實現了javaEE規范,重量級服務器,又稱為javaEE容器
websphere實現了javaEE規范,重量級服務器。
JBOSS實現了JavaEE規范,重量級服務器。免費的。
Tomcat實現了jsp/servlet規范,是一個輕量級服務器,開源免費。

2.1.2 Tomcat下載與安裝

Tomcat官網下載地址

?

2.1.3 Tomcat各版本所需支持

2.1.4 Tomcat目錄結構詳解

2.2 Tomcat基本使用

2.2.1 Tomcat啟動和停止及問題分析解決

1)啟動和停止

Tomcat服務器的啟動文件在二進制文件目錄中:

,這兩個文件就是Tomcat的啟動文件。

Tomcat服務器的停止文件也在二進制文件目錄中:

,這兩個文件就是Tomcat的停止文件。

其中.bat文件是針對windows系統的運行程序,.sh文件是針對linux系統的運行程序。

2)啟動問題

第一個問題:啟動一閃而過

原因:沒有配置環境變量。

解決辦法:配置上JAVA_HOME環境變量

第二個:Address already in use : JVM_Bind

原因:端口被占用

解決辦法:找到占用該端口的應用

進程不重要:使用cmd命令:netstat -a -o 查看pid 在任務管理器中結束占用端口的進程。

進程很重要:修改自己的端口號。修改的是Tomcat目錄下\conf\server.xml中的配置。

netstat -aon|findstr "8888"

第三個:啟動產生很多異常,但能正常啟動

原因:Tomcat中部署著很多項目,每次啟動這些項目都會啟動。而這些項目中有啟動報異常的。

解決辦法:

能找到報異常的項目,就把它從發布目錄中移除。

不能確定報異常的項目,就重新解壓一個新的Tomcat。

第四個:其它問題

例如:啟動產生異常,但是不能正常啟動。此時就需要解壓一個新的Tomcat啟動,來確定是系統問題,還是Tomcat的問題。

所以,此時就需要具體問題,具體分析,然后再對癥解決。

第五個問題: 亂碼

1 找到Tomcat目錄下conf文件夾中的logging.properties文件

2 找到文件中的java.util.logging.ConsoleHandler.encoding = UTF-8,修改成GBK

2.2.2 IDEA集成Tomcat服務器

第一步

第二步

第三步

2.2.3 Linux系統安裝Tomcat

第一步:下載tomcat

參考2.1.2小節的《Tomcat下載與安裝》進入Tomcat官網,找到對應版本點擊download進入下載頁面,如下圖:

第二步:上傳到linux

在crt上 使用 alt+p 將windows上的軟件拖進去即可(root目錄)

第三步:在 /usr/local 新建一個文件夾tomcat

<span style="background-color:#f8f8f8"><span style="color:#333333">mkdir /usr/local/tomcat</span></span>

第四步:移動 tomcat...tar.gz 到 /usr/local/tomcat

<span style="background-color:#f8f8f8"><span style="color:#333333">mv apache-tomcat-8.5.32.tar.gz /usr/local/tomcat/</span></span>

第五步:進入/usr/local/tomcat目錄,解壓Tomcat

<span style="background-color:#f8f8f8"><span style="color:#333333">cd /usr/local/tomcat
tar -xvf apache-tomcat-8.5.32.tar.gz</span></span>

第六步:進入 /usr/local/tomcat/apache-tomcat-8.5.32/bin

<span style="background-color:#f8f8f8"><span style="color:#333333">cd /usr/local/tomcat/apache-tomcat-8.5.32/bin</span></span>

第七步:啟動tomcat

<span style="background-color:#f8f8f8"><span style="color:#333333">方式1:sh startup.sh
方式2:./startup.sh</span></span>

第八步:修改防火墻的規則

<span style="background-color:#f8f8f8"><span style="color:#333333">方式1:service iptables stop  關閉防火墻(不建議); 用到哪一個端口號就放行哪一個(80,8080,3306...)
?
方式2:放行8080 端口修改配置文件cd /etc/sysconfigvi iptables復制(yy , p)  -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT改成-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT重啟加載防火墻或者重啟防火墻service iptables reload ?或者service iptables restart</span></span>

2.3 Tomcat發布應用-JavaWeb應用

2.3.1 JavaWeb工程概述

JavaWeb應用是一個全新的應用種類。這類應用程序指供瀏覽器訪問的程序,通常也簡稱為web應用。

一個web應用由多個靜態web資源和動態web資源組成,例如:html、css、js文件,jsp文件、java程序、支持jar包、工程配置文件、圖片、音視頻等等。

Web應用開發好后,若想供外界訪問,需要把web應用所在目錄交給Web服務器管理(Tomcat就是Web服務器之一),這個過程稱之為虛似目錄的映射。

2.3.2 JavaWeb應用目錄結構詳解

<span style="background-color:#f8f8f8"><span style="color:#333333">myapp--------------應用名稱1.htmlcss/css.cssjs/demo.jsWEB-INF--------如果有web.xml或者.class文件時,該目錄必須存在,且嚴格區分大小寫。--------該目錄下的資源,客戶端是無法直接訪問的。--------目錄中內容如下:classes目錄----------------web應用的class文件(加載順序:我們的class,lib目錄中的jar包,tomcat的lib目錄中的jar包。優先級依次降低)lib目錄--------------------web應用所需的jar包(tomcat的lib目錄下jar為所有應用共享)web.xml-------------------web應用的主配置文件</span></span>

2.3.3 JavaWeb應用的創建

第一步

第二步

第三步

第四步

2.3.4 JavaWeb應用的部署

IDEA部署

第一步

第二步

配置默認主頁

首先要明確的是,配置默認主頁是針對應用說的。是應用的默認主頁。 在應用的web.xml中配置:

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#117700"><</span><span style="color:#117700">welcome-file-list</span><span style="color:#117700">></span><span style="color:#117700"><</span><span style="color:#117700">welcome-file</span><span style="color:#117700">></span>默認主頁<span style="color:#117700"></</span><span style="color:#117700">welcome-file</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">welcome-file-list</span><span style="color:#117700">></span></span></span>

例如:

<span style="background-color:#f8f8f8"><span style="color:#333333"><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file>
</welcome-file-list></span></span>

3 HTTP協議

3.1 HTTP協議概述

3.1.1 HTTP協議概念

HTTP的全稱是:Hyper Text Transfer Protocol,意為 超文本傳輸協議。它指的是服務器和客戶端之間交互必須遵循的一問一答的規則。形容這個規則:問答機制、握手機制。

它規范了請求和響應內容的類型和格式。

HTTP協議是由W3C組織管理和維護的。

3.1.2 HTTP協議版本

目前HTTP協議主要是1.0版本和1.1版本。這兩個版本的區別主要是兩個方面。

第一:HTTP1.1版本比1.0版本多了一些消息頭。

第二:HTTP1.1版本和1.0版本的執行過程不一樣。執行過程如下:

HTTP1.0HTTP1.1
創建連接(TCP/IP)創建連接(TCP/IP)
發送請求發送請求1
得到響應得到響應1
關閉連接發送請求2
創建連接(TCP/IP)得到響應2
發送請求.......
得到響應.......
關閉連接連接超時或手動關閉連接

3.1.3 HTTP協議相關說明

HTTP協議概念是客戶瀏覽器和服務器一種一問一答的規則,那么必須要有問有答,而且要先問后答。 但是我們使用<script>,<link><img>標簽,沒有手動發起請求,但是仍然能從服務器端拿到數據,原因就是:在瀏覽器遇到<script>,<link>,<img>標簽時會自動發出請求。

3.2 HTTP協議組成

由HTTP協議的概念可知,它分為問和答兩部分。其中問指的就是請求部分,而答指的就是響應部分。

3.2.1請求部分

請求行: 永遠位于請求的第一行 請求消息頭: 從第二行開始,到第一個空行結束 請求的正文: 從第一個空行后開始,到正文的結束

3.2.2 響應部分

響應行: 永遠位于響應的第一行 響應消息頭: 從第二行開始,到第一個空行結束 響應的正文: 從第一個空行后開始,到正文的結束

3.3.3 消息頭的共性分析

消息頭名稱首字母大寫,多個單詞每個單詞的首字母都大寫。 多個單詞用-分隔 名稱和值之間用冒號加空格分隔 多個值之間用逗號加空格分隔 兩個頭之間用回車分隔

3.3 請求部分詳解

3.3.1 請求行詳解

請求行:GET /myapp/2.html HTTP/1.1

內容說明
GET請求的方式。(還有POST)
/myapp/2.html請求的資源。
HTTP/1.1使用的協議,及協議的版本。

3.3.2 請求消息頭詳解

內容說明
Accept告知服務器,客戶瀏覽器所支持的MIME類型。
Accept-Encoding告知服務器,客戶瀏覽器所支持的壓縮編碼格式。最常用的就是gzip壓縮。
Accept-Language告知服務器,客戶瀏覽器所支持的語言。一般都是zh_CN或en_US等。
Referer告知服務器,當前請求的來源。 只有當前請求有來源的時候,才有這個消息頭。從地址欄輸入的沒有來源。 作用:1 投放廣告 2 防盜鏈
Content-Type告知服務器,請求正文的MIME類型。
Content-Length告知服務器,請求正文的長度。
User-Agent瀏覽器相關信息
Connection: Keep-Alive連接的狀態:保持連接
If-Modified-Since告知服務器,客戶瀏覽器緩存文件的最后修改時間。
Cookie(****)會話管理相關,非常的重要。

3.3.3 請求正文詳解

第一:只有post請求方式,才有請求的正文。get方式的正文是在地址欄中的。 第二:表單的輸入域有name屬性的才會被提交。不分get和post的請求方式。 第三:表單的enctype屬性取值決定了請求正文的體現形式。概述的含義是:請求正文的MIME編碼類型。

enctype取值請求正文體現形式示例
application/x-www-form-urlencodedkey=value&key=valueusername=test&password=1234
multipart/form-data此時變成了多部分表單數據。多部分是靠分隔符分隔的。-----------------------------7df23a16c0210 Content-Disposition: form-data; name="username" test -----------------------------7df23a16c0210 Content-Disposition: form-data; name="password" 1234 -----------------------------7df23a16c0210 Content-Disposition: form-data; name="headfile"; filename="C:\Users\zhy\Desktop\請求部分.jpg" Content-Type: image/pjpeg -----------------------------7df23a16c0210

3.4 響應部分詳解

3.4.1 響應行詳解

響應行:HTTP/1.1 200 OK

內容說明
HTTP/1.1使用協議的版本。
200響應狀態碼
OK狀態碼描述

常用狀態碼介紹:

狀態碼說明
200一切都OK>
302/307請求重定向(客戶端行為,兩次請求,地址欄發生改變)
304請求資源未發生變化,使用緩存
404請求資源未找到
500服務器錯誤

3.4.2 響應消息頭詳解

消息頭說明
Location請求重定向的地址,常與302,307配合使用。
Server服務器相關信息。
Content-Type告知客戶瀏覽器,響應正文的MIME類型。
Content-Length告知客戶瀏覽器,響應正文的長度。
Content-Encoding告知客戶瀏覽器,響應正文使用的壓縮編碼格式。常用的gzip壓縮。
Content-Language告知客戶瀏覽器,響應正文的語言。zh_CN或en_US等等。
Content-Disposition告知客戶瀏覽器,以下載的方式打開響應正文。
Refresh定時刷新
Last-Modified服務器資源的最后修改時間。
Set-Cookie(***)會話管理相關,非常的重要
Expires:-1服務器資源到客戶瀏覽器后的緩存時間
Catch-Control: no-catch不要緩存,//針對http協議1.1版本
Pragma:no-catch不要緩存,//針對http協議1.0版本

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536687.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536687.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536687.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何深入理解Java的多態?

在Java中&#xff0c;多態&#xff08;polymorphism&#xff09;是面向對象編程的一個重要概念&#xff0c;它允許你使用一個通用的接口來表示不同的對象和操作這些對象&#xff0c;而不必關心具體的對象類型。多態性有兩種主要形式&#xff1a;編譯時多態&#xff08;靜態多態…

C語言使用qsort和bsearch實現二分查找

引言 在計算機科學領域&#xff0c;查找是一項基本操作&#xff0c;而二分查找是一種高效的查找算法。本博客將詳細解釋一個簡單的C語言程序&#xff0c;演示如何使用標準庫函數qsort和bsearch來對一個整數數組進行排序和二分查找。 代碼解析 包含頭文件 #include <stdi…

數據分析思維

Why&What 數據分析是為了驅動決策賦能業務。在數據分析過程中需要對目標進行拆解量化&#xff0c;如何拆解量化目標便是數據分析思維。 在任務拆解過程中使用的軟件、統計模型、分析方法等為分析工具和手段&#xff0c;如何在恰當的場景合理的使用這些工具、模型、方法、手…

中介者和訪問者模式(行為型設計模式)的 C++ 代碼示例模板

文章目錄 前言代碼倉庫中介者模式&#xff08;Mediator&#xff09;訪問者模式&#xff08;Visitor&#xff09;總結參考資料作者的話 前言 中介者和訪問者模式&#xff08;行為型設計模式&#xff09;的 C 代碼示例模板。 代碼倉庫 yezhening/Programming-examples: 編程實例…

HarmonyOS應用程序包-(下)

HarmonyOS應用程序包-(下) 1.多HAP的開發調試與發布部署流程 多HAP的開發調試與發布部署流程如下圖所示。 圖1 多HAP的開發調試與發布部署流程 開發 開發者通過DevEco Studio工具按照業務的需要創建多個Module&#xff0c;在相應的Module中完成自身業務的開發。 調試 通過…

C++歸并排序詳解以及代碼實現

1. 介紹 歸并排序&#xff08;Merge Sort&#xff09;是一種采用分治法&#xff08;Divide and Conquer&#xff09;策略的排序算法。該算法首先將已有序的子序列合并&#xff0c;得到完全有序的序列。在歸并排序中&#xff0c;合并操作是將兩個有序表合并成一個有序表的過程。…

echarts實現七天天氣預報

效果圖 實現代碼 const imglist {"晴": data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAAAXNSR0IArs4c6QAAByJJREFUaEO9Wl1rFGcUfs67u/nYbOIXJlGopBTx27aQWGOwSMS75sao2BtBQVD/gWCJouA/sIWCBW8M1nqjd1IplW5DYqLWEUoSi9iEjHaJmaz2d05ZWd2Nj…

KingbaseV8R6單實例定時全量備份步驟

此場景為單機數據庫節點內部備份&#xff0c;方便部署和操作&#xff0c;但備份REPO與數據庫實例處于同一個物理主機&#xff0c;冗余度較低。 前期準備 配置ksql免密登錄(必須) 在Kingbase數據庫運行維護中&#xff0c;經常用到ksql工具登錄數據庫&#xff0c;本地免密登錄…

基于OpenCV的圖像顏色與形狀識別的原理

基于 OpenCV 的圖像顏色與形狀識別是通過以下原理實現的&#xff1a; 圖像預處理&#xff1a;首先&#xff0c;將彩色圖像轉換為灰度圖像。這樣做是因為在灰度圖像中&#xff0c;每個像素只有一個顏色通道&#xff0c;可以更方便地進行后續處理。 閾值分割&#xff1a;對灰度圖…

Linux系統編程(六):進程(下)

參考引用 UNIX 環境高級編程 (第3版)嵌入式Linux C應用編程-正點原子 1. 進程與程序 1.1 main() 函數由誰調用&#xff1f; C 語言程序總是從 main 函數開始執行int main(void) int main(int argc, char *argv[]) // 如果需要向應用程序傳參&#xff0c;則選擇該種寫法操作系…

C++ 比 C語言增加的新特性 2

1.C新增了帶默認值參數的函數 1.1 格式 格式&#xff1a;返回值 函數名&#xff08;參數1初始值1&#xff0c;..........&#xff09;{} 例如&#xff1a;void function&#xff08;int a10&#xff09;{} 調用&#xff1a;不需要更改參數的值&#xff1a;function&#x…

基于SSM和微信小程序的高校體育場管理系統

文章目錄 項目介紹主要功能截圖:部分代碼展示設計總結項目獲取方式?? 作者主頁:超級無敵暴龍戰士塔塔開 ?? 簡介:Java領域優質創作者??、 簡歷模板、學習資料、面試題庫【關注我,都給你】 ??文末獲取源碼聯系?? 項目介紹 基于SSM和微信小程序的高校體育場管理系…

文本編輯器:Sublime Text (安裝+漢化)

下載 Sublime Text - Text Editing, Done Righthttps://www.sublimetext.com/Sublime Text官網 支持mac&#xff0c;Linux&#xff0c;Windows 安裝 選擇安裝路徑 next install 選擇安裝位置安裝就行了 漢化 進入了主界面按 CTRLshiftp 輸入install 選擇第一個 彈窗就按確…

服務器擴容未生效、不成功:解決方法

記一次解決服務器擴容未生效的解決辦法 老板&#xff1a;失憶啊&#xff0c;我花錢給服務器擴容了10000000G&#xff0c;但是數據庫和mq都還是用不了&#xff0c;到底是不是服務器磁盤滿了&#xff0c;你到底有沒有查一下什么原因導致服務用不了啊。 失憶&#xff1a;老板您確…

概率論1:下象棋問題(3.5)

每日小語 時刻望著他人的眼色行事&#xff0c;是騰飛不了的。自己怎么想就積極地去做&#xff0c;這是需要膽量的。——廣中平佑 題目 甲、乙二人下象棋&#xff0c; 每局甲勝的概率為a,乙勝的概率為b. 為簡化問題&#xff0c;設沒有和局的情況&#xff0c;這意味著a b1. 設想…

VR全景對普通人的生活有哪些好處?

許多普通人對VR全景還全然沒有概念&#xff0c;這是因為VR全景雖然一直在快速發展&#xff0c;但目前為止也不過幾年而已&#xff0c;但這發展的幾年同樣為我們普通人的生活帶來了切實的改變和便利。VR全景技術為人們帶來了沉浸感和真實感的體驗&#xff0c;讓我們感受到迥異于…

第十四章 集合(Set)

一、Set 接口&#xff08;P518&#xff09; 1. Set 接口基本介紹 &#xff08;1&#xff09;無序&#xff08;添加和取出的順序不一致&#xff09;&#xff0c;沒有索引。 &#xff08;2&#xff09;不允許重復元素&#xff0c;所以最多包含一個 null。 2. Set 接口的常用方法…

數據結構:KMP算法

1.何為KMP算法 KMP算法是由Knuth、Morris和Pratt三位學者發明的&#xff0c;所以取了三位學者名字的首字母&#xff0c;叫作KMP算法。 2.KMP的用處 KMP主要用于字符串匹配的問題&#xff0c;主要思想是當出現字符串不匹配時&#xff0c;我們可以知道一部分之前已經匹配過的的文…

【期刊周報1】醫學好刊(SCI/SSCI/EI),含Top,領域廣,接收快!

為了向廣大學者朋友提供更優質的選刊服務&#xff0c;提高選刊質量&#xff0c;我處現開設周報專欄&#xff0c;以羅列我處合作的優質期刊~ 本期&#xff0c;小編給大家推薦的是醫學領域相關的熱門期刊&#xff0c;接收領域廣&#xff0c;無預警&#xff0c;且在最新檢索目錄內…

Python遙感影像深度學習指南(2)-在 PyTorch 中創建自定義數據集和加載器

在上一篇 文章中,我們Fast.ai 在衛星圖像中檢測云輪廓,檢測物體輪廓被稱為語義分割。雖然我們用幾行代碼就能達到 96% 的準確率,但該模型無法考慮數據集中提供的所有輸入通道(紅、綠、藍和近紅外)。問題在于,深度學習框架(如 Keras、Fast.ai 甚至 PyTorch)中的大多數語…