1 javaWEB
1.1 Web概述
Web在英文中的含義是網狀物,網絡。在計算機領域,它通常指的是后者,即網絡。像我們前面接觸的WWW
,它是由3個單詞組成的,即:World Wide Web
,中文含義是萬維網。而我們前面學的HTML
,CSS
和JS
的參考文檔《W3School
全套教程》中的W3C
就是萬維網聯盟。他們的出現都是為了讓我們在網絡的世界中獲取資源,這些資源的存放之處,我們稱之為網站。我們通過輸入網站的地址(即:網址),就可以訪問網站中提供的資源。在網上我們能訪問到的內容全是資源(不區分局域網還是廣域網)。只不過,不同類型的資源展示的效果不一樣。
首先,我們先來介紹資源的分類,它分為靜態資源和動態資源。其中:
靜態資源指的是,網站中提供給人們展示的資源是一成不變的,也就是說不同人或者在不同時間,看到的內容都是一樣的。例如:我們看到的新聞,網站的使用手冊,網站功能說明文檔等等。而作為開發者,我們編寫的html
,css
,js
,圖片,多媒體等等都可以稱為靜態資源。
動態資源它指的是,網站中提供給人們展示的資源是由程序產生的,在不同的時間或者用不同的人員由于身份的不同,所看到的內容是不一樣的。例如:我們在12306上購買火車票,火車票的余票數由于時間的變化,會逐漸的減少,直到最后沒有余票。還有,我們在CSDN
上下載資料,只有登錄成功后,且積分足夠時才能下載。否則就不能下載,這就是訪客身份和會員身份的區別。作為開發人員,我們編寫的JSP
,servlet
,php
,ASP
等都是動態資源。
關于廣域網和局域網的劃分,廣域網指的就是萬維網,也就是我們說的互聯網。局域網是指的是在一定范圍之內可以訪問的網絡,出了這個范圍,就不能再使用的網絡。
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.0 | HTTP1.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-urlencoded | key=value&key=value | username=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版本 |