Tomcat的使用(詳細流程)

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方法每次請求都會調用一次)
 
  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的根標籤下,直接書寫如下內容。

 
  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、方法內的局部變量,數據安全

  •  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章