(1) Servlet本質上就是一個Java類,只不過運行在Servlet容器中 (2) Servlet的功能: ① 創建並返回客戶請求的動態HTML頁面 ② 創建可嵌入到現有HTML頁面中的部分HTML頁面 ③ 與其他伺服器資源進行通信 ① Servlet引擎檢查是否已經裝載並創建該Servlet ...
- Servlet簡介
(1) Servlet本質上就是一個Java類,只不過運行在Servlet容器中
(2) Servlet的功能:
① 創建並返回客戶請求的動態HTML頁面
② 創建可嵌入到現有HTML頁面中的部分HTML頁面
③ 與其他伺服器資源進行通信
- Servlet容器響應客戶請求的過程
① Servlet引擎檢查是否已經裝載並創建該Servlet實例對象(有②否④)
② 裝載並創建Servlet的一個實例對象:調用該Servlet的構造器
③ 調用init()方法
④ 創建一個用於封裝請求的ServletRequest對象和一個代表響應信息的ServletResponse對象,然後調用Servlet的service()方法並將請求和響應對象作為參數傳遞進去
⑤ web程式在停止或重新啟動前,Servlet引擎卸載Servlet,併在卸載之前調用Servlet的destroy()方法
- 聲明周期方法
都是由Servlet容器負責調用
l 構造器:只被調用一次,第一次請求servlet是,創建servlet實例,調用該構造器,說明servlet是單實例的。
l init:只被調用一次,在創建好servlet實例後立即被調用,負責初始化servlet
l service:被調用多次,每次請求servlet都會調用該方法,用於響應請求
l destory:只被調用一次,在當前servlet所在的web應用程式被終止之前被調用,釋放當前servlet所占的資源
- Servlet註冊和運行
(一)Servlet程式必須通過Servlet容器來運行
(二)Servlet程式必須在web引用程式的web.xml文件中進行註冊和映射其訪問路徑,才可以被Servlet引擎載入和被外界訪問
(三)一個Servlet元素用於註冊一個Servlet,它包含兩個主要的子元素:servlet-name和servlet-class,分別用來設置servlet的註冊名稱和Servlet完整類名
l 一個Servlet-mapping 元素用於映射一個已註冊的Servlet的一個對外訪問路徑,它包含兩個子元素:servlet-name和url-pattern分別用於指定Servlet的註冊名稱和對外訪問的路徑
l 同一個Servlet可以被映射到多個url上,即多個servlet-mapping的子元素,servlet-name設置值可以是一個Servlet的註冊名
l 在Servlet映射的url可以使用*通配符,但只能是兩種固定格式:一種是“*.擴展名”,另外一種是以“/”開頭“/*”結尾
l 在瀏覽器的訪問路徑是:http://localhost:8080/Servlet1114/hello
- ServletConfig對象
- 獲取servlet初始化參數
1) getInitParameter(String name):獲取指定的參數名的初始化參數
String name=servletconfig.getInitParameter(“jdbc”);
2) getInitParameterNames();獲取參數名組成的Enumeration對象
Enumeration<String> names=servletconfig.getInitParameterNames();
- ServletContext對象
- Servlet引擎為每一個Web程式創建了一個對應的ServletContext對象,ServletContext對象被包含在ServletConfig對象中,調用servletconfig.getServletContext方法可以返回ServletContext對象的引用
- 獲取web應用初始化參數
getInitParameter()
ServletContext servletContext=servletConfig.getServletContext();
String driver=servletContext.getInitParameter("driver");
- 獲取web應用初始化參數名
getInitParameter()
Enumeration<String> names=servletContext.getInitParameterNames()
- 獲取當前項目的真實路徑
- 獲取當前項目的絕對路徑
- Servlet的載入
l 如果load-on-startup如果為負數,則在第一次請求servlet是創建實例和初始化;
l 如果是0或正數,則在當前web應用載入的時候創建該實例和初始化
l 數值越小,先被創建