Tomcat的基本使用及相關知識的概述(超詳細版)

文章推薦指數: 80 %
投票人數:10人

Tomcat:由Apache組織提供的一種Web伺服器,提供對jsp和Servlet的支援。

它是一種輕量級的javaWeb容器(伺服器),也是當前應用最廣的JavaWeb伺服器(免費 ... Tomcat的基本使用及相關知識的概述(超詳細版) 2020年7月12日 筆記 http,Servlet,tomcat 絮絮叨叨: 在深入了解Tomcat源碼之前,本來是想親自寫一篇Tomcat的基本使用教程的,在網上兜兜轉轉發現了這篇部落格://blog.csdn.net/weixin_40396459/article/details/81706543,寫的特別詳細,雖然有點老,但對於Tomcat入門來說是無所謂的,足夠讓初學者了解如何使用這隻「貓」。

在這裡我就不重複造輪子了,將這篇部落格貼在這裡,方便大家閱讀。

在這篇文章之後,我們開始Tomcat的深入分析,以後每寫一篇,我都會貼在這裡,有哪裡不對的還請大家不吝指教。

下一篇文章是搭建tomcat的源碼項目,將tomcat當做一個普通項目來運行,剖析裡面的源碼。

  文章末尾有福利~ 正文 1、JavaWeb概念 Javaweb,是用java技術來解決相關web互聯網領域的技術的總稱。

web包括:web伺服器和web客戶端兩部分。

java在最早web客戶端的應用有javaapplet程式,不過這種技術在很久之前就已經被淘汰了。

java在伺服器端的應用非常豐富,比如Servlet,jsp和第三方框架等等。

java技術對web領域的發展注入了強大的動力 簡單的說,就是使用java語言實現瀏覽器可以訪問的程式內容。

稱之為JavaWeb。

javaweb開發是基於請求和響應的: 請求:瀏覽器(客戶端)向伺服器發送資訊響應:伺服器向(客戶端)瀏覽器回送資訊   請求和響應是成對出現的。

​ 2、web資源分類: 所謂web資源即放在Internet網上供外界訪問的文件或程式,又根據它們呈現的效果及原理不同,將它們劃分為靜態資源和動態資源。

靜態web資源:固定不變數據文件(靜態網頁HTML、CSS文件、文本、音頻、影片)靜態web技術:HTML+CSS+JavaScript 動態web資源:一段服務程式,運行後,生成的數據文件 動態web技術:servlet,jsp,php,.net,ruby、python等等   3、常見的web伺服器 web伺服器簡介: Tomcat:由Apache組織提供的一種Web伺服器,提供對jsp和Servlet的支援。

它是一種輕量級的javaWeb容器(伺服器),也是當前應用最廣的JavaWeb伺服器(免費)。

Jboss:是一個遵從JavaEE規範的、開放源程式碼的、純Java的EJB伺服器,它支援所有的JavaEE規範(免費)。

GlassFish:由Oracle公司開發的一款JavaWeb伺服器,是一款強健的商業伺服器,達到產品級品質(應用很少,收費)。

Resin:是CAUCHO公司的產品,是一個非常流行的應用伺服器,對servlet和JSP提供了良好的支援,性能也比較優良,resin自身採用JAVA語言開發(收費,應用比較多)。

WebLogic:是Oracle公司的產品,是目前應用最廣泛的Web伺服器,支援JavaEE規範,而且不斷的完善以適應新的開發要求,適合大型項目(收費,用的不多,適合大公司)。

  3.1、Tomcat伺服器 開源小型web伺服器,完全免費,主要用於中小型web項目,只支援Servlet和JSP等少量javaee規範(就是JavaWeb編程介面) ​   3.2、tomcat伺服器與servlet版本的關係 servlet:sun公司提供的用於開發動態web資源的技術。

jsp:(javaserverpage),java提供的一門開發web網頁的技術。

tomcat軟體:java開發的。

java軟體運行的時候需要jdk。

​   向下兼容。

tomcat7也支援servlet3.0/jsp2.2規範,可以支援javaee6.0當前企業常用的版本6.*/7.*/8.* 3.3、tomcat下載和安裝說明 到//tomcat.apache.org 下載 1)Tomcat首頁 ​   2)Tomcat下載   ​     3)下載後的包   ​   4)安裝:解壓 ​   5)tomcat的安裝目錄介紹: bin:可以執行文件。

conf:tomcat伺服器的配置文件lib:tomcat啟動後需要依賴的jar包logs:tomcat工作之後的日誌文件webapps:是tomcat布暑工程的目錄。

work:jsp文件在被翻譯之後,保存在當前這個目錄下,session對象被序列化之後保存的位置     3.4、Tomcat伺服器啟動(**重點) 注意事項: 1、JAVA_HOME:環境變數。

並且配置到jdk的目錄,其完整過程如下: ​ ​​   打開控制台(cmd命令打開窗口)。

輸入java-version測試 ​   2、啟動tomcat目錄。

tomcat目錄/bin/startup.bat(window啟動文件) 找到startup.bat雙擊運行。

會有一個黑窗口,黑窗口不要關閉。

(如果關閉,相當於把tomcat停止了。

) ​ 3、在瀏覽器地址欄中輸入://localhost:8080或者//127.0.0.1:8080localhost,如果看到如下頁面,證明啟動成功 ​   3.5、配置tomcat的埠(****重點)   tomcat默認的埠是8080(訪問埠) http的默認埠是80,如果訪問的時候輸入//www.baidu.com相當於//www.baidu.com:80。

當真正在項目上線之後,通常採用80,修改方法如下:1)找到tomcat目錄/conf/server.xml2)修改port的值,將port埠的值修改為80 ​ 3)然後在瀏覽器中輸入//127.0.0.1:80或//127.0.0.1訪問測試 ​ 訪問成功!!!   3.6、catalinarun啟動Tomcat Tomcat啟動,還有一種啟動的方法就是在命令行中,先把你的當前目錄切換到你tomcat目錄\bin目錄下,如下是我的位置 ​ 再執行catalinarun這個命令啟動Tomcat。

