tomcat&&Servlet
阿新 • • 發佈:2020-11-24
今日內容
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包會自動解壓縮 訪問專案的地址是ip+埠+專案名稱 2. 配置conf/server.xml檔案(原有) //不安全 在<Host>標籤體中配置 <Context docBase="D:\hello" path="/hehe" /> * docBase:專案存放的路徑,指定 docBase 為非 webapps 的子目錄 * 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介面,複寫方法。 *Servlet的作用: 1.接收使用者傳送的請求 2.呼叫其他的java程式來處理請求 3.根據處理結果,返回給使用者一個頁面 * 快速入門: 1. 建立JavaEE專案 2. 定義一個類,實現Servlet介面 * public class ServletDemo1 implements Servlet 3. 實現介面中的抽象方法 4. 配置Servlet 在web.xml中配置: <!--配置Servlet --> <servlet> <servlet-name>demo1</servlet-name> <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class> </servlet> <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會將位元組碼檔案載入進記憶體,並且建立其物件 tomcat將全類名對應的位元組碼檔案載入進記憶體。Class. forName()_ 建立物件. cls. newInstance(); 5. 呼叫Servlet的方法 呼叫方法--service * 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("資源路徑") 在edit configure的路徑是專案訪問路徑,如day01servlet @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 ""; }
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 啟動