【科普】Tomcat使用方法(超級詳細)

love_Aym發表於2018-06-07

轉自:https://blog.csdn.net/onlylove_longshao/article/details/53057381

1、JavaWeb概念

Java web,是用java技術來解決相關web網際網路領域的技術的總稱。web包括:web伺服器和web客戶端兩部分。
java在最早web客戶端的應用有java applet程式,不過這種技術在很久之前就已經被淘汰了。java在伺服器端的應用非常豐富,
比如Servlet,jsp和第三方框架等等。java技術對web領域的發展注入了強大的動力

簡單的說,就是使用java語言實現瀏覽器可以訪問的程式內容。稱之為Java Web。

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:(java server page),java提供的一門開發web網頁的技術。

tomcat軟體:java開發的。java軟體執行的時候需要jdk。



向下相容。tomcat7也支援servlet3.0/jsp2.2規範,可以支援javaee6.0當前企業常用的版本 6.* / 7.*/8.*

3.3、tomcat下載和安裝說明

到http://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、在瀏覽器位址列中輸入:http://localhost:8080 或者 http://127.0.0.1:8080localhost ,如果看到如下頁面,證明啟動成功


3.5、配置tomcat的埠(****重點)


tomcat預設的埠是8080(訪問埠)


http的預設埠是80,如果訪問的時候輸入http://www.baidu.com相當於http://www.baidu.com:80。當真正在專案上線之後,通常採用80,修改方法如下:
1)找到tomcat目錄/conf/server.xml
2)修改port的值,將port埠的值修改為80

3)然後在瀏覽器中輸入 http://127.0.0.1:80 或 http://127.0.0.1 訪問測試

訪問成功!!!


3.6、catalina run 啟動Tomcat

Tomcat啟動,還有一種啟動的方法就是在命令列中,先把你的當前目錄切換 到你tomcat目錄\bin目錄下,如下是我的位置



再執行catalina run 這個命令啟動Tomcat。這個命令有什麼好處。當Tomcat啟動失敗的時候,會有一閃而過的情況,

當我們使用catalina run 這個命令啟動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標籤內書寫如下內容
<Context  path="/atguigu"  docBase="D:\atguigu"/>
<Context  path=”瀏覽器要訪問的目錄---虛擬目錄”  docBase=”網站所在磁碟目錄”/>


配置好之後,要重啟伺服器。

缺點(Tomcat7.0之後):如果配置錯誤:tomcat會啟動失敗。(如果tomcat裡面存放的其他的網站),其他網站也會停機。


4.2、第二種方式:將網站目錄複製到tomcat/webapps目錄(常用,必須掌握)

有一個網站(一個資料夾),把資料夾複製到tomcat的webapps目錄下。

資料夾的名字,就是網站或者工程的訪問目錄.相當於之前配置 <Context path=”” 的配置


4.3、把網站目錄壓縮成war包部署到tomcat中

war包:就是一個壓縮檔案 zip格式的壓縮檔案。 只不過副檔名不是.zip 而是.war

把我們的專案進行壓縮zip,改成war,把war檔案拷貝到tomcat/webapps目錄下
步驟1、把資料夾中的內容壓縮成zip的格式,點選一個要部署的資料夾下面,全選 然後壓縮
步驟2、修改檔案的字尾名為.war
步驟3.把war檔案複製到webapps目錄下。tomcat會自己把war的檔案進行解壓


4.4、webapps目錄下/ROOT工程的訪問

當我們在瀏覽器中直接輸入http://ip地址:埠號   那麼 預設訪問的是Tomcat目錄/webapps/ROOT目錄
如果webapps下面有一個ROOT的專案。那麼在訪問的時候,直接可以省略專案的名字/ 表示找到root目錄


5、整合Tomcat和Eclipse開發工具中(***常用必須掌握)


5.1、開啟Eclipse的Server檢視視窗


第一種情況,直接開啟Servers視窗

第二種情況,搜尋Servers視窗開啟
圖一,開啟總的eclipse檢視
圖二:輸入Server過濾出伺服器視窗選項
Servers伺服器視窗已成功開啟,如下圖:

5.2、建立Tomcat 伺服器


