你需要適合用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