Tomcat&Servlet筆記

# 今日內容
    1. web相關概念回顧
    2. web服務器軟件:Tomcat
    3. 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項目,讓用戶經過瀏覽器來訪問這些項目
        * 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
                        * <Connector port="8888" protocol="HTTP/1.1"
                           connectionTimeout="20000"
                           redirectPort="8445" />
                        * 通常會將tomcat的默認端口號修改成80。80端口號是http協議的默認端口號。
                            * 好處:在訪問時,就不用輸入端口號
        5. 關閉:
            1. 正常關閉:
                * bin/shutdown.bat
                * ctrl+c
            2. 強制關閉:
                * 點擊啓動窗口的×
        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的項目,部署項目。





## Servlet:  server applet
    * 概念:運行在服務器端的小程序
        * Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。
        * 未來咱們自定義一個類,實現Servlet接口,複寫方法。


    * 快速入門:
        1. 建立JavaEE項目
        2. 定義一個類,實現Servlet接口
            * public class ServletDemo1 implements Servlet
        3. 實現接口中的抽象方法
        4. 配置Servlet
             在web.xml中配置:
php

 

 1 <!--配置Servlet -->
 2             <servlet>
 3                 <servlet-name>demo1</servlet-name>
 4                 <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
 5             </servlet>
 6         
 7             <servlet-mapping>
 8                 <servlet-name>demo1</servlet-name>
 9                 <url-pattern>/demo1</url-pattern>
10             </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被銷燬以前執行,通常用於釋放資源

    * Servlet3.0:
        * 好處:
            * 支持註解配置。能夠不須要web.xml了。

        * 步驟:
            1. 建立JavaEE項目,選擇Servlet的版本3.0以上,能夠不建立web.xml
            2. 定義一個類,實現Servlet接口
            3. 複寫方法
            4. 在類上使用@WebServlet註解,進行配置
                * @WebServlet("資源路徑")
css

 

 1 @Target({ElementType.TYPE})
 2                 @Retention(RetentionPolicy.RUNTIME)
 3                 @Documented
 4                 public @interface WebServlet {
 5                     String name() default "";//至關於<Servlet-name>
 6                 
 7                     String[] value() default {};//表明urlPatterns()屬性配置
 8                 
 9                     String[] urlPatterns() default {};//至關於<url-pattern>
10                 
11                     int loadOnStartup() default -1;//至關於<load-on-startup>
12                 
13                     WebInitParam[] initParams() default {};
14                 
15                     boolean asyncSupported() default false;
16                 
17                     String smallIcon() default "";
18                 
19                     String largeIcon() default "";
20                 
21                     String description() default "";
22                 
23                     String displayName() default "";
24                 }

 

## 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 啓動
html

相關文章
相關標籤/搜索