1)在Servers視窗中,點選 建立 server 的文字提示連線。如下圖:

2)建立一個新的Tomcat伺服器例項 


3)點選Browse按鈕,開啟目錄選擇視窗。選擇Tomcat 解壓目錄


4)選擇Tomcat目錄,然後點選確定按鈕
5)Tomcat目錄選擇好之後,點選 【Next】按鈕繼續操作


6)點選 【Finish】按鈕結束操作

7)Tomcat 伺服器建立成功!!!


5.3、啟動Eclipse中的Tomcat伺服器

1)Debug模式啟動Tomcat伺服器

提示當前為Debug模式啟動!!!
Tomcat啟動成功的控制檯提示!!!


2)Run模式啟動Tomcat伺服器

Run模式啟動顯示
Tomcat啟動成功的控制檯提示!!!


5.4、停止 Eclipse 中的Tomcat 伺服器

暴力停止 Tomcat (相當於電腦被拔掉電源一樣。沒有執行關機的準備操作。)
正常停止 Tomcat (相當於點選作業系統中的關機按鈕,執行關機儲存操作,然後關機)


5.5、配置Eclipse 中的Tomcat 布暑的Web工程路徑

1)開啟Servers視窗,雙擊Tomcat v6.0 Server 伺服器開啟 Tomcat的配置視窗
這裡是Eclipse把工程釋出後的三種不同的選項。

2)Tomcat 位置-選項介紹說明:


2.1、User workspance metadata (does not modify Tomcat installation) 將在eclipse的工作區間目錄下eclipse的工作空間目錄\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\ 有一份tomcat的拷貝所有布暑的web工程都會布暑到eclipse的工作空間目錄\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps目錄中
2.2、 User Tomcat installation (takes control of Tomcat installation) 在原Tomcat目錄下做更改操作所有布暑的web工程都會發布到Tomcat目錄下的\wtpwebapps目錄中
2.3、 User custom location ( does not modify Tomcat installtion ) 自定義一個目錄去布暑Web工程
比如操作如下:
一:選擇自定義的布暑目錄


二:選擇你自定義的目錄,然後點選確定。之後Tomcat的一些目錄會被拷貝過來。布暑的工程也在這個目錄下的wtpwebapps目錄下
三:選中你要布暑的工程,右鍵選擇選單 Run As --->>> Run on Server 將工程布暑到剛剛自定義的目錄下。
四:選擇你當前的web工程需要使用的哪個伺服器執行。
如果勾選中 Always use this server when running this project 表示下次執行伺服器的時候預設使用當勾時時候選擇的伺服器執行。


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


六:在瀏覽器中輸入http://127.0.0.1:8080/day06/index.html 測試檢視


6 HTTP協議介紹


6.1、 HTTP協議

1.HTTP(hypertext transport protocol),即超文字傳輸協議。這個協議詳細規定了瀏覽器和全球資訊網伺服器之間互相通訊的規則。
2.客戶端與服務端通訊時傳輸的內容我們稱之為報文。
3.HTTP就是一個通訊規則,這個規則規定了客戶端傳送給伺服器的報文格式,也規定了伺服器傳送給客戶端的報文格式。實際我們要學習的就是這兩種報文。客戶端傳送給伺服器的稱為”請求報文“,伺服器傳送給客戶端的稱為”響應報文“。

大白話說,什麼是協議。是雙方相互約定好的規則;比如:租房協議:租房協議就是租客和房東之間相互約定好的租房規則 


6.2、請求的協議格式

請求的HTTP協議格式:

請求行   
請求頭
空行
請求體

GET請求協議格式  (get請求沒有請求體)
POST請求協議格式


6.3、常見請求頭的說明


GET /Hello/index.jsp HTTP/1.1:GET請求,請求伺服器資源的路徑 Hello/index.jsp,  協議為http   版本為1.1;
Host:localhost:請求的主機名為localhost;
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0…:與瀏覽器和OS相關的資訊。有些網站會顯示使用者的系統版本和瀏覽器版本資訊,這都是通過獲取User-Agent頭資訊而來的;
Accept: */*:告訴伺服器,當前客戶端可以接收的資料型別, */*,就表示什麼都可以接收;
Accept-Language: zh-CN:當前客戶端支援的語言,可以在瀏覽器的工具選項中找到語言相關資訊;
Accept-Encoding: gzip, deflate:支援的壓縮格式。資料在網路上傳遞時,可能伺服器會把資料壓縮後再傳送;
Connection: keep-alive:客戶端支援的連結方式,保持一段時間連結,預設為3000ms;


