day09-Tomcat01

Tomcat01

1.WEB開發介紹

  1. WEB,在英文中WEB表示網/網絡資源,它用於表示WEB服務器(主機)供瀏覽器訪問的資源
  2. WEB服務器(主機)上供外界訪問的Web資源為:
    • 靜態web資源(如html頁面):指web頁面中供人們瀏覽的數據始終是不變的
    • 動態web資源,比如Servlet、PHP等
  3. 靜態web資源開發技術:HTML,CSS,JS等
  4. 常用動態web資源開發技術:Servlet,SpringBoot,SpringMVC,PHP,ASP.NET等

BS開發和CS開發:

image-20221104181430528

1.1BS開發

B:browser(瀏覽器)

S:Server(服務端)

對BS的解讀:

  1. 兼容性:

    因為瀏覽器的種類很多,編寫的程序可能在一個瀏覽器上面是正常的,在另一個瀏覽器上面就會出現問題

  2. 安全性:

    通常情況下,BS的安全性不如CS好控制

  3. 易用性:BS好於CS,瀏覽器電腦有

  4. 擴展性:BS相對統一,只需要寫Server端

image-20221104181549144

1.2CS開發

C:Client(客戶端)

S:Server(服務端)

image-20221104181529925

2.JavaWeb服務軟件

2.1JavaWeb服務器軟件介紹

學習JavaWeb開發,需要先安裝JavaWeb服務器軟件(我們把安裝了JavaWeb服務軟件的主機稱為Web服務器/JavaWeb服務器),在web服務器中開發相應的web資源

思考:學習JavaWeb開發,為什麼必須要先安裝WEB服務軟件?

答:需要安裝,理解Tomcat本質就是一個java程序,只是這個程序可以處理來自瀏覽器的HTTP請求,和 Javase基礎的網絡服務是一樣的


使用netstat -anb指令打開運行端口,可以看到tomcat的監聽端口的監控程序是java.exe,這說明Tomcat本質就是一個java程序,它並沒有脫離底層的jdk。在啟動java程序的時候啟動了jre的運行環境,所以它在後台顯示的監控程序是java.exe,並不是想像中的Tomcat.exe.

image-20221104215537611

2.2手寫簡單的Web服務程序

Java基礎-IO/網絡編程

image-20221104183644768
image-20221104200401666

hello.html:

Helloooooo! I am a web server!

MyTomcat.java:

package tomcat_demo;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author 李
 * @version 1.0
 * 這是我們自己寫的一個web服務,可以返回hello.html給瀏覽器
 */
public class MyTomcat {
    public static void main(String[] args) throws IOException {
        //1.在9999端口監聽
        ServerSocket serverSocket = new ServerSocket(9999);

        //如果serverSocket沒有關閉,就等待連接,不停地等待
        while (!serverSocket.isClosed()) {
            System.out.println("======我的Web服務在9999端口監聽======");
            //2.等待瀏覽器/客戶端來連接,得到socket
            //  該socket用於通信
            Socket socket = serverSocket.accept();

            //3.通過socket得到輸出流
            OutputStream outputStream = socket.getOutputStream();
            //  返回給瀏覽器/客戶端
            //4.讀取hello.html文件返回即可==>如何讀取文件內容
            //  得到文件字符輸入流,和文件關聯
            BufferedReader bufferedReader =
                    new BufferedReader(new FileReader("src/tomcat_demo/hello.html"));
            String buf = "";
            //循環讀取hello.html
            while ((buf = bufferedReader.readLine()) != null) {
                outputStream.write(buf.getBytes());//如果想展示中文字符,可以使用字符流
            }

            //4.關閉流
            bufferedReader.close();
            outputStream.close();
            socket.close();
        }
        serverSocket.close();
    }
}

//localhost:9999/表示瀏覽器向localhost(127.0.0.1即本機)的9999端口發出請求

image-20221104200306142

上述的整個過程是:服務器MyTomcat在localhost主機的9999端口監聽,瀏覽器向localhost的9999端口發送請求,服務器監聽到請求後將hello.html文件的內容讀取到內存中,然後通過socket將數據打入數據通道中,瀏覽器就拿到了數據,並將其展示在頁面上

2.3常用的JavaWeb服務軟件

  1. Tomcat:由Apache組織提供的一種Web服務器,提供對jsp和Servlet的支持。它是一種輕量級的javaWeb容器(服務器),也是當前應用最廣的JavaWeb服務器(免費)

  2. Jboss:是一個遵從JavaEE規範的應用服務器,同時也是免費的

  3. GlassFish:由Oracle公司開發的一款JavaWeb服務器,是一款商業服務器,達到產品級質量(應用很少)

  4. Resin:是CAUCHO公司的產品,是一個非常流行的服務器,對Servlet和jsp提供了良好的支持,性能也比較優良(收費)

  5. WebLogic:是Oracle公司的產品,支持JavaEE 規範,而且不斷地完善以適應新的開發需求,適合大型項目(收費,用得不多,適合大公司)

    下面主要理解Tomcat服務器

