二 Servlet API

你需要適合用Servlet API 創建servlet. 在使用API時,有兩個包必須記住, javax.servlet 包,該包包含了支持通用servlet(獨立於協議的servlet)的類,javax.servlet.http包,該包包含了支持http servlet的類。 你也許想知道什麼是通用servlet,http servlet, 我隨後會解釋他們。

 

包的繼承關係

java.lang.Object

|_extended by javax.servlet.GenericServlet

|_extended by javax.servlet.http.HttpServlet

每個servlet必須實現java.servlet.Servlet接口。可以擴展下面兩個類的任何一個:javax.servlet.GenericServlet,javax.servlet.http.HttpServlet. 第一個是獨立於協議的Servlet,第二個是爲http 的Servlet.

 

servet 如何工作的?

(image)[https://beginnersbook.com/wp-content/uploads/2013/05/How_Servlet_Works.jpg]

 

Generic Servlet

 

如果要創建一個通用的servet, 就必須擴展javax.servlet.GenericServlet 類,該類有個抽象方法service(),也就是說,GenericServlet子類應該總是覆蓋service()方法。

service()方法簽名

public abstract void service(ServletRequest request, ServletResponse response)

throws ServletException, java.io.IOException

 

service()方法接受兩個參數:ServletRequest對象和ServletResponse對象。這個請求對象告訴servlet關於這個客戶端請求,這個響應對象用於返回客戶端響應

(image)[https://beginnersbook.com/wp-content/uploads/2013/05/Generic_Servlet.jpg]

 

HTTP Servlet

如果創建一個Http Servlet,就必須擴展javax.servlet.http.HttpServlet類,這是一個抽象類。不像普通的servlet,Http Servlet不會覆蓋service()方法,而是覆蓋至少一個下面的方法:

doGet(): 這個方法被servlet 的service()方法調用去處理客戶端的http get請求。此方法用戶獲取來自服務器的信息。

doPost(): 用於向服務器發送信息。

doPut(): 這個方法與doPost()類似,但是不像doPost()發送信息給服務器,而是發送文件到服務器,類似於FTP操作。(我不同意這個說法)

doDelete(): 允許客戶端刪除文檔,網頁或者來自服務器的信息。

init()和destory(): 用於管理servlet生命週期內佔用的資源。

getServletInfo(): 返回關於該servlet的信息,例如作者,版本,版權。

 

在Http Servlet 沒有必要覆蓋service()方法,因爲這個方法分發Http Request 到正確的處理方法上,例如, 接受到Http Get 請求,它會分發請求到doGet()方法上。

(image)[https://beginnersbook.com/wp-content/uploads/2013/05/Http_Servlet.jpg]

 

在javax.servlet 包中的接口

Servlet

ServletRequest

ServletResponse

ServletConfig

ServletContext

SingleThreadModel

RequestDispatcher

ServletRequestListener

ServletRequestAttributeListener

ServletContextListener

ServletContextAttributeListener

Filter

FilterConfig

FilterChain

Classes in javax.servlet package

GenericServlet

ServletInputStream

ServletOutputStream

ServletException

ServletRequestWrapper

ServletRequestEvent

ServletResponseWrapper

ServletContextEvent

ServletRequestAttributeEvent

ServletContextAttributeEvent

UnavailableException

 

在javax.servlet.http 包中的接口

HttpSession

HttpServletRequest

HttpServletResponse

HttpSessionAttributeListener

HttpSessionListener

HttpSessionBindingListener

HttpSessionActivationListener

HttpSessionContext

 

在 javax.servlet.http 包中的類

HttpServlet

Cookie

HttpSessionEvent

HttpSessionBindingEvent

HttpServletRequestWrapper

HttpServletResponseWrapper

HttpUtils

 

參考:

javax.servlet Official Servlet API Documentation

java.servlet.http API documentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章