Servlet&JSP學習之Servlet的請求和響應
- Servlet的請求
假如你已經安裝好了Eclipse或者其他IDE,現在就建一個Servlet文件試試看,你會發現建立的Servlet會默認繼承javax.servlet.http.HttpServlet類,就算你沒有安裝Eclipse也無所謂,知道我們編寫的Servlet是需要繼承javax.servlet.http.HttpServlet類就可以啦。
現在打開這個類看看,看看Servlet的老爸長得如何,public abstract class HttpServlet extends GenericServlet implements Serializable; 從這看得出,Servlet還有一個爺爺,它是javax.servlet.GenericServlet,還實現了一個序列化的功能(java.io.Serializable),序列化的就不說啦,老實說,我也沒用過序列化這功能,僅處于知道有這個地球上有這么一個東西而已。再接著看看Servlet爺爺長得是啥樣,public abstract class GenericServlet extends Object implements Servlet, ServletConfig, Serializable; 我們這需要留意的是Servlet的爺爺是實現了Servlet的接口的,你打開Servlet接口,里面有這樣一句話:Defines methods that all servlets must implement. 換一句話,它是Servlet的老祖宗,所有的Servlet必須要實現這個接口,要不就不能稱之為Servlet。我們Web用的HTTP協議所以就是HttpServlet,同樣的道理,如果將來出現XTTP協議,也許你會看到一個XttpServlet,它必定也是實現了Servlet接口(當然啦,技術出現了大變革除外)。Servlet的爸爸,爺爺的方法這么多,不可能每一個都說。就挑一些常用的(也就是Servlet生命周期的幾個函數)說說:
void init(); //Servlet初始化
void service (ServletRequest req, ServletResponse res);
void doGet (ServletRequest req, ServletResponse res);
void doPost (ServletRequest req, ServletResponse res);
…………
Servlet各種服務
void destroy(); //Servlet的銷毀
記得李興華老師當時是這樣說的:Servlet的生命周期其實就是人一生的寫照,Tomcat就是這個社會。人的經歷首先是從出生開始的,對Servlet而言就是調用init()方法,想想看,人的一生能出生多少次啊?就一次,Servlet中init()的方法也只能調用一次,一般都是在Servlet第一次運行時加載init()方法,你也可以設置為服務器啟動的時候加載。人出生后,隨著年紀的增長,你就必須得投入到工作去,身體有缺陷的例外,而且工作不是說你只做一次,只要有需要,你就必須得做,重復的做。BOOS的命令,誰敢不服從,要不立刻吵你魷魚。對Servlet而言也是一樣,只是它沒有抵觸情緒而已,哈。它也是不斷的運行doGet(), doPost()等方法,當中有可能出現異常。人總有一天是會死亡的,死亡的確定有兩種,一種是的的確確死了,他的尸體就躺在你面前,另外一種是他失蹤了多少年,從法律的角度上判斷,他是死亡了,他的老婆擁有了合法改嫁的權利。對Servlet而言,它的死亡方式也有兩種:一種是服務器關閉,也就是的的確確死了,另外一種是該Servlet長時間不使用,Tomcat判斷其死亡,Servlet的生命周期到此結束。
2. Servlet響應
使用響應只是為了向客戶發送數據,會對響應調用兩個方法:
setContentType()
getWriter()
posted on 2008-12-18 16:14 peterJ 閱讀(2061) 評論(1) 編輯 收藏 所屬分類: Servlet&JSP