天天看點

《Servlet和JSP學習指南》一1.9 HTTP Servlet

我們所編寫的servlet應用程式,盡管不能說全部,但其中大多數要用到http。這意味着,可以利用http提供的特性。javax.servlet.http包是servlet api中的第二個包,其包含了編寫servlet應用程式的類和接口。javax.servlet.http中的許多類型覆寫了javax.servlet中的類型。

圖1-5展示了javax.servlet.http中的主要類型。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

httpservlet類覆寫javax.servlet.genericservlet類。在使用httpservlet時,還要使用httpservletrequest和httpservletresponse對象,它們分别表示servlet請求和servlet響應。httpservletrequest接口繼承javax.servlet.servletrequest,httpservletresponse繼承javax.servlet.servletresponse。

httpservlet覆寫genericservlet中的service方法,并用以下簽名添加了另一個service方法:

《Servlet和JSP學習指南》一1.9 HTTP Servlet

這個新的service方法與javax.servlet.servlet中的差別在于,前者接受的是httpservlet-request和httpservletresponse,而不是servletrequest和servletresponse。

與往常一樣,servlet容器調用javax.servlet.servlet中原始的service方法,httpservlet中的service方法要如下這麼寫:

《Servlet和JSP學習指南》一1.9 HTTP Servlet

原始的service方法将請求和響應對象進行向下轉換,分别從servlet容器轉換成httpservletrequest和httpservletresponse,并調用新的service方法。向下轉換總是會成功,因為在調用一個servlet的service方法時,servlet容器總會預計使用http,是以傳遞一個httpservletrequest和一個httpservletresponse。即使正在實作javax.servlet.servlet接口或者繼承javax.servlet.genericservlet,也可以将傳給service方法的servlet請求和servlet響應,分别向下轉換成httpservletrequest和httpservletresponse。

之後,httpservlet中新的service方法會檢視通常用來發送請求(通過調用request.getmethod)的http方法,并調用以下某個方法(doget、dopost、dohead、doput、dotrace、dooptions和dodelete)。這7個方法各自表示一個http方法。其中,doget和dopost是最常用的。是以,通常不需要再覆寫service方法,而是覆寫doget或者dopost,或者将doget和dopost都覆寫掉。

總之,httpservlet中有兩項特性是genericservlet所沒有的:

不覆寫service方法,而是覆寫doget、dopost,或者兩者都覆寫掉。在極少數情況下,還要覆寫以下某個方法:dohead、doput、dotrace、dooptions或dodelete。

将用httpservletrequest和httpservletresponse代替servletrequest和servlet-response。

httpservletrequest表示http環境中的servlet請求。它繼承javax.servlet.servletrequest接口,并增加了幾個方法,例如:

《Servlet和JSP學習指南》一1.9 HTTP Servlet

傳回表示請求context的請求uri部分。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

傳回一個cookie對象數組。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

傳回指定http标頭的值。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

傳回發出這條請求的http方法的名稱。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

傳回請求url中的查詢字元串。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

傳回與這個請求有關的session對象。如果沒有找到,則建立新的session對象。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

傳回與這個請求有關的session對象。如果沒有找到,并且create參數為true,那麼将建立新的session對象。

在接下來的章節中,将學習如何使用這些方法。

httpservletresponse表示http環境下的servlet響應。下面是其中定義的部分方法:

《Servlet和JSP學習指南》一1.9 HTTP Servlet

給這個響應對象添加cookie。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

給這個響應對象添加标頭。

《Servlet和JSP學習指南》一1.9 HTTP Servlet

發送響應代号,将浏覽器重定向到指定的位置。

在接下來的章節中将進一步學習這些方法。