這個命令有什麼好處。

當Tomcat啟動失敗的時候,會有一閃而過的情況, 當我們使用catalinarun這個命令啟動Tomcat的時候,哪怕有錯誤,我們也可以清楚的看到tomcat失敗的原因。

不會一閃而過。

  3.7、tomcat關閉 有三種方法。

第一種:Ctrl+C鍵關閉Tomcat伺服器第二種:點擊Tomcat窗口的右上角關閉按鈕(暴力停止伺服器)第三種:找到tomcat目錄/bin/shutdown.bat文件,雙擊執行關閉Tomcat。

4、常用的布署工程到Tomcat中的兩種方式   把我們自己書寫的html,servlet這些資訊,部署到tomcat的方式。

  4.1、第一種方法:在tomcat目錄/conf/server.xml配置—了解 在conf/server.xml文件的host元素中配置,例如:在host標籤內書寫如下內容 配置好之後,要重啟伺服器。

缺點(Tomcat7.0之後):如果配置錯誤:tomcat會啟動失敗。

(如果tomcat裡面存放的其他的網站),其他網站也會停機。

  4.2、第二種方式:將網站目錄複製到tomcat/webapps目錄(常用,必須掌握) 有一個網站(一個文件夾),把文件夾複製到tomcat的webapps目錄下。

文件夾的名字,就是網站或者工程的訪問目錄.相當於之前配置>>RunonServer 將工程布暑到剛剛自定義的目錄下。

​ 四:選擇你當前的web工程需要使用的哪個伺服器運行。

如果勾選中Alwaysusethisserverwhenrunningthisproject表示下次運行伺服器的時候默認使用當勾時時候選擇的伺服器運行。

​   五:等待Tomcat啟動,web工程布暑成功後。

查看 ​     ​   六:在瀏覽器中輸入//127.0.0.1:8080/day06/index.html測試查看 ​   6HTTP協議介紹   6.1、HTTP協議 1.HTTP(hypertexttransportprotocol),即超文本傳輸協議。

這個協議詳細規定了瀏覽器和萬維網伺服器之間互相通訊的規則。

2.客戶端與服務端通訊時傳輸的內容我們稱之為報文。

3.HTTP就是一個通訊規則,這個規則規定了客戶端發送給伺服器的報文格式,也規定了伺服器發送給客戶端的報文格式。

實際我們要學習的就是這兩種報文。

客戶端發送給伺服器的稱為」請求報文「,伺服器發送給客戶端的稱為」響應報文「。

大白話說,什麼是協議。