3.Tomcat

image-20221104202155359

Tomcat官方文檔://tomcat.apache.org/download-80.cgi

3.1Tomcat下載和安裝

  1. Tomcat官方站點://tomcat.apache.org

  2. 獲取Tomcat安裝程序包

    • tar.gz是Linux操作系統下的安裝版本
    • zip是Windows系統下的壓縮版本
  3. 使用zip包安裝Tomcat:找到需要用的Tomcat版本對應的zip壓縮包,解壓到需要安裝的目錄即可

  4. 在官網//tomcat.apache.org/whichversion.html,可以看到Tomcat仍然是支持JSP和EL的

    image-20221104203343404

3.2Tomcat啟動

  1. 雙擊bin目錄下的startup.bat文件

    image-20221104203907419

  2. 輸入//localhost:8080/,顯示如下界面代表安裝成功,默認在8080端口

    image-20221104204111886

  3. 注意不要關閉黑窗口,關閉了,tomcat服務就停止了

在開發中查看哪些端口在監聽,可以使用命令:netstat -an

3.3Tomcat啟動故障排除

  1. 雙擊startup.bat文件,如果出現一個小黑窗口然後就沒了,原因是沒有配置好JAVA_HOME環境變量

    Tomcat本質是一個Java程序,所以要jdk,會去根據Java_HOME使用指定的jdk

    • JAVA_HOME必須全大寫

    • JAVA_HOME中間必須是下劃線

    • JAVA_HOME配置的路徑只需要配置到jdk的安裝目錄即可,不需要帶上bin目錄

      image-20221104205348129

  2. 端口8080被佔用了[查看端口:netstat -anb]

    • 如果其他服務程序佔用了8080端口,可以關閉該服務,或者修改Tomcat服務的默認端口8080

3.4Tomcat目錄結構

image-20221104211639616

  • conf目錄中的server.xml文件用於配置tomcat的基本設置(啟動端口,關閉端口,主機名)

  • conf目錄中的web.xml文件用於指定tomcat運行時配置(比如Servlet等)

    image-20221104213021778

  • webapps目錄是存放web應用的,也就是網站

3.5catalina啟動Tomcat

在cmd中切換到Tomcat的bin目錄,輸入catalina run,回車,即可啟動tomcat服務

image-20221104213602049

3.6關閉Tomcat

  1. 點擊tomcat服務器窗口,直接點擊關閉按鈕

    image-20221104213827356

  2. 進入Tomcat的bin目錄下的shutdown.bat雙擊,就可以停止Tomcat服務器(推薦

    image-20221104214937884

    在默認情況下,tomcat服務器在8080端口等待瀏覽器發送請求;此外還有一個監聽端口8009,8009端口可以接收關閉指令shutdown。8009端口監聽到關閉指令之後就會按照正常流程去關閉tomcat服務器。這種關閉方式可以正常地被寫入日誌中。

    image-20221104215145458

3.7Tomcat服務中部署web應用

  • 什麼是web應用

    1. WEB應用是多個web資源的集合。簡單地說,可以把web應用理解為硬盤上的一個目錄,這個目錄用於管理多個web資源
    2. Web應用通常也稱之為web應用程序,或web工程,通俗地說就是網站
  • WEB應用組成

    一個web應用由多個web資源或其他文件組成,包括html文件,css文件,js文件,動態web頁面,java程序,支持jar包,配置文件等。

    開發人員在開發web應用時,要按照規定目錄結構存放這些文件。否則,在把web應用交給web服務器管理時,不僅可能會使web應用無法訪問,還會導致web服務器啟動報錯。

  • JavaWeb程序/應用/工程目錄結構

    image-20221104222821650

  • 部署方式1:將web工程的目錄拷貝到Tomcat的webapps目錄下

    1. news Web工程(目前都是靜態html,圖片)(news為工程名)
    2. 將該news目錄拷貝到Tomcat的webapps目錄下
    3. 瀏覽器輸入://ip[域名]:port/news/子目錄.../文件名

image-20221104224034040 image-20221104224108722

  • 部署方式2:通過配置文件來部署(用得不多)

    1. 在Tomcat下的conf目錄/Catalina/locathost/下,配置文件,比如hsp.xml

      (即,tomcat通過配置,可以把一個web應用映射到指定的目錄,可以解決磁盤空間分配的問題)

      image-20221104224523305

    2. 訪問web工程://ip[域名]:port/hsp/index.html,就表示訪問D:\album目錄下的index.html

      image-20221104224538499

  • ROOT工程的訪問

    1. 在瀏覽器地址欄中輸入的訪問地址如下://ip[域名]:port,沒有Web工程/應用名時,默認訪問的就是ROOT工程
    2. 在瀏覽器地址欄中輸入的訪問地址如下://ip[域名]:port/工程名,沒有資源名,默認訪問的就是index.jsp頁面

localhost:8080/test/test.html

其中locathost:8080是你要訪問的服務器,test是要訪問的網站(web應用),test.html是該網站的資源

Tags: