一、生活中的上網方式(BS、CS)
1.1 生活中的兩種上網方式
一、可以通過瀏覽器(browser)進行上網,比如:訪問瀏覽谷歌瀏覽器、火狐瀏覽器
二、可以通過客戶端(client)進行上網,比如:下載淘寶客戶端逛淘寶
1.2 BS、CS結構介紹
1.2.1 BS結構(Browser/Server )
B/S結構(Browser/Server,瀏覽器/服務器模式),是WEB興起後的一種網絡結構模式,WEB瀏覽器是客戶端最主要的應用軟件。這種模式統一了客戶端,將系統功能實現的核心部分集中到服務器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器,如Netscape Navigator或Internet Explorer,服務器安裝SQL Server、Oracle、MYSQL等數據庫。瀏覽器通過Web Server 同數據庫進行數據交互。
- 簡單來說,如下:
- 不需要安裝客戶端,只要能連上網,就能隨時隨地使用
- 開發人員只需要對服務器端程序進行開發、維護,降低開發維護難度和開發維護成本
- 瀏覽器主要負責用戶界面的動態展示,只處理一些簡單的邏輯功能
- 所有具體業務邏輯的處理都由服務器端程序完成,所以程序負載幾乎都轉移給服務器端
- 但是隨着服務器負載的增加,可以平滑地增加服務器的個數並建立集羣服務器系統,然 後在各個服務器之間做負載均衡
- 以下圖是BS結構的工作原理:
1.2.2 CS結構(Client/Server )
C/S結構(Client/Server,服務器/客戶機模式),C/S結構通常採取兩層結構。服務器負責數據的管理,客戶機負責完成與用戶的交互任務。 客戶機通過局域網與服務器相連,接受用戶的請求,並通過網絡向服務器提出請求,對數據庫進行操作。服務器接受客戶機的請求,將數據提交給客戶機,客戶機將數據進行計算並將結果呈現給用戶。服務器還要提供完善安全保護及對數據完整性的處理等操作,並允許多個客戶機同時訪問服務器,這就對服務器的硬件處理數據能力提出了很高的要求。
- 簡單來說,如下:
- 將應用程序分爲客戶端和服務器端兩層,客戶端程序用於展示功能,爲用戶提供操作界 面,同時也可以進行業務邏輯的處理;而服務器端程序負責操作數據庫完成數據處理等 核心業務
- 由此可見通過C/S開發模型開發的應用程序,客戶端程序可以承擔一部分業務邏輯處 理,特別是數據的預處理工作,減輕了服務器端程序的壓力
1.2.3 BS、CS總結
- BS優缺點:
- 優點:實時地更新數據(新功能的增加只需要在服務端完成,瀏覽器刷新就好了)
- 缺點:將負載給了服務器
- CS優缺點:
- 優點:客戶端也分擔了一部分負載
- 缺點:如果有新的功能增加,必須要重新下載客戶端
二、Web服務器
2.1 什麼是服務器
服務器服務器,是提供計算服務的設備。由於服務器需要響應服務請求,並進行處理,因此一般來說服務器應具備承擔服務並且保障服務的能力,服務器適用於哪方面。例如網站建設、遊戲開發等都需要服務器。
從廣義上講,服務器是指網絡中能對其它機器提供某些服務的計算機系統。從狹義上講,服務器是專指某些高性能計算機,能通過網絡,對外提供服務。相對於普通PC來說,穩定性、安全性、性能等方面都要求更高,因此在CPU、芯片組、內存、磁盤系統、網絡等硬件和普通PC有所不同。
對於服務器通俗易懂的兩種概念。第一種就是一臺電腦,第二種指的是在電腦上安裝了一個服務器軟件,這時我們也管這臺電腦叫做服務器。
2.2 服務器的作用
作用: 服務器應具備承擔服務並且保障服務的能力。能夠讓本地電腦中的資源可以被其他的電腦訪問(通俗易懂)
2.3 常見的JavaWeb服務器
服務器名稱 | 描述 |
---|---|
WebLogic | 美國Oracle公司的基於JAVAEE架構的中間件,用於開發、集成、部署和管理大型分佈式Web應用、網絡應用和數據庫應用的Java應用服務器(收費) |
Websphere | IBM公司的一個大型的全面支持JAVAEE規範的JAVAEE容器 |
tomcat | 開源的免費的servlet規範的服務器。 它是apache一個Web服務器 |
Jboss | hibernate公司產品,不是開源免費的,是javaee規範的容器 |
Nginx | Nginx (“engine x”) 是一個高性能的 HTTP 和 反向代理服務器 |
2.4 tomact介紹
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認爲,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。
2.5 tomact的下載
對於tomact來說,我們常用的版本只有7.0和8.5版本,而7.0版本存在問題,所有我們下載8.5版本
tomact8.5官網下載地址:https://tomcat.apache.org/download-80.cgi(下載解壓即可)
2.6 tomact配置
- 將下載好的tomact解壓到一個盤的文件夾中
- 保證我們jdk是用JAVA_HOME形式配置的(tomact依賴jdk的這種形式);在tomcat的安裝目錄bin文件夾下的catalina.bat中使用了JAVA_HOME,所以,安裝 tomcat必須要求系統配置中有JAVA_HOME,如果沒有配置,執行startup.bat文件時會 出現閃退效果
- 端口號配置;tomcat默認使用的8080端口,可以進行端口號的修改,修改tomcat的端口號,在 tomcat\conf\server.xml文件, 可以添加80端口,80是http協議默認的端口
- 測試是否安裝配置成功;在tomcat的安裝目錄下有一個bin目錄 ,在目錄中有一個startup.bat文件執行它。(窗口亂碼無視即可)打開瀏覽器,在瀏覽器的地址欄上輸入 http://localhost:8080。 會出現一個貓的界面,打開了即爲成功,打不開不能訪問頁面則失敗!
- 注意:在tomact安裝路徑下打開DOS命令窗口,輸入startup.bat,按下Enter也可以啓動服務器!
2.7 關於tomact地址問題
我們在使用tomact時會在瀏覽器地址欄中輸入此內容:http://localhost:8080/(htttp協議://ip:端口號/資源名稱)
而我們自己的ip地址可以通過DOS命令下鍵入ipconfig來查詢本機ip地址。
三、Web服務器相關概念
3.1 什麼是Web
Web指的就是網頁,我們所說的Web指的是Internet主機(服務器)上的供外界訪問的資源
3.2 Web資源介紹
Web資源可以分爲兩種:靜態web資源、動態web資源
3.3 靜態Web資源介紹
指web頁面上供人們瀏覽的數據,它們始終不變。例如html
- 優點:
- 靜態網站開發簡易,只需要掌握HTML、CSS和JSP就可以開發
- 靜態訪問速度快,因爲靜態網頁不需要和任何程序進行交互,更不需要對數據進行處理
- 缺點:
- 靜態網站內容無法實時更新,因爲網站由一個個的靜態HTML網頁構成,新增內容只能 通過開發人員修改代碼
- 網站內容過多時,每個頁面都需要單獨製作,需要不斷編寫和維護HTML頁面,增加了 網站開發人員的工作量,提高了運營費用
- 總結:靜態的web資源,只是供人們瀏覽
3.3.1 靜態Web資源項目介紹
Web靜態項目包含都是靜態資源:html、js、css、圖片、音頻等等(一個靜態web項目,肯定都是靜態資源)
3.4 動態Web資源介紹
指Web頁面中內容是由程序產生的,供人們瀏覽,並且在不同的時間點,數據不一樣,並且 還可以實現人與人之間的交互。用到Servlet和JSP等技術
- 優點:
- 維護方便、可以根據用戶需求實現各種功能
- 查詢信息方便,能存儲大量數據,需要時能立即查詢
- 網站內容可以實時動態更新
- 與用戶交互性強,提高用戶粘性
- 缺點:
- 技術要求高
- 總結:動態的web資源,可以實現交互
3.4.1 動態Web資源項目介紹
一個動態web項目,可以有靜態資源(html、js、css、圖片、音頻等等),可以有動態資源, 必須有WEB-INF文件夾及web.xml
四、tomact目錄結構
4.1 tomact目錄結構介紹
目錄名稱(文件夾) | 描述 |
---|---|
bin | 存放tomact的可執行文件,比如:startup.bat(用來啓動服務) |
conf | tomact的配置文件,比如:server.xml |
lib | tomact運行時所依賴的核心jar包,比如:jsp-api.jar、servlet-api.jar |
logs | 存放tomact執行日誌 |
temp | 存放臨時文件 |
webapps | 存放部署Web資源 |
work | 存放jsp轉義之後的java文件 |
4.2 tomact目錄詳解(初級面試題)
bin: 該目錄下存放的是二進制可執行文件,如果是安裝版,那麼這個目錄下會有兩個exe文件:tomcat9.exe、tomcat9w.exe,前者是在控制檯下啓動Tomcat,後者是彈出UGI窗口啓動Tomcat;如果是解壓版,那麼會有startup.bat和shutdown.bat文件,startup.bat用來啓動Tomcat,但需要JDK的配置,shutdawn.bat用來停止Tomcat;
conf: 這是一個非常非常重要的目錄,這個目錄下有四個最爲重要的文件分別是:
server.xml: 配置整個服務器信息。例如修改端口號,添加虛擬主機等;
tomcatusers.xml: 存儲tomcat用戶的文件,這裏保存的是tomcat的用戶名及密碼,以及用戶的角色信息。可以按着該文件中的註釋信息添加tomcat用戶,然後就可以在Tomcat主頁中進入Tomcat Manager頁面了;
web.xml: 部署描述符文件,這個文件中註冊了很多MIME類型,即文檔類型。這些MIME類型是客戶端與服務器之間說明文檔類型的,如用戶請求一個html網頁,那麼服務器還會告訴客戶端瀏覽器響應的文檔是text/html類型的,這就是一個MIME類型。客戶端瀏覽器通過這個MIME類型就知道如何處理它了。當然是在瀏覽器中顯示這個html文件了。但如果服務器響應的是一個exe文件,那麼瀏覽器就不可能顯示它,而是應該彈出下載窗口才對。MIME就是用來說明文檔的內容是什麼類型的!
context.xml: 對所有應用的統一配置,通常我們不會去配置它。
lib: Tomcat的類庫,裏面是一大堆jar文件。如果需要添加Tomcat依賴的jar文件,可以把它放到這個目錄中,當然也可以把應用依賴的jar文件放到這個目錄中,這個目錄中的jar所有項目都可以共享之,但這樣你的應用放到其他Tomcat下時就不能再共享這個目錄下的Jar包了,所以建議只把Tomcat需要的Jar包放到這個目錄下;
logs: 這個目錄中都是日誌文件,記錄了Tomcat啓動和關閉的信息,如果啓動Tomcat時有錯誤,那麼異常也會記錄在日誌文件中。
temp: 存放Tomcat的臨時文件,這個目錄下的東西可以在停止Tomcat後刪除!
webapps: 存放web項目的目錄,其中每個文件夾都是一個項目;如果這個目錄下已經存在了目錄,那麼都是tomcat自帶的項目。其中ROOT是一個特殊的項目,在地址欄中沒有給出項目目錄時,對應的就是ROOT項目。http://localhost:8080/firstweb,進入示例項目。其中firstweb就是項目名,即文件夾的名字。
work: 運行時生成的文件,最終運行的文件都在這裏。通過webapps中的項目生成的!可以把這個目錄下的內容刪除,再次運行時會生再次生成work目錄。當客戶端用戶訪問一個JSP文件時,Tomcat會通過JSP生成Java文件,然後再編譯Java文件生成class文件,生成的java和class文件都會存放到這個目錄下。
LICENSE: 許可證。
NOTICE: 說明文件。
五、Web項目相關問題
問題一:Web應用程序的基本目錄結構?
- web靜態項目
- html、js、css、圖片…
- web動態項目
- html、js、css、圖片…
- WEB-INF文件夾、web.xml文件(核心)
問題二:web.xml文件中應該有什麼內容?
tomcat\webapps\ROOT包下的web.xml文件是tomact的頁面配置
我們前期可以將tomcat\webapps\ROOT應用下的web.xml文件內容複製到我們自己的web.xml文件中使用
問題三:如何設置工程的默認訪問頁面?
- 在tomcat\conf\web.xml文件,將這個文件理解成是我們所有的tomcat下的web應用程序 中的web.xml文件的父類文件。
- 在這段聲明就規定了web應用中哪些文件是默認被訪問的。如果我們在自己項目的web.xml 文件中將上述內容覆蓋了,就可以設置自己項目的默認訪問頁面。
六、tomcat部署web應用程序
6.1 tomact部署web應用程序方式
部署方式 |
---|
一、直接將web應用程序放置到webapps目錄 |
二、虛擬目錄初級版 |
三、 虛擬目錄優化版 |
注意:我們在部署的時候,只要修改一次文件、文件路徑或xml配置就需要關閉當前啓動的服務器(黑窗口),重新啓動!
6.2 部署方式一
方式一:直接將web應用程序放置到webapps目錄
直接將一個web應用程序放置在tomcat/webapps目錄下。這時web應用程序目錄名稱就是 我們訪問tomcat下的這個應用程序的名稱
6.2.1 方式一的部署步驟和訪問
一、將需要部署的項目(dynamicproject:複製的tomact項目中WEB-INF\xml、隨便拉了個圖片和內容)放在webapps目錄下
二、訪問步驟
- 先訪問到tomcat容器:http://localhost:8080/
- 訪問到項目:http://localhost:8080/dynamicproject/
- 訪問到資源:http://localhost:8080/dynamicproject/a.jpg(輸入地址即可訪問a.jpg圖片,舉一反三訪問txt、html)
- 注意事項:如果訪問路徑只寫到http://localhost:8080/dynamicproject/,默認訪問index開頭的html文件或jsp文件…
6.3 部署方式二
方式二:虛擬目錄初級版
將一個不在tomcat下的web應用程序部署加載。可以在tomcat\conf\server.xml文件中配 置,在server.xml文件中的標籤中添加一段配置
<Context docBase="磁盤路徑" path="/項目的訪問名稱" />
經過以上配置後,在瀏覽器上可以輸入http://localhost/hello來訪問。但是,在tomcat6以後已經不建議使用了。改動了tomcat的server.xml文件,一旦出錯,tomcat容器就炸了! 會有大麻煩的!讓你吃不了兜着走!
6.3.1 方式二的部署步驟和訪問
一、將需要部署的項目(用的方式一的項目)放在你自己想放的路徑中(D:\Code\dynamicproject)
二、找到該tomcat\conf\server.xml文件,在HOST標籤內加入Context標籤,如下:
三、重啓服務器後,打開網頁,地址欄輸入http://localhost:8080/hello/a.txt即可訪問項目中txt文件
6.4 部署方式三(推薦)
方式三:虛擬目錄優化版
在tomcat/conf/Catalina/localhost下創建任意名稱的一個xml文件,例如創建一個 good.xml文件,在good.xml中書寫
<Context docBase="磁盤路徑" />
這種方案配置,xml文件的名稱就是訪問路徑,在瀏覽器中訪問http://localhost/good就可以。
6.4.1 方式三的部署步驟和訪問
一、將需要部署的項目(用的方式一的項目)放在你自己想放的路徑中(D:\Code\dynamicproject)
二、找到tomcat\conf\Catalina\localhost目錄,在目錄下創建名爲good.xml的配置文件。並寫入內容如下:
<?xml version="1.0" encoding="UTF-8"?>
三、重啓服務器後,打開網頁,地址欄輸入http://localhost:8080/good/即可訪問項目中默認的index.html網頁
注意:這時候訪問地址就變成了xml文件名稱了,此例子中變爲了good。舉一反三,good/a.txt即可訪問文本
6.5 Web動態項目的相關配置
問題:默認Web訪問地址http://localhost:8080/dynamicproject爲什麼默認訪問index.html或index.jsp呢?(http://localhost:8080/dynamicproject/index.html、http://localhost:8080/dynamicproject/index.jsp)
查看tomact安裝目錄:tomact\conf\web.xml文件,打開xml文件展示出的信息如下:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
上述配置代碼,是設置tomcat容器中的每個項目的默認頁面是index.html、index.htm、index.jsp。所以,自定義的web項目也部署到tomcat容器中,那麼就會遵守上述規定!如果我們不想遵守這個規定怎麼辦呢?答案那就是需要修改xml文件了!
6.5.1 修改默認xml訪問配置方式一
方式一:直接修改tomcat中的web.xml(即:tomact\conf內包含的web.xml)
<welcome-file-list>
<welcome-file>demo.html</welcome-file>
<welcome-file>demo.htm</welcome-file>
<welcome-file>demo.jsp</welcome-file>
</welcome-file-list>
注意:我把默認訪問文件改爲了以demo爲名的.html\.htm\.jsp文件,這時候我們的項目中就需要有以demo爲名的.html\.htm\.jsp文件纔可以被默認訪問。
但是這樣處理存在問題,所有的項目的歡迎頁面都會跟隨改變!這時候又引申出了一種方式,那麼你就別愣着了,去看6.5.2吧!
6.5.2 修改默認xml訪問配置方式二
方式二:直接修改項目自帶的web.xml(即:每一個web動態項目的WEB-INF內包含的web.xml)
<welcome-file-list>
<welcome-file>demo.html</welcome-file>
<welcome-file>demo.htm</welcome-file>
<welcome-file>demo.jsp</welcome-file>
</welcome-file-list>
注意:方式二修改的web.xml文件是隨着項目攜帶的那個xml文件,所以以上配置僅針對當前項目有效!
6.5.3 項目中WEB-INF\web.xml和tomact\conf\web.xml的關係
兩者的關係類似於java中的繼承關係(父子關係),如果tomcat中的web.xml的配置無法滿足當前的項目的需求,那麼就可以更改項目中的web.xml,覆蓋tomcat中的web.xml配置。爲項目的部署帶來的便捷!
Java中父子類繼承關係回顧:子父類中的方法重寫即是父類的方法中的功能無法滿足子類的需求,就需要進行方法重寫!(兩者xml關係同理)
七、在idea下開發Web應用
7.1 idea中創建Web項目教程
一、創建idea新項目Create New Project
二、勾選並設置Web項目所需
三、下一步填寫項目名稱(這一步就不用我說了吧!),填寫後點擊Finsh完成創建!
四、創建完成!顯示如下頁面
7.2 idea中Web項目目錄解析
首先我們看到的Web項目目錄是以下模樣
目錄解析
目錄名稱 | 描述 |
---|---|
firstweb | 項目名稱 |
src | 儲存java代碼的目錄 |
web | 存放web資源的目錄,比如:html、js、css、圖片、jsp等文件 |
WEB-INF | 存放java文件轉譯之後的class文件 |
out(目前沒有) | out文件是在你打開tomact服務器後生成的out目錄,主要存放服務器部署後的文件 |
External Libraries | 存放jre、tomact環境(環境裏攜帶所有jar包) |
7.3 idea中配置並部署tomact服務器
7.3.1 在Web項目中加入靜態資源
我們需要在idea中的web文件夾加入並部署一些靜態資源,以便部署成功後訪問(我這裏加入index.html、demo文件並填寫信息以便測試)
7.3.2 idea中配置tomact服務器
一、在idea中啓動項中添加tomact服務器
二、輸入Tomact服務器名稱
三、雙擊src文件夾或者按照圖下點擊
四、將Web項目打包成war包(加入war包後你會發現多出來一個war包,點擊OK)
注意: 根據本地安裝的tomact,會給當前項目生成一個tomact鏡像,部署到tomact鏡像相當於部署到本地tomact中(在後面部署成功後可以查看鏡像所在C盤目錄)
修改的war名稱就會改變鏡像包內xml文件中的context路徑(也就是修改了你在瀏覽器中的默認訪問路徑,我這裏沒有修改,是因爲後面有關於war包的問題,大家可以修改試試!)
五、你發現沒爲什麼tomact左上角有一個紅色的小叉號❌呢?是因爲你沒有指定要部署的文件也就是war包,那我們就添加了它!
六、設置自動更新(On Update action-Redeploy【代表run和debug按鈕設置重新部署】;On frame deactivation【代表設置熱加載自動更新】)
七、點擊run按鈕或者Debug按鈕,開啓服務器並部署項目
打開C盤生成tomact目錄
可以看見目錄中部署項目的xml文件
八、瀏覽器訪問部署後的項目(啓動服務器並部署成功後會默認彈出瀏覽器顯示默認index.html)
九、試着訪問一下我們項目中的demo文件(瀏覽器地址欄後追加demo即可!)
十、關閉服務器就不用說了吧,但是我還是說一下吧!(就是結束程序點擊紅色小方塊或者快捷鍵Ctrl+F2)
7.4 idea中打包成war包和默認war包的解釋
因爲idea的功能比較強大,所以tomact部署後的項目會存在idea中,儲存在out文件的artifacts文件中。而在這個文件中存在就就是war包的形式。如圖兩個war包,第一個是自己添加的war包,一會我講它的好處,第二個就是默認的war包了!
war包的好處就是: 當我們不使用idea來進行部署的時候,我們的項目是默認放在tomact中的webapps文件中的,那我們就必須複製粘貼這整個文件夾了!如果我們打包成war包,在idea目錄中複製粘貼war包到tomact的wabapps文件夾中,然後啓動服務器,tomact服務器會自動的幫我們解壓war包並部署該項目!而我們放入的是war包,不是在idea內,所以部署該項目的瀏覽器訪問路徑會隨之變成localhost:8080/項目名稱_war/
八、tomact常見錯誤
8.1 tomact閃退問題
JAVA_HOME配置問題(解決:startup.bat中最後增加pause,查看錯誤信息)
8.2 瀏覽器錯誤代碼404
找不到該路徑部署項目文件(1.路徑寫錯了 2.沒有部署成功,重新部署一下)
8.3 瀏覽器錯誤代碼500
配置文件全限定名錯誤(需要查看配置文件是否寫正確,查出修改即可解決問題)
下一章HTTP內容,持續更新知識點總結…