是雙方相互約定好的規則;比如:租房協議:租房協議就是租客和房東之間相互約定好的租房規則    6.2、請求的協議格式 請求的HTTP協議格式: 請求行  請求頭空行請求體 GET請求協議格式 (get請求沒有請求體) ​ POST請求協議格式 ​   6.3、常見請求頭的說明 ​ GET/Hello/index.jspHTTP/1.1:GET請求,請求伺服器資源的路徑Hello/index.jsp, 協議為http 版本為1.1;Host:localhost:請求的主機名為localhost;User-Agent:Mozilla/4.0(compatible;MSIE8.0…:與瀏覽器和OS相關的資訊。

有些網站會顯示用戶的系統版本和瀏覽器版本資訊,這都是通過獲取User-Agent頭資訊而來的;Accept:*/*:告訴伺服器,當前客戶端可以接收的數據類型,*/*,就表示什麼都可以接收;Accept-Language:zh-CN:當前客戶端支援的語言,可以在瀏覽器的工具選項中找到語言相關資訊;Accept-Encoding:gzip,deflate:支援的壓縮格式。

數據在網路上傳遞時,可能伺服器會把數據壓縮後再發送;Connection:keep-alive:客戶端支援的鏈接方式,保持一段時間鏈接,默認為3000ms;   6.4、get請求和post請求都分別是哪些? GET請求  1)、輸入瀏覽器地址欄輸入地址,直接按回車 2)、點擊超鏈接  3)、GET請求表單提交 4)、scriptsrc=」」,引入外部文件 5)、imgsrc=」路徑」,引入圖片6)、引入外部css。





POST請求 1)只有表單提交的時候method=post,提交表單就是發post請求   6.5、響應的協議格式 響應的HTTP協議格式 響應首行響應頭資訊空行響應體   6.6、常見的響應碼 響應碼對瀏覽器來說很重要,它告訴瀏覽器響應的結果; 200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源;500:請求資源找到了,但伺服器內部出現了錯誤;302:請求重定向,當響應碼為302時,表示伺服器要求瀏覽器重新再發一個請求,伺服器會發送一個響應頭Location,它指定了新請求的URL地址;   7、servlet(重點*****)   7.1、servlet簡介 servlet是運行在Web伺服器中的小型Java程式。

servlet通常通過HTTP(超文本傳輸協議)接收和響應來自Web客戶端的請求。

 要實現此介面,可以編寫一個擴展javax.servlet.GenericServlet的一般servlet,或者編寫一個擴展javax.servlet.http.HttpServlet的HTTPservlet。

 此介面定義了初始化servlet的方法、為請求提供服務的方法和從伺服器移除servlet的方法。

這些方法稱為生命周期方法,它們是按以下順序調用的:  1.構造servlet,然後使用init方法將其初始化。

 2.處理來自客戶端的對service方法的所有調用。

 3.從服務中取出servlet,然後使用destroy方法銷毀它,最後進行垃圾回收並終止它。

Servlet: 1、接受瀏覽器發送過來的消息。

2、給瀏覽器返回消息。

瀏覽器認識html。

可以動態去輸出html   7.2、servlet快速入門   7.2.1、如何創建動態的Web工程 1)先創建動態的Web工程 ​ 2) 配置工程的選項 ​ 3)勾選生成web.xml配置文件 ​ 4)動態web工程創建完成!!! ​ 5)web工程的介紹和說明 ​   7.2.2、手動編寫servlet實現 寫servlet做兩件事 1、實現servlet介面。

由sun公司定義的一個介面。

(定義一個規範)2、把類部署到web伺服器中(tomcat)。

sun公司定義一個servlet的規範。

定義了servlet應該有哪些方法,以及方法需要的參數。

1、實現servlet介面(javax.servlet.Servlet)2、重寫service方法(service方法每次請求都會調用一次)   packagecom.atguigu.web; importjava.io.IOException; importjavax.servlet.Servlet; importjavax.servlet.ServletConfig; importjavax.servlet.ServletException; importjavax.servlet.ServletRequest; importjavax.servlet.ServletResponse; publicclassHelloimplementsServlet{ @Override publicvoiddestroy(){ //TODOAuto-generatedmethodstub System.out.println("Servlet銷毀了!"); } @Override publicServletConfiggetServletConfig(){ //TODOAuto-generatedmethodstub returnnull; } @Override publicStringgetServletInfo(){ //TODOAuto-generatedmethodstub returnnull; } @Override publicvoidinit(ServletConfigarg0)throwsServletException{ //TODOAuto-generatedmethodstub System.out.println("ServerConfig初始化了"); } @Override publicvoidservice(ServletRequestarg0,ServletResponsearg1) throwsServletException,IOException{ //TODOAuto-generatedmethodstub System.out.println("helloservletservice方法被調用"); } } 當瀏覽器輸入地址,訪問servlet的時候,servlet會執行servcie方法。

  3、在WebContent/WEB-INF/web.xml中配置servlet的訪問路徑。

瀏覽器訪問servlet的路徑 web.xml(新建web工程的時候,eclipse自動創建出來的)的位置: 在web.xml的根標籤下,直接書寫如下內容。

  day06 Hello com.atguigu.web.Hello Hello /hello index.html index.htm index.jsp default.html default.htm default.jsp 4、把項目部署到tomcat中,去啟動tomcat。

在地址欄中輸入資訊,訪問servlet ​ 控制台列印: ​   7.2.3、訪問servlet的細節 瀏覽器地址欄中輸入://localhost:8080/day06/hello訪問過程分析:​   7.2.4、servlet生命周期 Servlet的生命周期 1.調用init方法初始化Servlet2.調用Servlet中的service方法處理請求操作3.調用destory方法執行Servlet銷毀的操作 init方法:當伺服器創建一個serlvet的時候,會去調用init方法。

當我們第一次去訪問一個servlet的時候,會去創建這個servlet對象。

並且只會創建一次。

如果配置了load-on-startup表示伺服器啟動的時候就創建servlet實例。

service方法:客戶端每一次請求,tomcat都會去調用servcie方法。

處理用戶的請求。

並且給其響應。

每一次請求都會調用servcie方法。

estroy方法:當伺服器銷毀一個servlet的時候,會調用裡面的destory方法。

當我們的web伺服器,正常關閉的時候,會去調用destroy方法。

否則不會調用destroy的方法。

  7.3、使用Eclipse創建Servlet程式(重點*****) 1)通過Eclipse自動新建一個Servlet程式 ​ 2)修改Servlet的訪問url地址  ​ 3)勾選需要生成的Servlet方法 ​ 4)查看自動生成的結果內容!!! ​ 5)在瀏覽器中輸出//127.0.0.1:80/day06/helloServlet訪問測試 ​ 訪問成功   7.4、Servlet是單例的。

