1. 程式人生 > 其它 >tomcat和Servlet

tomcat和Servlet

tomcat部署專案的方式

  1 直接將專案放在webapps目錄下

    /hello: 專案的訪問路徑-->虛擬目錄

    簡化部署:將專案打成一個war包,再將war包放置到webapps目錄下

          war包會自動解壓縮

  2 配置conf/server.xml

    在<Host>標籤中配置

      <Context docBase="D:\hello" path="/hehe"/>

        docBase 專案存放的路徑

        path 虛擬目錄

  3 在Conf\Catalina\localhost 建立任意名稱的xml檔案。在檔案中編寫

    <Context docBase="D:\hello"/>

      虛擬目錄:xml檔案的名稱

靜態專案和動態專案:

  目錄結構

    java動態專案的目錄結構:

      --專案的根目錄

        --WEB-INF目錄:

          -- web.xml: web專案的核心配置檔案

          --classes:放置位元組碼檔案的目錄

          --lib目錄:放置依賴的jar包

Servlet: server applet

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

      Servlet就是一個介面,定義了java類被瀏覽器訪問到(tomcat識別)的規則

      將來自己自定義一個類,實現Servlet介面,複寫方法

    快速入門:

      1 建立JavaEE專案

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

        public class ServletDemo1 implements Servlet

      3 實現介面中的抽象方法

      4 配置Servlet

        在web.xml中配置:

      <servlet>

      <servlet-name>demo1</servlet-name>

      <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>

      </servlet>  //tomcat將全類名對應的位元組碼檔案載入進記憶體 Class.forName()

             建立物件 cls.newInstance();

             呼叫方法---service

      <servlet-mapping>

      <servlet-name>demo1</servlet-name>

      <url-pattern>/demo1<url-pattern>

      </servlet-mapping>

    執行原理

      1 當伺服器接收到客戶端瀏覽器的請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑

      2 查詢web.xml檔案,是否有對應的<url-pattern>標籤體內容

      3 如果有,則在找到對應的<servlet-class>全類名

      4 tomcat會將位元組碼檔案載入進記憶體,並且建立其物件

      5 呼叫其方法

    Servlet中的生命週期

      1 被建立:執行init方法,只執行一次

        Servlet什麼時候被建立

          預設情況下,第一次被訪問時,Servlet被建立

          可以配置執行Servlet的建立時機

            在<servlet>標籤下配置

            1 第一次被訪問時,建立

              <load-on-startup>的值為負數

            2 在伺服器啟動時,建立

              <load-on-startup>的值為0或正整數

        Servlet的init方法,只執行一次,說明一個Servlet在記憶體中只存在一個物件,Servlet是單例的

          多個使用者同時訪問是,可能存線上程安全問題

          解決:儘量不要在Servlet中定義成員變數。即使定義了成員變數,也不要修改值

      2 提供服務:執行service方法,執行多次

        每次訪問Servlet時,Service方法都會被呼叫一次

      3 被銷燬:執行destroy方法,只執行一次

        Servlet被銷燬時執行。伺服器關閉時,Servlet被銷燬

        只有伺服器正常關閉時,才會執行destroy方法

        destroy方法在Servlet被銷燬之前執行,一般用於釋放資源

      4 獲取Servlet的配置物件:getServletConfig()

      5 獲取Servlet的一些資訊,版本,作者,等等:getServletInfo()

    Servlet3.0:

      好處:

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

      步驟:

        1 建立JavaEE的專案,選擇Servlet的版本3.0以上,可以不建立web.xml

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

        3 複寫方法

        4 在類上使用Servlet註解,進行配置

          @webServlet("資源路徑")