6.4、get請求和post請求都分別是哪些?


GET請求
1)、輸入瀏覽器位址列輸入地址,直接按回車  
2)、點選<a>超連結   
3)、GET請求 表單提交  
4)、script src=””,引入外部檔案 
5)、img src=”路徑”,引入圖片
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 的 HTTP servlet。 
此介面定義了初始化 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方法每次請求都會呼叫一次)
[java] view plain copy
  1. package com.atguigu.web;  
  2.   
  3.     import java.io.IOException;  
  4.   
  5.     import javax.servlet.Servlet;  
  6.     import javax.servlet.ServletConfig;  
  7.     import javax.servlet.ServletException;  
  8.     import javax.servlet.ServletRequest;  
  9.     import javax.servlet.ServletResponse;  
  10.   
  11.     public class Hello implements Servlet{  
  12.   
  13.         @Override  
  14.         public void destroy() {  
  15.             // TODO Auto-generated method stub  
  16.             System.out.println("Servlet銷燬了!");  
  17.         }  
  18.   
  19.         @Override  
  20.         public ServletConfig getServletConfig() {  
  21.             // TODO Auto-generated method stub  
  22.             return null;  
  23.         }  
  24.   
  25.   
  26.         @Override  
  27.         public String getServletInfo() {  
  28.             // TODO Auto-generated method stub  
  29.             return null;  
  30.         }  
  31.   
  32.   
  33.         @Override  
  34.         public void init(ServletConfig arg0) throws ServletException {  
  35.             // TODO Auto-generated method stub  
  36.             System.out.println("ServerConfig 初始化了");  
  37.         }  
  38.   
  39.   
  40.         @Override  
  41.         public void service(ServletRequest arg0, ServletResponse arg1)  
  42.                 throws ServletException, IOException {  
  43.             // TODO Auto-generated method stub  
  44.             System.out.println("hello servlet service方法被呼叫");  
  45.         }  
  46.     }  

當瀏覽器輸入地址,訪問servlet的時候,servlet會執行servcie方法。


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

web.xml(新建web工程的時候,eclipse自動建立出來的)的位置:

在web.xml的根標籤下,直接書寫如下內容。
[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.     <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  
  3.       <display-name>day06</display-name>  
  4.         
  5.       <servlet>  
  6.         <servlet-name>Hello</servlet-name>  
  7.         <servlet-class>com.atguigu.web.Hello</servlet-class>  
  8.       </servlet>  
  9.       <servlet-mapping>  
  10.         <servlet-name>Hello</servlet-name>  
  11.         <url-pattern>/hello</url-pattern>  
  12.       </servlet-mapping>  
  13.         
  14.         
  15.         
  16.       <welcome-file-list>  
  17.         <welcome-file>index.html</welcome-file>  
  18.         <welcome-file>index.htm</welcome-file>  
  19.         <welcome-file>index.jsp</welcome-file>  
  20.         <welcome-file>default.html</welcome-file>  
  21.         <welcome-file>default.htm</welcome-file>  
  22.         <welcome-file>default.jsp</welcome-file>  
  23.       </welcome-file-list>  
  24.        
  25.     </web-app>  


4、把專案部署到tomcat中,去啟動tomcat。在位址列中輸入資訊,訪問servlet
控制檯列印:


7.2.3、訪問servlet的細節

瀏覽器位址列中輸入:http://localhost:8080/day06/hello
訪問過程分析:


7.2.4、servlet生命週期

Servlet的生命週期
1.呼叫 init 方法 初始化Servlet
2.呼叫 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) 在瀏覽器中輸出http://127.0.0.1:80/day06/helloServlet 訪問測試
訪問成功


7.4、Servlet是單例的。Servlet中的變數,它有執行緒安全問題。


7.4.1、全域性變數,資料不安全。

7.4.2、方法內的區域性變數,資料安全

相關文章