Servlet技術入門
## Servlet技術(重點) ##
Servlet簡介(理解)
1.什麼是Servlet?
* 看的Servlet相關的知識,檢視JavaEE的文件
* Servlet是一個介面,提供5個方法
* 提供兩個實現類,GenericServlet和HttpServlet
2.Servlet什麼的作用?
* Servlet是小的Java程式
* 執行在WEB伺服器端
* 可以接收和響應從客戶端傳送過來的請求
* 請求:從客戶端訪問伺服器(傳送一些資料,請求的內容)
* 響應:從伺服器端到客戶端(把請求的內容返回給我)
3.編寫Servlet
* 實現Servlet介面
* 繼承GenericServlet或者HttpServlet
編寫一個Servlet程式(掌握)
1.怎麼樣來編寫Servlet程式,Servlet程式段配置檔案
2.開發的步驟
* 第一步:實現Servlet介面,實現5個方法。
* 第二步:通過配置檔案的方式(在web.xml)
<!-- 編寫Servlet的配置檔案 -->
<!-- 配置Servlet的基本資訊 -->
<servlet>
<!-- 先配置Servlet的名稱(自己隨意的定,預設的情況下和類的名稱是相同的) -->
<servlet-name>ServletDemo1</servlet-name>
<!-- 配置Servlet類的全路徑(包名+類名) -->
<servlet-class>cn.itcast.servlet.ServletDemo1</servlet-class>
</servlet>
<!-- 配置Servlet的對映(Servlet怎麼來訪問呢) -->
<servlet-mapping>
<!-- 先配置Servlet的名稱,和上面的名稱必須是相同的 -->
<servlet-name>ServletDemo1</servlet-name>
<!-- 配置訪問的路徑(寫法有很多種) http://localhost:80/day09/servlet1 -->
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
* 第三步:先把程式部署到伺服器中,啟動伺服器,訪問Servlet程式了。
Servlet生命週期(面試題)
1.生命週期:人的角度,出生,達到人生的巔峰,提供服務,死亡!!
2.Servlet例項物件:Servlet例項的建立、提供服務、Servlet例項銷燬!!
3.Servlet介面中定義了三個方法
* init(ServletConfig) -- Servlet例項一被建立,立即呼叫init方法進行初始化。
* Servlet例項什麼時候被建立呢?
* init方法呼叫幾次呢?
* service(request,response) -- Servlet例項已經被建立完成了,使用service提供服務,處理從客戶端傳送過來的請求。
* service呼叫幾次?
* destroy() -- Servlet例項被銷燬之前,呼叫destroy方法(空的實現)。
* Servlet例項什麼時候銷燬?
* destroy呼叫幾次?
4.總結
* Servlet是第一次訪問的時候建立Servlet的例項物件,建立後立即呼叫init方法進行初始化,init方法呼叫一次。
* Servlet例項被建立之後,使用service方法提供服務,有一次請求,呼叫一次service方法。(servlet單例模式,建立一個新的執行緒)
* Servlet例項伺服器關閉的時候銷燬Servlet例項,銷燬之前呼叫destroy的方法進行一些銷燬的操作。destroy呼叫一次。
Servlet在Tomcat伺服器怎麼執行的(理解)
1.看圖04.
Servlet的介面和實現類之間的關係(理解)
1.關係
* Servlet的介面,提供兩個實現類,GenericServlet和HttpServlet
Servlet介面
|
GenericServlet
|
HttpServlet
|
MyServlet
2.以後的開發的步驟
* 編寫一個類,繼承GenericServlet,重寫一些你需要的方法。
* 在web.xml中編寫配置檔案。
* 編寫一個類,繼承HttpServlet,重寫一些方法。(基本就使用這種方式)
* 在web.xml中進行配置
3.GenericServlet類中的init方法的關係
* void init(ServletConfig config)
* void init()
* 總結:以後重寫init方法的時候,需要重寫無引數的Init方法
4.HttpServlet類中提供service方法
* service(ServletRequest req, ServletResponse res)
* 定義兩個變數,強轉。呼叫service(HttpServletRequest req, HttpServletResponse resp)
* service(HttpServletRequest req, HttpServletResponse resp)
* 獲取的提交的方式,判斷提交的方式
* 如果是GET請求,呼叫doGet方法
* 如果是POST請求,呼叫doPost方法
* 瞭解(ServletRequest是HttpServletRequest的爹)
* 總結
* service方法的內部判斷提交的方式,決定呼叫doXXX的方法。
* 以後再開發Servlet程式,繼承HttpServlet,手動的重寫doGet和doPost方法,在web.xm編寫配置檔案。
修改Servlet開發的模板(修改一次)
1.先使用模板建立Servlet
2.修改模板的步驟
* 先找到MyEclisp的安裝的路徑
* 需要查詢 plugins/com.genuitec.eclipse.wizards.xxx.jar
* 不要直接解壓,右鍵 -- 選擇開啟方式 -- 使用壓縮工具開啟
* 選擇模板資料夾 -- 找到Servlet.java檔案
* 編寫Servlet.java檔案 -- 修改doPost和doGet的程式碼
* 把Servlet.java覆蓋回去
* 重啟MyEclipse就可以了
Servlet配置自動載入(理解)
1.第一次訪問Servlet程式的時候,建立Servlet例項了。如果在Servlet中編寫了一些程式碼(比較消耗時間的程式碼)
2.可以配置Servlet自動載入(根著伺服器的啟動,建立Servlet的例項物件)
3.通過配置檔案配置Servlet自動載入
* 放在<servlet>標籤下。
* <load-on-startup>值(正則數和0)</load-on-startup>
* 值越小,優先順序越高
Servlet配置訪問路徑(掌握)
1.學習Servlet的訪問的路徑怎麼來配置?怎麼樣來訪問?(url-pattern配置)
2.學習url-pattern的配置寫法
* 完全路徑匹配 /web/servlet5 訪問:http://localhost/day09/web/servlet5
* 目錄匹配 /web/* 訪問:http://localhost/day09/web/xxx
* 副檔名匹配 不能以/開頭 *.do *.jsp *.html 訪問:http://localhost/day09/web/xxx.do
3.優先順序
* 完全路徑匹配 > 目錄匹配 > 副檔名匹配
* web.xml的配置檔案中,可以配置多個Servlet程式。(/demo5 /* *.do) http://localhost/day09/demo5
Servlet開發中WEB階段的路徑問題(掌握)
1.相對路徑和絕對路徑(WEB階段的路徑問題),學習會路徑的寫法(看Tomcat伺服器的路徑)
2.搭建環境
* 在WebRoot目錄下建立aa.html的檔案,訪問ServletDemo6
<h3>相當路徑寫法</h3>
<!--
訪問aa.html http://localhost/day09/aa.html
訪問ServletDemo6 http://localhost/day09/servlet6
-->
<a href="servlet6">aa.html</a> <br/>
<a href="./servlet6">aa.html</a> <br/>
* 在WebRoot目錄下建立bb的資料夾,在bb資料夾下建立了bb.html的檔案,訪問ServletDemo6
<h3>相對路徑</h3>
<!--
訪問bb.html http://localhost/day09/bb/bb.html
訪問ServletDemo6 http://localhost/day09/servlet6
-->
<a href="../servlet6">bb.html</a>
3.WEB開發中編寫絕對路徑
* 複雜的寫法
* <a href="http://localhost/day09/servlet6">bb.html</a>
* 簡便的寫法
* <a href="/day09/servlet6">bb.html</a>
* /不能省略,必須要寫的
4.絕對路徑分成兩種絕對路徑
* 客戶端絕對路徑
* 編寫的絕對路徑包含專案名稱的。
* 寫法:/day09/servlet6
* 伺服器端絕對路徑
* 不用編寫專案的名稱
* 寫法:/servlet6
ServletConfig物件(掌握)
1.在init(ServletConfig config),把配置檔案的資訊賦值給ServletConfig物件。就可以通過ServletConfig獲取到配置檔案相關的資訊。
2.方法
* String getServletName() -- 獲取的是<servlet-name>標籤的文字的內容
* (掌握)String getInitParameter(String name) -- 獲取的初始化引數
* (掌握)Enumeration getInitParameterNames() -- 獲取的初始化引數
* (掌握)ServletContext getServletContext() -- 獲取的是ServletContext物件
ServletContext物件(掌握)
1.ServletContext的簡介
* 一個WEB的專案,只有一個ServletContext物件。
* 在WEB的專案中,所有的資源共享這一個ServletContext物件。
* ServletContext與天地同壽!!!
* Tomcat伺服器在啟動的時候,建立ServletContext物件,伺服器關閉的時候,ServletContext銷燬了。
2.怎麼獲取到ServletContext物件?
* ServletConfig物件可以獲取到ServletContext物件。
* GenericServlet中提供了方法,獲取到ServletContext物件。
域物件(概念)
1.域物件:在JavaWEB中學習4個域物件。掌握的有3個。
2.作用
* 進行資料的傳遞!!!
* 這些個域物件的域的作用的範圍是不同!!
* ServletContext域物件(作用的範圍整個WEB的專案)
3.方法
* setAttribute(String name,String value);
* getAttribute(String name)
* removeAttribute(String name)
ServletContext物件的作用和方法(掌握)
1.作用和方法
* 讀取全域性的初始化引數
* String getInitParameter(String name) -- 獲取全域性的初始化引數
* Enumeration getInitParameterNames() -- 獲取全域性的初始化引數
* 實現資料的共享(向ServletContext域物件中存取值)
* void setAttribute(String name, Object object) -- 項ServletContext存入值
* Object getAttribute(String name) -- 從ServletContext取值
* void removeAttribute(String name) -- 從ServletContext移除值
* 讀取資源的檔案
* InputStream getResourceAsStream(String path) -- 傳入檔案的路徑,獲取該檔案的輸入流
* String getRealPath(String path) -- 傳入檔案的路徑,獲取的是該檔案的絕對磁碟路徑
獲取全域性的初始化引數
1.全域性初始化引數的配置
<!-- 配置全域性的初始化引數 -->
<context-param>
<param-name>username</param-name>
<param-value>美美</param-value>
</context-param>
2.獲取全域性的初始化引數
* 全域性的初始化引數被所有的Servlet共享,都能獲取!!
實現資料的共享
1.ServletContext域物件中被WEB中所有的資源共享!!
2.模擬的例子,編寫一個CountServlet,用來計數。再編寫另外一個ShowServlet,顯示訪問的數量的!!
讀取資源的檔案
1.學習方法就OK了!!
* 讀取資源的檔案
* InputStream getResourceAsStream(String path) -- 傳入檔案的路徑,獲取該檔案的輸入流
* String getRealPath(String path) -- 傳入檔案的路徑,獲取的是該檔案的絕對磁碟路徑
2.讀取db.properties檔案
3.ServletContext域物件中獲取檔案的路徑的寫法
* 寫伺服器端的絕對路徑,不包含專案名稱!!!
相關文章
- Servlet技術----Servlet入門Servlet
- Servlet技術---Servlet深化Servlet
- Servlet-01-入門Servlet
- Java中Servlet技術JavaServlet
- Golang反射技術初始入門Golang反射
- Elasticsearch核心技術(二):Elasticsearch入門Elasticsearch
- webpack技術講解及入門Web
- Qt入門(10)——除錯技術QT除錯
- Servlet技術12_HttpServletRequest類ServletHTTP
- 【菜鳥學Java】4:Servlet 技術JavaServlet
- 容器技術之Docker基礎入門Docker
- 區塊鏈技術入門應用區塊鏈
- AI考拉技術分享–Scrum入門AIScrum
- MySQL入門--複製技術介紹MySql
- Java技術分享:小白如何入門Mybatis?JavaMyBatis
- AI考拉技術分享--Scrum入門AIScrum
- 入門web前端需要掌握的技術Web前端
- 20160314 Servlet 入門Servlet
- Servlet開發技術,建立,以及Servlet的配置,web.xml的配置ServletWebXML
- Flutter入門——山寨掘金(一)| 掘金技術徵文Flutter
- 入門 Web前端需要學習哪些技術?Web前端
- JVM效能優化(一)JVM技術入門JVM優化
- SpringCloud微服務治理技術入門(SCN)SpringGCCloud微服務
- 區塊鏈技術:智慧合約入門區塊鏈
- Docker技術筆記:Docker入門淺嘗Docker筆記
- webpack(2.0)入門詳解 | 掘金技術徵文Web
- 大型網站技術架構-入門梳理網站架構
- [譯]區塊鏈技術全解析入門版區塊鏈
- web專案技術必備-------jQuery快速入門WebjQuery
- 實時音視訊技術入門提綱
- XML入門指南(19)XML相關技術(轉)XML
- Servlet入門二:Tomcat安裝與執行ServletTomcat
- Servlet第一篇【介紹Servlet、HTTP協議、WEB目錄結構、編寫入門Servlet程式、Servlet生命週期】ServletHTTP協議Web
- 批判性地看待一種可行的表示技術:JavaServerPages servlet技術(上) (轉)JavaServerServlet
- 最火的容器技術|Docker入門與實踐Docker
- ML.NET技術研究系列1-入門篇
- Python技術棧效能測試工具Locust入門Python
- 日系 [圖解X] 技術入門系列一覽表圖解