day09-Tomcat01

来源:https://www.cnblogs.com/liyuelian/archive/2022/11/04/16859403.html
-Advertisement-
Play Games

Tomcat01 1.WEB開發介紹 WEB,在英文中WEB表示網/網路資源,它用於表示WEB伺服器(主機)供瀏覽器訪問的資源 WEB伺服器(主機)上供外界訪問的Web資源為: 靜態web資源(如html頁面):指web頁面中供人們瀏覽的數據始終是不變的 動態web資源,比如Servlet、PHP等 ...


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();
    }
}

http://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官方文檔:https://tomcat.apache.org/download-80.cgi

3.1Tomcat下載和安裝

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

  2. 獲取Tomcat安裝程式包

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

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

    image-20221104203343404

3.2Tomcat啟動

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

    image-20221104203907419
  2. 輸入http://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. 瀏覽器輸入:http://ip[功能變數名稱]:port/news/子目錄.../文件名

image-20221104224034040 image-20221104224108722

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

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

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

      image-20221104224523305
    2. 訪問web工程:http://ip[功能變數名稱]:port/hsp/index.html,就表示訪問D:\album目錄下的index.html

      image-20221104224538499
  • ROOT工程的訪問

    1. 在瀏覽器地址欄中輸入的訪問地址如下:http://ip[功能變數名稱]:port,沒有Web工程/應用名時,預設訪問的就是ROOT工程
    2. 在瀏覽器地址欄中輸入的訪問地址如下:http://ip[功能變數名稱]:port/工程名,沒有資源名,預設訪問的就是index.jsp頁面

localhost:8080/test/test.html

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文開始,首先我們來看這兩個詞的意思,provide:提供 inject:註入 用處: 父組件可以向其所有子組件傳入數據,而“不管子組件層次結構有多深(非父子和父子咱都能傳)” 特性: 父組件有一個provide選項來提供數據 子組件有一個inject選項來開始使用這個數據 本文參考組件層級: In ...
  • 1. 撲朔迷離的 this 從錶面來看,this 總能通過各種變通的方式得到意想不到的結果 既然是“意想不到”,就說明對“各種變通的方式”不太瞭解 那麼我們來看看“各種變通的方式” 老早以前,this 指向它的調用者 1 <script> 2 // 通過 dom 調用 3 var _html = d ...
  • 一般來說,普通的 Angular 應用是在 瀏覽器 中運行,在 DOM 中對頁面進行渲染,並與用戶進行交互。而 Angular Universal 是在 服務端 進行渲染(Server-Side Rendering,SSR),生成靜態的應用程式網頁,然後在客戶端展示,好處是可以更快地進行渲染,在提供 ...
  • 2020 年,很多技術人可能都已經迷醉在了微服務的成功故事中,但現實很骨感,微服務也不是“靈丹妙藥”。本文想給現階段“狂熱”的微服務潑潑冷水、降降溫,也許你就會發現,你並不是真的需要微服務。 2020 年,如果再講什麼是微服務,已經落伍了,畢竟微服務的成功故事已經開始在業界廣為流傳了。但是你真的需要... ...
  • 簡介 備忘錄設計模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用於實現防丟失、撤銷、恢復等功能。 其定義是,在不違背封裝原則的前提下,捕獲一個對象的內部狀態,併在該對象之外保存這個狀態,以便之後恢復對象先前的狀態。 典型實現 首先,定義一個備忘錄 Mem ...
  • 學習目標 能夠掌握系統、子系統、模塊、組件、服務、框架、架構等概念的含義 能夠知道單體架構、分散式架構、微服務架構的適用場景、優勢和劣勢 能夠知道微服務架構常見技術框架 能夠瞭解組件化、服務化產生的原因、優勢和問題,初步具備中台概念 瞭解常見的需求問題 掌握一個需求包含的要素 掌握如何做需求分析 1 ...
  • 1.3 基礎用戶交互 /* 例1.3-1: 基礎用戶交互示例 */ import java.util.Scanner; // 引入java Scanner工具類 public class ScannerExample { public static void main(String[] args) ...
  • package 常用類.String;import java.util.Arrays;import java.util.Locale;public class demo01 { public static void main(String[] args) { String name="hello"; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...