servlet & Tomcat

前文提要 : 本篇內容 涉及 ======

在本次 用IDEA 編輯器 集成服務器 tomcat 使用 servlet 技術類實現 javaWeb 的開發 的搭建

## 會涉及 反射技術 xml xml解析 註解 Mapping 映射 java基礎: 接口 抽象類 java繼續體系 空實現概念 參考 javaEE7 : 查看 servlet 的多源碼 的繼承實現
   自下而上 的從 IDEA裏集成Tomcat 到 : 原理是 :主要大概的4 點
1: IDEA實現 tomcat 的配置 都加載 了
2: 在配置文件 裏Catalina\localhost 裏工作空間 裏 有IDEA裏指定 root.xml 裏配置的就是 IDea 的 目標 文件
部署 類似於 tomcat 的第二種的部署方式 root.xml 裏配置的就是 IDea 的 目標 文件
3:WEN_INFO : 靜態 基本訪問不到
4:完善程序的debug :
從而實現 了部署
tomcat 的  tomcat 是存java 開發的 :
-----在 配置文件 裏可以找到 main 方法-----
實現 使用 反射 反射 應用 很多 但卻不是java面對象思想 和上一篇講的 xml 解析的 也會用到反射原理 JDBC 包括 後面的SpringIOC

通過 GenericServlet 使用一個 service’ 可以 他的底層 已經 對 servlet 的的5個 除service方法 以外 其他都是空實現

同樣通過 HttpServlet  明白了

方法自行實現 -----但是最終 會使用在IDEA裏配置一個模板 有保持基本的 兩個方法 請求Get, Post。來進行 練習哦。
-=-== 最終選擇 ==== 最終使用 Httpservlet 作爲 實現web 開發
在這裏插入圖片描述
servlet & Tomcat
java 編程 需要通過 servlet 接口 來 運行在服務器裏的
Servlet 就是一個java的接口 :
--------- 服務器裏 可以運行的小程序
能夠被 服務器訪問的 接口 規則 :
我們內次要定義的類 需要 通過 實現servlet 接口來 實現 服務器的訪問 :

servlet 的配置 : 瀏覽器輸入的 路徑 服務端會解析 獲取到 ,在查找服務端 裏的 web.xml裏的配置
裏的 全類名 使用 反射 加載進內存 創建對象 調用方法
----- 執行原理 : 是
1:— 一次請求 攜帶的是url 路徑 到服務端裏 服務端會解析 url 路徑 獲取 編寫的 程序
2:— 查找 web.xml 是否有
3:— 全類名 : 用的反射 原理 進行獲取到 字節碼 ,類的信息
4:— 加載 進內存 創建 對象
5:— 調用方法

======= 思考 如何 手寫一個tomcat : ========

servlet Mapping :
以斜槓 來開始的 :
看到 全類名 就能夠實現 的是反射 的 :
-----======== servlet 的生命週期 ======
init 開始;
servlet 創建 的信息
與 配置

servlet的快速入門 :
在已經創建的JavaEE 項目裏
定義實現servlet接口的類 :
實現抽象方法 : 在service 裏 你要請求與 先響應 的話
配置servlet : web.xml:裏
------ 按照以上的步驟 來 說:
在創建類 implements servlet後 重寫 這5個方法
init : 初始
ServletConfig : 配置
作用:servise : 服務 ;request:請求 與 response:響應
public String getServletInfo()
public void destroy()

<!-- servlet名稱 全類名-->
<servlet>
    <servlet-name>fhwservlet001</servlet-name>
    <servlet-class>com.fhw.web.servlet.servletDemo01</servlet-class>
</servlet>
<!-- 映射文件mapping-->
<servlet-mapping>
    <servlet-name>fhwservlet001</servlet-name>
    <url-pattern>/fhwservlet001</url-pattern><!-- 要被訪問 的資源路徑-->
</servlet-mapping>

在這裏插入圖片描述
添加你 的虛擬路徑:在run Edit Configuration ----Deployment ---- 裏 右邊 添加 你的虛擬路徑
在添加的時候 這個虛擬路徑
----- 虛擬路徑 就是有個文件夾 包 : 將所用的資源都 放到 這個文件夾 裏 : 進行 保護 資源

在這裏插入圖片描述
Servlet 執行的原理 :
– :主要都做了什麼 : ------ 在service方法 裏

service  方法怎樣調用    : 

---- 當你在 瀏覽器 輸入的地址 :http://localhost:8080/fhw/fhwservlet001
的時候 : 服務器 url 路徑localhost:8080
/fhw:虛擬路徑 就是 項目名稱
/fhwservlet001 :
------ 去找 web.xml裏的配置 : 解析的 mapping 文件 /fhwservlet001
到 全類名 tomcat 將 反射的 加載字節碼 進內存 ---- 創建對象 ----- 調用方法:service
引用一張圖======================
在這裏插入圖片描述
-===========Servlet_生命週期詳解 ===========
還是 : Servlet 的接口 的裏 抽象方法 :
定義 的 類 implements servlet後 重寫 這5個方法
init : 初始
ServletConfig : 配置
作用:servise : 服務 ;request:請求 與 response:響應
public String getServletInfo() ------ 版本 作者
public void destroy() ====== 銷燬

測試一下這些方法 : 給每個方法 裏 編寫輸出 語句 :
--------- 相當於你 進入 飯店
init :初始的開啓 這次打開了門
--------- 服務員會問你 喫什麼 ,要給你 送來喫的
service : service的請求request 與響應 response
--------- 服務員 開始 收臺
destroy :一切完畢 ------- 服務員 開始 收臺

在這裏插入圖片描述

而service 方法 會執行 多次 : --------- 就像你在 就餐的時候 一直 可以增加服務
這裏就是 每次訪問 的 都會 執行 service 方法 :

在這裏插入圖片描述在這裏插入圖片描述

— 在web.xml 裏的配置 :
配置 servlet 的 創建時機 : 給的 負數 不執行 : 給 0 或正整數 都會 被執行
初訪 爲負數 啓動創建爲0 或 正整數
1 初次訪問的 創建 值 爲負數 :
2 服務器啓動的時候 創建 值爲0 或 正整數

------ init 方法 只 執行一次 : 內存裏 只有 一個對象 : servlet 是單例
多個線程 (多個用戶 訪問) 會存在 線程安全
(加鎖 是不行的 性能會 嚴重 影響)

解決的方法 : 在 不定義成員變量 : 若是定義的時候 不要修改值
---- 成員變量 是共享的 : 每次 都會 在棧 裏 要加載
是單線程 的 :
– service : 每次 刷新的時候 都會 執行一次
------ destroy : 在銷燬之前執行 :打印 日誌 信息

===== 使用註解 === 來解決 xml 配置 的 問題 :
xml 的配置每次都要複用 的 :
=========== javaEE6 就開始 有 servlet 3.0 及以上 會有 註解的 作用 ; javaEE8 servlet 4.0
步驟 ; 不用web.xml 是 在用 @Webservlet 的註解 進行配置

註解就寫在當前 類 上 : 只寫 的url 就行
@Webservlet 的註解的 源碼是 :在此註解 上 光標 + Ctrl 點進 源碼 :
在這裏插入圖片描述

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