1. 程式人生 > 其它 >初識tomcat和servlet

初識tomcat和servlet

web相關概念回顧

  1. 軟體架構

    1. C/S:客戶端/伺服器端
    2. B/S:瀏覽器/伺服器端
  2. 資源分類

    1. 靜態資源:所有使用者訪問後,得到的結果都是一樣的,稱為靜態資源.靜態資源可以直接被瀏覽器解析
      • 如: html,css,JavaScript
    2. 動態資源:每個使用者訪問相同資源後,得到的結果可能不一樣。稱為動態資源。動態資源被訪問後,需要先轉換為靜態資源,在返回給瀏覽器
      • 如:servlet/jsp,php,asp....
  3. 網路通訊三要素

    1. IP:電子裝置(計算機)在網路中的唯一標識。
    2. 埠:應用程式在計算機中的唯一標識。 0~65536
    3. 傳輸協議:規定了資料傳輸的規則
      1. 基礎協議:
        1. tcp:安全協議,三次握手。 速度稍慢
        2. udp:不安全協議。 速度快

web伺服器軟體:

  • 伺服器:安裝了伺服器軟體的計算機

  • 伺服器軟體:接收使用者的請求,處理請求,做出響應

  • web伺服器軟體:接收使用者的請求,處理請求,做出響應。

    • 在web伺服器軟體中,可以部署web專案,讓使用者通過瀏覽器來訪問這些專案
  • 常見的java相關的web伺服器軟體:

    • webLogic:oracle公司,大型的JavaEE伺服器,支援所有的JavaEE規範,收費的。
    • webSphere:IBM公司,大型的JavaEE伺服器,支援所有的JavaEE規範,收費的。
    • JBOSS:JBOSS公司的,大型的JavaEE伺服器,支援所有的JavaEE規範,收費的。
    • Tomcat:Apache基金組織,中小型的JavaEE伺服器,僅僅支援少量的JavaEE規範servlet/jsp。開源的,免費的。
  • JavaEE:Java語言在企業級開發中使用的技術規範的總和,一共規定了13項大的規範

  • Tomcat:web伺服器軟體

    1. 下載:http://tomcat.apache.org/
    2. 安裝:解壓壓縮包即可。
      • 注意:安裝目錄建議不要有中文和空格
    3. 解除安裝:刪除目錄就行了
    4. 啟動:
      • bin/startup.bat ,雙擊執行該檔案即可

      • 訪問:瀏覽器輸入:http://localhost:8080 回車訪問自己
        http://別人的ip:8080 訪問別人

      • 可能遇到的問題:

        1. 黑視窗一閃而過:

          • 原因: 沒有正確配置JAVA_HOME環境變數
          • 解決方案:正確配置JAVA_HOME環境變數
        2. 啟動報錯:

          1. 暴力:找到佔用的埠號,並且找到對應的程序,殺死該程序
            • netstat -ano
          2. 溫柔:修改自身的埠號
            • conf/server.xml
            • 一般會將tomcat的預設埠號修改為80。80埠號是http協議的預設埠號。
              • 好處:在訪問時,就不用輸入埠號
    5. 關閉:
      1. 正常關閉:
        • bin/shutdown.bat
        • ctrl+c
      2. 強制關閉:
        • 點選啟動視窗的×
    6. 配置:
      • 部署專案的方式:

        1. 直接將專案放到webapps目錄下即可。

          • /hello:專案的訪問路徑-->虛擬目錄
          • 簡化部署:將專案打成一個war包,再將war包放置到webapps目錄下。
            • war包會自動解壓縮
        2. 配置conf/server.xml檔案
          標籤體中配置

          • docBase:專案存放的路徑
          • path:虛擬目錄
        3. 在conf\Catalina\localhost建立任意名稱的xml檔案。在檔案中編寫

          • 虛擬目錄:xml檔案的名稱
      • 靜態專案和動態專案:

        • 目錄結構
          • java動態專案的目錄結構:
            -- 專案的根目錄
            -- WEB-INF目錄:
            -- web.xml:web專案的核心配置檔案
            -- classes目錄:放置位元組碼檔案的目錄
            -- lib目錄:放置依賴的jar包
        • 將Tomcat整合到IDEA中,並且建立JavaEE的專案,部署專案。

