Java高級(jí)_servlet生命周期和jsp的九大內(nèi)置對(duì)象

Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init(初始化)方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doXXX方法(doGet,doPost都是我們要進(jìn)行的工作)等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy(銷毀)方法。

注:sevlet的生命周期中,servlet的初始化和銷毀只會(huì)發(fā)生一次,因此init()和destroy()方法只能被servlet容器調(diào)用一次,而service()方法取決與servlet被客戶端訪問(wèn)的次數(shù)

與CGI的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過(guò)多線程方式運(yùn)行其service方法,

一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,

服務(wù)完成后就銷毀,所以效率上低于servlet。

jsp的九大內(nèi)置對(duì)象:

一.request對(duì)象(一次請(qǐng)求范圍)

該對(duì)象封裝了用戶提交的信息,通過(guò)調(diào)用該對(duì)象相應(yīng)的方法可以獲取封裝的信息,

即使用該對(duì)象可以獲取用戶提交信息。它是HttpServletRequest的實(shí)例。

下面介紹request的常用方法:

1,getParameter();使用如下 String str=request.getParameter();2,setAttribute();和getAttribute();removeAttribute();getMethod();getProtocol();getReqeustURI();getRemoteAddr();

getServerPort();和 getServerName();

二.response對(duì)象(一次請(qǐng)求范圍)

對(duì)客戶的請(qǐng)求做出動(dòng)態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)。

三.session對(duì)象(打開(kāi)一個(gè)瀏覽器范圍)

1.什么是session:session對(duì)象是一個(gè)JSP內(nèi)置對(duì)象,它在第一個(gè)JSP頁(yè)面被裝載時(shí)自動(dòng)創(chuàng)建,完成會(huì)話期管理。

從一個(gè)客戶打開(kāi)瀏覽器并連接到服務(wù)器開(kāi)始,到客戶關(guān)閉瀏覽器離開(kāi)這個(gè)服務(wù)器結(jié)束,被稱為一個(gè)會(huì)話。當(dāng)一個(gè)客戶訪問(wèn)一個(gè)服務(wù)器時(shí),可能會(huì)在這個(gè)服務(wù)器的幾個(gè)頁(yè)面之間反復(fù)連接,反復(fù)刷新一個(gè)頁(yè)面,服務(wù)器應(yīng)當(dāng)通過(guò)某種辦法知道這是同一個(gè)客戶,這就需要session對(duì)象。

2.session對(duì)象的ID:當(dāng)一個(gè)客戶首次訪問(wèn)服務(wù)器上的一個(gè)JSP頁(yè)面時(shí),JSP引擎產(chǎn)生一個(gè)session對(duì)象,同時(shí)分配一個(gè)String類型的ID號(hào),JSP引擎同時(shí)將這個(gè)ID號(hào)發(fā)送到客戶端,存放在Cookie中,這樣session對(duì)象和客戶之間就建立了一一對(duì)應(yīng)的關(guān)系。當(dāng)客戶再訪問(wèn)連接該服務(wù)器的其他頁(yè)面時(shí),不再分配給客戶新的session對(duì)象,直到客戶關(guān)閉瀏覽器后,服務(wù)器端該客戶的session對(duì)象才取消,并且和客戶的會(huì)話對(duì)應(yīng)關(guān)系消失。當(dāng)客戶重新打開(kāi)瀏覽器再連接到該服務(wù)器時(shí),服務(wù)器為該客戶再創(chuàng)建一個(gè)新的session對(duì)象。

3.session對(duì)象存在一定時(shí)間過(guò)期問(wèn)題,所以存在session中的名值對(duì)會(huì)在一定時(shí)間后失去,可以通過(guò)更改session有效時(shí)間來(lái)避免這種情況。同時(shí)編程時(shí)盡量避免將大量有效信息存儲(chǔ)在session中,request是一個(gè)不錯(cuò)的替代對(duì)象。

四.a(chǎn)pplication對(duì)象(服務(wù)器啟動(dòng)范圍內(nèi))

1.什么是application:

服務(wù)器啟動(dòng)后就產(chǎn)生了這個(gè)application對(duì)象,當(dāng)客戶在所訪問(wèn)的網(wǎng)站的各個(gè)頁(yè)面之間瀏覽時(shí),這個(gè)application對(duì)象都是同一個(gè),直到服務(wù)器關(guān)閉。但是與session不同的是,所有客戶的application對(duì)象都是同一個(gè),即所有客戶共享這個(gè)內(nèi)置的application對(duì)象。

2.a(chǎn)pplication對(duì)象常用方法:

