java web編程學習2

書接上文,接下來細聊下HttpServlet、HttpServletRequest和HttpServletResponse。java

HttpServlet的方法以下mvc

image

doXXX系列對應着http的各類方法,除此以外,還有三個本身的方法: getLastModified、service(req,res)、service(req,resp)。getLastModified不用說,返回一個時間戳,表示req上次改變的時間,暫時沒用過,很差說。另外兩個service方法,先看這個public的這個,介紹上說將客戶端請求分發給受保護的service方法。咱們不難想象這個函數代碼相似以下jsp

void service(ServletRequest req,ServletResponse res)
{
	service((HttpServletRequest)req, (HttpServletResponse)res);
}

至於爲何,我暫時還不清楚,得往下看看。先看看 service(HttpServletRequest, HttpServletResponse),這個方法就很好理解,介紹上說 從public的service方法得到標誌的http請求,並將它們分發給doXXX方法。函數

HttpServlet繼承自GenericServlet,而GenericServlet實現了一個叫Servlet的接口,這下才明白,爲何有個公開的service方法。原來這個方法是繼承下來的。也就是說當初Servlet並非只是爲了Http準備的,可好像如今真正實現了Servlet也就只有HttpServlet,不知道之後會有什麼 xxxServlet。學習

如今咱們知道, Servlet、ServletRequest、ServletRequest是一組,它們都在javax.servlet包裏。而HttpServlet、HttpServletRequest、HttpServletResponse是一組,它們都在javax.servlet.http裏。.net

接下來講說HttpServletRequest,這個類應該就是承載了用戶滿滿希冀的一個類了。它的方法主要有:getAttribute、 getAttributeNames、 getParamter、 getParamterMap、 getParamterNames 、getParamterValues、 getReader、 setAttribute、 removeAttribute、 getHeader、 getCookies、 getHeaderNames、 getSession這些方法。設計

從*Pramter*談起,這些都是用戶經過表單等等方式提交上來的數據,java通通理解爲字符串。同時java提供了*Attribute*系列的方法,並且操做的對象居然是Object,想來也猜到着確定不是用戶提供數據的方法,查閱資料知道了這是使用forward的方法使用的函數。能夠想象,咱們使用mvc模式,當controller和model交互完處理好了業務邏輯,可使用setAttribute方法而後forward到view裏去,jsp或其餘什麼模板引擎getAttribute進行展現。code

再說說HttpServletResponse,類名就告訴咱們這個類是供咱們給用戶提供響應的,看看它的方法:對象

image

其中我如今用的最多的就是getWriter方法,這個方法就至關於控制檯裏的System.out,其餘的還有setContentType,setCharacterEncoding,addCookie等方法。繼承

綜上,咱們能夠總結,這三個類的設計、實現都是圍繞着http協議,學習過http,這麼多方法都有似曾相識的感受,理論知識就是這些,接下來要作些servlet的實驗。

相關文章
相關標籤/搜索