Java Web Servlet
Servlet是在服務器上運行的小程序。一個Servlet就是一個Java類,并且可以通過“請求-響應”編程模型來訪問的這個駐留在服務器內存里的Servlet程序。
Servlet可完成以下功能:
- 讀取客戶端(瀏覽器)發送的顯式的數據。這包括網頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程序的表單。
- 讀取客戶端(瀏覽器)發送的隱式的 HTTP 請求數據。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。
- 處理數據并生成結果。這個過程可能需要訪問數據庫,執行 RMI 或 CORBA 調用,調用 Web 服務,或者直接計算得出對應的響應。
- 發送顯式的數據(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)、二進制文件(GIF 圖像)、Excel 等。
- 發送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設置 cookies 和緩存參數,以及其他類似的任務。
【手工編寫Servlet】
繼承HttpServlet
重寫doGet()或者doPost()方法
在web.xml中注冊Servlet
Servlet的裝載三種情況:
1、自動裝載:某些Servlet如果需要在Servlet容器啟動時就加載,需要在web.xml下它的標簽里中,添加優先級代碼:
<Servlet><load-on-startup>1</load-on-startup></Servlet>
數字越小表示該servlet的優先級越高,會先于其他自動裝載的優先級較低的先裝載
Servlet容器啟動后,客戶首次向某個Servlet發送請求時,Tomcat容器會加載它
當Servlet類文件被更新后,也會重新自動加載,Servlet是長期駐留在內存里的。某個Servlet一旦被加載,就會長期存在于服務器的內存里,直到服務器關閉,Servlet被裝載后,Servlet容器創建一個Servlet實例并且調用Servlet的init()方法進行初始化。在Servlet的整個生命周期內,init()方法只被調用一次。
Servlet配置:
<servlet><!-- 聲明Servlet對象 --><servlet-name>MyServlet</servlet-name><!-- 上面一句指定Servlet對象的名稱 --><servlet-class>com.servlet.MyServlet</servlet-class><!-- 上面一句指定Servlet對象的完整位置,包含包名和類名 --></servlet><servlet-mapping><!-- 映射Servlet --><servlet-name>MyServlett</servlet-name><!--<servlet-name>與上面<Servlet>標簽的<servlet-name>元素相對應,不可以隨便起名 --><url-pattern>/MyServlet</url-pattern><!-- 上面一句話用于映射訪問URL --></servlet-mapping
Servlet生命周期:
Servlet 生命周期可被定義為從創建直到毀滅的整個過程。以下是 Servlet 遵循的過程:
- Servlet 通過調用 init () 方法進行初始化。
- Servlet 調用 service() 方法來處理客戶端的請求。
- Servlet 通過調用 destroy() 方法終止(結束)。
- 最后,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。
ServletConfig
ServletConfig是針對特定的Servlet的參數或屬性。ServletConfig是表示單獨的Servlet的配置和參數,只是適用于特定的Servlet。從一個servlet被實例化后,對任何客戶端在任何時候訪問有效,但僅對本servlet有效,一個servlet的ServletConfig對象不能被另一個servlet訪問。
初始化參數為局部的
<servlet><servlet-name>ServletConfigDemo</servlet-name><servlet-class>com.yyz.servletconfig.ServletConfigDemo</servlet-class><init-param><param-name>xxx</param-name><param-value>yyy</param-value></init-param></servlet><servlet-mapping><servlet-name>ServletConfigDemo</servlet-name><url-pattern>/servlet/ServletConfigDemo</url-pattern></servlet-mapping>
調用形式:
//獲取指定的初始化參數
String value = config.getInitParameter("xxx");
response.getOutputStream().write(value.getBytes());
//獲取所有的初始化參數
Enumeration<String> e = cofig.getInitParameterNames();
while(e.hasMoreElements()){String name = e.nextElement();value = config.getInitParameter(name);response.getOutputStream().write((name+"="+value+"<br/>").getBytes());
}
ServletContext
一個ServletContext對象表示了一個Web應用程序的上下文。
Servlet上下文:Servlet上下文提供對應用程序中所有Servlet所共有的各種資源和功能的訪問。Servlet上下文API用于設置應用程序中所有Servlet共有的信息。Servlet可能需要共享他們之間的共有信息。運行于同一服務器的Servlet有時會共享資源,如JSP頁面、文件和其他Servlet。
初始化參數為全局的
功能:
獲取web應用程序的初始化參數
記錄日志
application域范圍的屬性
訪問資源文件
獲取虛擬路徑所映射的本地路徑
web應用程序之間的訪問
ServletContext的其他方法
?