(1)public void setAttribute(String key,Object obj): 將參數(shù)Object指定的對(duì)象obj添加到application對(duì)象中,并為添加的對(duì)象指定一個(gè)索引關(guān)鍵字。

(2)public Object getAttribute(String key): 獲取application對(duì)象中含有關(guān)鍵字的對(duì)象。

五.out對(duì)象

out對(duì)象是一個(gè)輸出流,用來(lái)向客戶端輸出數(shù)據(jù)。out對(duì)象用于各種數(shù)據(jù)的輸出。

六.Page

page對(duì)象就是指向當(dāng)前JSP頁(yè)面本身,有點(diǎn)象類中的this指針,它是java.lang.Object類的實(shí)例

JSP網(wǎng)頁(yè)本身,page對(duì)象是當(dāng)前頁(yè)面轉(zhuǎn)換后的Servlet類的實(shí)例。從轉(zhuǎn)換后的Servlet類的代碼中,可以看到這種關(guān)系:Object page = this;在JSP頁(yè)面中,很少使用page對(duì)象。

七.config對(duì)象

javax.servlet. ServletConfig 的實(shí)例,該實(shí)例代表該JSP 的配置信息。常用的方法有g(shù)etInitParameter(String paramNarne) 及getInitParameternarnes() 等方法。事實(shí)上, JSP 頁(yè)面通常無(wú)須配置,也就不存在配置信息。因此,該對(duì)象更多地在Servlet 中有效。

八.exception對(duì)象

java.lang.Throwable 的實(shí)例,該實(shí)例代表其他頁(yè)面中的異常和錯(cuò)誤。只有當(dāng)頁(yè)面是錯(cuò)誤處理頁(yè)面,即編譯指令page 的isErrorPage 屬性為true 時(shí),該對(duì)象才可以使用。常用的方法有g(shù)etMessage()和printStackTrace()等。

九. pageContext對(duì)象

javax.servlet.jsp.PageContext 的實(shí)例,該對(duì)象代表該JSP 頁(yè)面上下文,使用該對(duì)象可以訪問(wèn)頁(yè)面中的共享數(shù)據(jù)。常用的方法有g(shù)etServletContext()和getServletConfig()等。

//使用pageContext 設(shè)置屬性,該屬性默認(rèn)在page 范圍內(nèi)

pageContext. setAttribute("page" , "hello") ;

//使用request 設(shè)置屬性,該屬性默認(rèn)在request 范圍內(nèi)

request. setAttribute ("request" , "hello");

//使用pageContext將屬性設(shè)置在request 范圍中

pageContext.setAttribute("request2" , "hello" , pageContext.REQUEST_SCOPE);

// 使用session將屬性設(shè)置在session 范圍中

session.setAttribute("session" , "hello");

//使用pageContext將屬性設(shè)置在session范圍中

pageContext.setAttribute("session2" , "hello" , pageContext.SESSION_SCOPE);

//使用application將屬性設(shè)置在application范圍中

application. setAttribute ("app" , "hello") ;

//使用pageContext 將屬性設(shè)置在application 范圍中

pageContext.setAttribute("app2" , "hello" , pageContext.APPLICATION_SCOPE) ;

以上資源來(lái)源于:http://baike.baidu.com/view/3387.htm#4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、JSP內(nèi)置對(duì)象簡(jiǎn)介 JSP內(nèi)置對(duì)象是Web容器創(chuàng)建的一組對(duì)象,不使用new關(guān)鍵字就可以使用的內(nèi)置對(duì)象。開(kāi)發(fā)者可...
    年少懵懂丶流年夢(mèng)閱讀 3,829評(píng)論 0 8
  • 1.學(xué)習(xí)內(nèi)容 JSP技術(shù)入門和常用指令 JSP的內(nèi)置對(duì)象&標(biāo)簽介紹 EL表達(dá)式&EL的內(nèi)置對(duì)象 2.JSP技術(shù)入門...
    WendyVIV閱讀 2,172評(píng)論 1 18
  • 一、JSP基礎(chǔ) 1.1什么是JSP JSP(Java ServerPage)是Java服務(wù)器端動(dòng)態(tài)頁(yè)面技術(shù)。是su...
    晨星資源閱讀 1,175評(píng)論 0 6
  • 這部分主要是與Java Web和Web Service相關(guān)的面試題。 96、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,425評(píng)論 0 10
  • 所謂青春片,就是把美好的碎片重疊重疊再懷念—— 本來(lái)我是不打算去看高潮排期已過(guò)的《我的少女時(shí)代》了,卻在訂單即將生...
    閆曉雨閱讀 3,886評(píng)論 48 101