Servlet能夠做什么?
Servlet API的核心類框圖:
Servlet API的核心是javax.servlet.Servlet接口,所有的Servlet類都必須實現該接口。在Servlet接口中定義了5個方法,其中有3個方法都是由Servlet容器調用,即管理Servlet的生命周期,分別是init(ServletConfig cfg)、service(ServletRequest req, ServletResponse resp)、destroy()方法。除此之外,另外兩個方法是getServletConfig()和getServletInfo(),用于返回Servlet相關信息。
GenericServlet抽象類,為Servlet接口提供了通用實現,它與任何網絡應用層協議無關。
HttpServlet類是GenericServlet類的子類。
ServletRequest接口,當Servlet容器接收到客戶端要求訪問特定請求時,容器先解析客戶端的原始請求數據,把它包裝成一個ServletRequest對象。當容器調用service(req, resp)方法時,就可以把ServletRequest對象作為參數傳遞給service()方法。
ServlerRequest接口提供了一系列用于讀取客戶端的請求數據的方法。這里不列舉了。
HttpServletRequest接口是ServletRequest接口的子接口。
————
說完了ServletRequest,該說ServletResponse了。
沒錯,ServletResponse是Servlet容器service(req, resp)方法的第二個參數。Servlet容器通過它來生成響應結果。在ServletResponse接口中定義了一系列與生成響應結果相關的方法。這里不列舉了。
有兩種輸出方法重點說一下:
HttpServletResponse接口是ServletResponse的子接口。
——————
ServletConfig接口,包含了Servlet的初始化參數信息。Servlet容器在調用Servlet對象的init(cfg)方法時,會把ServletConfig對象作為參數傳給Servlet對象。
每個初始化參數包括一對參數名和參數值。在web.xml中配置一個Servlet時,通過<init-param>元素來設置初始化參數。
## HttpServlet類繼承GenericServlet類,而GenericServlet類實現了ServletConfig接口,因此在HttpServlet類或者GenericServlet及其子類中都可以直接調用ServletConfig接口中的方法。
——————
ServletContext接口,是Servlet與Servlet容器之間直接通信的接口。Servlet容器在啟動一個web應用時,會為它創建一個ServletContext對象,且唯一!!可以把ServletContext對象形象的理解為web應用的總管家,同一個web應用中的所有Servlet對象都共享一個總管家,Servlet對象們可通過這個總管家來訪問容器中的各種資源。