Servlet: server applet

  • 概念:執行在伺服器端的小程式

    • Servlet就是一個介面,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。
    • 將來我們自定義一個類,實現Servlet介面,複寫方法。
  • 快速入門:

    1. 建立JavaEE專案

    2. 定義一個類,實現Servlet介面

      • public class ServletDemo1 implements Servlet
    3. 實現介面中的抽象方法

    4. 配置Servlet
      在web.xml中配置:

      demo1cn.itcast.web.servlet.ServletDemo1demo1/demo1
  • 執行原理:

    1. 當伺服器接受到客戶端瀏覽器的請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑
    2. 查詢web.xml檔案,是否有對應的標籤體內容。
    3. 如果有,則在找到對應的全類名
    4. tomcat會將位元組碼檔案載入進記憶體,並且建立其物件
    5. 呼叫其方法
  • Servlet中的生命週期方法:

    1. 被建立:執行init方法,只執行一次
      • Servlet什麼時候被建立?
        • 預設情況下,第一次被訪問時,Servlet被建立
        • 可以配置執行Servlet的建立時機。
          • 標籤下配置
            1. 第一次被訪問時,建立
              • 的值為負數
            2. 在伺服器啟動時,建立
              • 的值為0或正整數
    • Servlet的init方法,只執行一次,說明一個Servlet在記憶體中只存在一個物件,Servlet是單例的
      * 多個使用者同時訪問時,可能存線上程安全問題。
      * 解決:儘量不要在Servlet中定義成員變數。即使定義了成員變數,也不要對修改值
    1. 提供服務:執行service方法,執行多次
      • 每次訪問Servlet時,Service方法都會被呼叫一次。
    2. 被銷燬:執行destroy方法,只執行一次
      • Servlet被銷燬時執行。伺服器關閉時,Servlet被銷燬
      • 只有伺服器正常關閉時,才會執行destroy方法。
      • destroy方法在Servlet被銷燬之前執行,一般用於釋放資源
  • Servlet3.0:

    • 好處:

      • 支援註解配置。可以不需要web.xml了。
    • 步驟:

      1. 建立JavaEE專案,選擇Servlet的版本3.0以上,可以不建立web.xml
      2. 定義一個類,實現Servlet介面
      3. 複寫方法
      4. 在類上使用@WebServlet註解,進行配置
        • @WebServlet("資源路徑")
          @Target({ElementType.TYPE})
          @Retention(RetentionPolicy.RUNTIME)
          @Documented
          public @interface WebServlet {
          String name() default "";//相當於

          String[] value() default {};//代表urlPatterns()屬性配置

          String[] urlPatterns() default {};//相當於

          int loadOnStartup() default -1;//相當於

          WebInitParam[] initParams() default {};

          boolean asyncSupported() default false;

          String smallIcon() default "";

          String largeIcon() default "";

          String description() default "";

          String displayName() default "";
          }

IDEA與tomcat的相關配置

  1. IDEA會為每一個tomcat部署的專案單獨建立一份配置檔案

    • 檢視控制檯的log:Using CATALINA_BASE: "C:\Users\fqy.IntelliJIdea2018.1\system\tomcat_itcast"
  2. 工作空間專案 和 tomcat部署的web專案

    • tomcat真正訪問的是“tomcat部署的web專案”,"tomcat部署的web專案"對應著"工作空間專案" 的web目錄下的所有資源
    • WEB-INF目錄下的資源不能被瀏覽器直接訪問。
  3. 斷點除錯:使用"小蟲子"啟動 dubug 啟動