day13【Tomcat&Servlet】

今日內容

  • web相關概念回顧
  • web服務器軟件:Tomcat
  • Servlet入門學習
    Tomcat

1 web相關概念回顧

1.1 軟件架構

  1. C/S:客戶端/服務器端
  2. B/S:瀏覽器/服務器端

1.2 資源分類

  1. 靜態資源:所有用戶訪問後,得到的結果都是一樣的,稱爲靜態資源。靜態資源可以直接被瀏覽器解析
    如:html,css,JavaScript
  2. 動態資源:每個用戶訪問相同資源後,得到的結果可能不一樣。稱爲動態資源。動態資源被訪問後,需要先轉換爲靜態資源,再返回給瀏覽器
    如:servlet/jsp,php,asp…

1.3 網絡通信三要素

  1. IP:電子設備(計算機)在網絡中唯一標識
  2. 端口:應用程序在計算機中的唯一標識。0~65536
  3. 傳輸協議:規定了數據傳輸的規則
    1. 基礎協議:
      1. tcp:安全協議,三次握手,速度稍慢
      2. udp:不安全協議。速度快

2 web服務器軟件:

  • 服務器:安裝了服務器軟件的計算機
  • 服務器軟件:接受用戶的請求,處理請求,做出響應
  • web服務器軟件:接受用戶的請求,處理請求,做出響應
    • 在web服務器軟件中,可以部署web項目,讓用戶通過瀏覽器來訪問這些項目
    • web容器

2.1 常見的java相關的web服務器軟件

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

2.2 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
          • <Connector port="8888" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8445" />
            一般會將tomcat的默認端口號改爲80,80端口是http協議的默認端口號
          • 好處:在訪問是,就不用輸入端口號
  5. 關閉:
    1. 正常關閉
      • bin/shutdown.bat
      • ctrl+c
    2. 強制關閉:
      點擊啓動窗口x
  6. 配置:
    • 部署項目的方式:
      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包
    • 將Tomcat集成到IDEA中,並且創建JAVAEE的項目,部署項目

3 Servlet:server applet

3.1 概念:運行在服務器端的小程序

  • Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規則
  • 將來我們定義一個類,實現Servlet接口,複寫方法。

3.2 快速入門

  1. 創建JavaEE項目
  2. 定義一個類,實現Servlet接口
    public class ServletDemo implements Servlet
  3. 實現接口中的抽象方法
  4. 配置Servlet
    在web.xml配置
    <servlet>
    <servlet-name>demo1</servlet-name>
    <servlet-class> .ServlstDemo1</servlet-class>
    </servlet>
    <servlet-maping>
    <servlet-name>demo1</servlet-name>
    <url-pattern>/demo1</url-pattern>
    </servlet-mapping>

3.3 執行原理:

  1. 當服務器接收到客戶端瀏覽器請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑
  2. 查找web.xml文件,是否有對應的<url-pattern>標籤體內容
  3. 如果有,則在找到對應的<servlet-class>全類名
  4. tomcat會將字節碼文件加載進內存,並且創建其對象
  5. 調用其方法

3.4 Servle中的生命週期方法:

  1. 被創建:執行init方法,只執行一次
    • Servlet什麼時候被創建?
      • 默認情況下,第一次被訪問時,Servlet被創建
      • 可以配置執行Servlet的創建時機。
        <servlet>標籤下配置
        • 第一次被訪問時,創建
          <load-on-startup>的值爲負數
        • 在服務器啓動時,創建
          <load-on-startup>的值爲0或正整數
    • Servlet的init方法,只執行一次,說明一個Servlet在內存中只存在一個對象,Servlet是單例的
      • 多個用戶同時訪問,可能存在線程安全問題
      • 解決:儘量不要在Servlet中定義成員變量。即使定義了成員變量,也不要修改值
  2. 提供服務:執行Servlet方法,執行多次
    每次訪問Servlet時,Servlet方法都會被調用一次。
  3. 被銷燬:執行dsetroy方法,只執行一次
    • Servlet被銷燬時執行。服務器關閉時,Servlet被銷燬
    • 只有服務器正常關閉,纔會執行destory方法
    • destory方法在Servlet被銷燬之前執行,一般用於釋放資源

3.5 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 "";//相當於<Servlet-name>

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

    String[] urlPatterns() default {};//相當於<url-pattern>

    int loadOnStartup() default -1;//相當於<load-on-startup>

    WebInitParam[] initParams() default {};

    boolean asyncSupported() default false;

    String smallIcon() default "";

    String largeIcon() default "";

    String description() default "";

    String displayName() default "";
}

4 IDEA與tomcat的相關配置

4.1 IDEA會爲每一個tomcat部署的項目單獨建立一份配置文件

  • 查看控制檯的log:Using CATALINA_BASE: “C:\Users\fqy.IntelliJIdea2018.1\system\tomcat_itcast”

4.2 工作空間項目 和 tomcat部署的web項目

  • tomcat真正訪問的是“tomcat部署的web項目”,“tomcat部署的web項目"對應着"工作空間項目” 的web目錄下的所有資源
  • WEB-INF目錄下的資源不能被瀏覽器直接訪問。

4.3 斷點調試:使用"小蟲子"啓動 dubug 啓動

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