Servlet中的變數,它有執行緒安全問題。

7.4.1、全局變數,數據不安全。

​ 7.4.2、方法內的局部變數,數據安全 ​ 福利:關於Tomcat的相關影片教程、可運行的源碼項目和電子書都已經為大家準備好了,全部打包放到了公眾號【編程開發分享者】裡面了,有需要的同學可以在裡面回復【tomcat】自助獲取。

公眾號每個月都會送書,不靠運氣,靠手速,先到先得。

分享此文:分享到Twitter(在新視窗中開啟)按一下以分享至Facebook(在新視窗中開啟)按一下以分享到Telegram(在新視窗中開啟)分享到Pinterest(在新視窗中開啟)更多點這裡列印(在新視窗中開啟)分享到LinkedIn(在新視窗中開啟)分享到Reddit(在新視窗中開啟)分享到Tumblr(在新視窗中開啟)分享到Pocket(在新視窗中開啟)分享到WhatsApp(在新視窗中開啟)按一下即可分享至Skype(在新視窗中開啟) Tags:httpServlettomcat RelatedPosts 2021年6月3日 關於發燒那點事兒:熱交換,熱部署,熱升級 2020年11月2日 Spring5的最後一個特性版本5.3發布,4.3將於12月終止維護 10月27日,SpringFramework團隊宣布了5.3版本正式GA,Spring用戶可以在repo.sprin.. PreviouspostLinux如何用腳本監控Oracle發送警告日誌ORA-報錯發送郵件 NextpostKubernetes部署通用手冊(支援版本1.19,1.18,1.17,1.16) VirMach便宜VPS BlackFridayFlashSale (2021/9/14~) 1CoreCPU 1GBRam 20GBSSD 1年只要USD$5up!!! Tips:Offer10分鐘更新一次 Newcustomers,75%offfor2months. 1CoreCPU 1GBRam 25GBSSD 每月只要USD$1.75!!! VirMachVPSHosting VPSGamersVPSHosting VPSCraftVPSHosting VPSharedVPSHosting QNews 熱門文章 3分鐘了解GO/KEGG功能富集分析 Android自動化之-解鎖系列-ADB解鎖鎖屏與模擬九宮格密碼 低清小電影一鍵變4K大片?這軟體神了:效果來感受下 玩遊戲顯示卡重要還是CPU重要?終於懂了 茅台鎮核心產區利群醬酒66元/瓶抄底:京東299元 Hadoop系列(三)——分散式計算框架MapReduce 十步法原則解決數據品質問題 OAuth2.0授權詳解 持續集成高級篇之Jenkinscli與Jenkinsssh 【數字影像處理】灰度直方圖、直方圖均衡化、直方圖規定化 熱門搜尋.NET .NETCore 5G AMD c# CPU處理器 docker Intel iPhone12 iPhone手機 JAVA javascript linux MySQL NVIDIA PC遊戲 Python Redmi Windows10 Windows作業系統 三星 華為 小米 微信 微軟 新冠疫苗 新冠病毒 新冠肺炎 日本 顯示卡 智慧手機 比亞迪 汽車 遊戲 特斯拉 生科醫學 電動車 電影 筆記型電腦 演算法 美國 騰訊 晶片 蘋果 榮耀 . 简体中文 大陆简体 港澳繁體 马新简体 马来西亚简体 繁體中文



請為這篇文章評分?