針對 Servlet 的每次請求,Web 服務(wù)器在調(diào)用 service() 方法之前,都會創(chuàng)建 HttpServletRequest 和 HttpServletResponse 對象。其中,HttpServletRequest 對象用于封裝 HTTP 請求消息,簡稱 request 對象。HttpServletResponse 對象用于封裝 HTTP 響應(yīng)消息,簡稱 response 對象。瀏覽器訪問 Servlet 的交互過程如圖 1 所示。
圖 1 瀏覽器訪問Servlet過程
在圖 1 中,首先瀏覽器向 Web 服務(wù)器發(fā)送了一個(gè) HTTP 請求,Web 服務(wù)器根據(jù)收到的請求,會先創(chuàng)建一個(gè) HttpServletRequest 和 HttpServletResponse 對象,然后再調(diào)用相應(yīng)的 Servlet 程序。
在 Servlet 程序運(yùn)行時(shí),它首先會從 HttpServletRequest 對象中讀取數(shù)據(jù)信息,然后通過 service() 方法處理請求消息,并將處理后的響應(yīng)數(shù)據(jù)寫入到 HttpServletResponse 對象中。最后,Web 服務(wù)器會從 HttpServletResponse 對象中讀取到響應(yīng)數(shù)據(jù),并發(fā)送給瀏覽器。
需要注意的是,在 Web 服務(wù)器運(yùn)行階段,每個(gè) Servlet 都只會創(chuàng)建一個(gè)實(shí)例對象,針對每次 HTTP 請求,Web 服務(wù)器都會調(diào)用所請求 Servlet 實(shí)例的 service(HttpServletRequest request,HttpServletResponse response)方法,并重新創(chuàng)建一個(gè) request 對象和一個(gè) response 對象。