動態資源vs靜態資源
- 靜態資源:提前寫好的內容
- 動態資源:內容不是提前寫好的,而是隨著用戶請求可以隨時變化(但不要求必須隨時變化)
- Java官方提供了一套Servlet標準,Servlet: Serv (Server) +let(小物件)=服務端運行的一些小物件(web應用)
- Servlet標準在代碼中的呈現方式:介面和抽象類的形式體現,
Java官方提供了一套Servlet標準:Java官方寫好一套介面和抽象類,用于連接Tomcat開發者和應用開發者的橋梁

servlet 開發流程
一、開發階段
(一)【開發環境的搭建】
- 創建maven專案
- 修改maven配置
(1)設定我們的代碼打包方式是war型別打包

(2)設定maven的編譯器版本是1.8

(3)作為添加 servlet 的依賴

scope=provided:指的是這個依賴下的所有類,只在開發、構建階段需要,在運行階段就不需要了
為什么在運行階段就不需要了? 是因為Tomcat內部已經有這套類了
- 新建目錄,作為存放靜態資源的根目錄src/main/webapp

- 新建目錄,存在web 應用配置(web.xml)src/main/webapp/WEB-INF/


- 完成第一個動態資源



- 簡化開發環境搭建
(1)通過maven提供的專案模板搞定

(2)利用IDEA提供的保存專案模板功能

(二)【資源開發:靜態資源+動態資源】
- 靜態資源統統放到以webapp為根的目錄下,但不要放到 webapp/WEB-INF下
- 動態資源
(1)繼承HttpServlet
(2)@WebServlet(“servlet path”)注解
(3)重寫doGet方法
jar(Java ARchive): 將java類檔案(包括資源檔案組織起來的一個檔案),本身其實是zip壓縮包
war(Web ARchive): 將Servlet應用(包括類檔案、靜態資源檔案、web.xml、依賴的jar包)按照指定規則,放在在目錄中,并且用zip壓縮的一種結構
二、構建階段
(一)【編譯】
(二)【打包】
原始步驟: war包的標準目錄結構是什么規定
-
可以手動按照規定復制檔案過去
-
可以利用maven提供clean+compile+package
利用maven簡化編譯和打包作業


-
專業版可以利用build artifact
(三)【部署】
原始步驟:把打包好的war包,復制到 tomcat/webapps/目錄下作為一個web應用
開發階段
- 社區版,利用SmartTomcat 插件,把Tomcat集成到IDEA中使用
- 專業版,利用自帶的Tomcat插件,把Tomcat集成到IDEA中使用
三、運行階段
(一)【重啟Tomcat)
動態資源修改之后,必須重啟Tomcat,才能真正生效
光改代碼是沒用的,必須讓Tomcat直到類檔案改動了,生效才能被我們瀏覽器看到
(二)【瀏覽器中訪問對應資源】
資源的完整的URL = Context Path(Application Context) + Servlet Path
其中,我們開發階段寫在@WebServlet("…")只是ServletPath,需要和部署時,設定的Context Path 共同組成最終的完整的URL
Servlet中動態資源的開發
通過HttpServlet實作了Servlet介面

- 利用idea實作層級關系

FirstSevlet繼承了HttpServlet抽象類
HttpServlet繼承自GenericServlet 抽象類
GenericServlet繼承自Object,同時實作了Servlet 介面(ServletConfig 介面,Serializable介面)
- init() : Tomcat啟動的時候(首次創建Servlet物件時)會呼叫一次(用于做初始化作業)
- destroy(): Tomcat在結束時,會呼叫一次(用于做銷毀作業)
- service():每次有請求過來時,就會被呼叫一次,在Tomcat作業期間,會被呼叫多次
- 我們的代碼中,重寫的init和destroy只會執行一次,doGet 會被執行多次(沒有一次請求,執行一次)
每個Servlet類,在Tomcat運行程序中,都是保持單例(*)
單例(singleton):就是某些類,它的物件,在整個應用的運行程序中,需要并且只需要一個就夠了,把這類物件就稱為單例,
doGet(…)方法
- doGet(…)是瀏覽器每發起一個HTTP請求-回應周期,就會被呼叫一次

- 引數:
- HttpServletRequest req關于HTTP請求的一個物件化后的封裝
req指向的物件,代表的就是本次由瀏覽器發起的HTTP請求 - HttpServletResponse resp關于HTTP回應的一個物件化后的封裝
resp指向的物件,代表的就是本次準備發送給瀏覽器的HTTP回應
- req指向的請求物件,其中的資料是來自瀏覽器的(其中的各項屬性是有值的)
- resp指向的回應物件,其實是一個“空的”物件,等待我們在doGet方法,將內容填充到物件中
- Tomcat 在執行完doGet方法后,會將我們在doGet 中填充好的resp物件,轉化成HTTP回應發送給瀏覽器

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/395436.html
標籤:其他
下一篇:AOP初識及實踐
