Servlet學(xué)習(xí)servlet的生命周期servletAPI學(xué)習(xí)
Servlet是基于java技術(shù)的web組件,被servlet容器(tomcat等)管理,用于根據(jù)不同請(qǐng)求而生成動(dòng)態(tài)的內(nèi)容。像其它基于java的組件技術(shù)一樣,是與平臺(tái)無(wú)關(guān)的組件技術(shù),編譯成與平臺(tái)無(wú)關(guān)的字節(jié)碼,被基于java技術(shù)的web服務(wù)器動(dòng)態(tài)加載并運(yùn)行。
servlet的生命周期可分為三個(gè)階段:初始化——init( );服務(wù)——service( );銷(xiāo)毀——destory( )。 1、init( )方法在容器裝入servlet時(shí)執(zhí)行,且只執(zhí)行一次,主要通過(guò)ServletConfig對(duì)象做初始化的操作。 2、service( )方法負(fù)責(zé)響應(yīng)客戶(hù)端的請(qǐng)求。service(ServletRequest req,ServletResponse res) 。 3、destory( )方法,僅執(zhí)行一次,在servlet容器終止運(yùn)行時(shí)調(diào)用,用于釋放servlet占用的資源。
Servlet框架由兩個(gè)包組成:javax.servlet和javax.servlet.http。在javax.servlet包中定義了所有Servlet類(lèi)必須實(shí)現(xiàn)或擴(kuò)展的通用接口和類(lèi);在javax.servlet.http包中定義了采用HTTP協(xié)議通信的HttpServlet類(lèi)。
1、javax.servlet.Servlet接口該接口為最核心的接口,所有的servlet類(lèi)都必須實(shí)現(xiàn)該接口。該接口包含了5個(gè)方法,(1)init(ServletConfig config) :負(fù)責(zé)初始化servlet對(duì)象。(2)service(ServletRequest req, ServletResponse res) :負(fù)責(zé)響應(yīng)客戶(hù)端的請(qǐng)求。(3)destroy() :當(dāng)Servlet對(duì)象退出生命周期時(shí),負(fù)責(zé)釋放占用的資源。(4)getServletConfig() :獲得ServletConfig接口,可以得到Servlet的相關(guān)參數(shù)。(5)getServletInfo() :獲取servlet相關(guān)信息,比如版權(quán),作者,版本等。 在javax.servlet包中,GenericServlet(抽象類(lèi))類(lèi)實(shí)現(xiàn)了Servlet接口,在javax.servlet.http包中,HttpServlet(抽象類(lèi))類(lèi)擴(kuò)展了GenericServlet 類(lèi)。當(dāng)用戶(hù)開(kāi)發(fā)自己的Servlet時(shí),必須擴(kuò)展以上兩個(gè)類(lèi)中的一個(gè),如果擴(kuò)展自GenericServlet類(lèi),則必須自己實(shí)現(xiàn)service方法,如果擴(kuò)展自HttpServlet類(lèi),則不需要自己實(shí)現(xiàn)service方法,因?yàn)镠ttpServlet類(lèi)已經(jīng)實(shí)現(xiàn)了該方法。2、Servlet容器會(huì)為Web應(yīng)用創(chuàng)建一個(gè)唯一的全局的ServletContext對(duì)象,可以把它看成是一個(gè)Web應(yīng)用的服務(wù)器端組件的共享內(nèi)存。方法:setAttribute(String name,Object obj) 將一個(gè)對(duì)象與一個(gè)屬性名綁定,并存放到ServletContext中g(shù)etAttribute(String name) 獲得指定名稱(chēng)的屬性值。removeAttribute(String name) 刪除指定名稱(chēng)的屬性。getAttributeNames() 返回所有屬性名的一個(gè)Enumeration對(duì)象。getInitParameter(String name) 獲得指定名稱(chēng)的參數(shù)值,該參數(shù)是Web應(yīng)用的初始化參數(shù).getInitParameterNames() 返回Web應(yīng)用的所有初始化參數(shù)的名稱(chēng)的Enumeration對(duì)象.getMimeType(String file) 返回文件的MIME類(lèi)型.getRealPath(String path) 返回網(wǎng)絡(luò)路徑path對(duì)應(yīng)的文件系統(tǒng)路徑.getServerInfo() 返回Servlet容器的名稱(chēng)和版本3、ServletRequest接口和ServletResponse接口方法
(1)ServletRequest接口的方法如下:getAttribute 獲得屬性值getContentType 獲得客戶(hù)請(qǐng)求數(shù)據(jù)的MIME類(lèi)型。getInputStream 獲得可以讀取客戶(hù)請(qǐng)求數(shù)據(jù)的輸入流。getParameter 獲得參數(shù)值getRemoteAddr 獲得客戶(hù)端的ipgetRemoteHost 獲得客戶(hù)端的主機(jī)名getRemotePort 獲得客戶(hù)端的端口setAttribute 設(shè)置屬性值。(2)ServletResponse接口的方法如下:getOutputStream 獲得可以向客戶(hù)羰發(fā)送二進(jìn)制數(shù)據(jù)的輸出流對(duì)象ServletOutputStreamgetWriter 獲得可以向客戶(hù)端發(fā)送字符數(shù)據(jù)的PRintWriter對(duì)象getCharacterEncoding 獲得Servlet發(fā)送的響應(yīng)數(shù)據(jù)的字符編碼getContentType 返回Servlet發(fā)送的響應(yīng)數(shù)據(jù)的MIME類(lèi)型setCharacterEncoding 設(shè)置Servlet發(fā)送的響應(yīng)數(shù)據(jù)的字符編碼。setContentType 設(shè)置Servlet發(fā)送的響應(yīng)數(shù)據(jù)的MIME類(lèi)型。4、Servlet的init方法有如下兩種形式: public void init(ServletConfig config) throws ServletException public void init() throws ServletException 在Servlet的初始化分階段,Servlet容器會(huì)為Servlet創(chuàng)建一個(gè)ServletConfig對(duì)象,用來(lái)存放Servlet的初始化配置信息,如Servlet的初始參數(shù)。如果Servlet覆蓋了帶參數(shù)的init方法,則必須在函數(shù)體內(nèi)先調(diào)用super.init(config); 以確保config參數(shù)引用了ServletConfig對(duì)象。如果Servlet覆蓋了沒(méi)有帶參數(shù)的init方法,則不需要調(diào)用super.init(); 方法,可以通過(guò)調(diào)用getServletConfig()方法來(lái)獲得ServletConfig對(duì)象。
參考鏈接: 1、servlet,filter,listener 2、Servlet生命周期與工作原理
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注