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

Servlet被服務器實例化后,容器運行其init(初始化)方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost都是我們要進行的工作)等,當服務器決定將實例銷毀的時候調(diào)用其destroy(銷毀)方法。

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

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

一個實例可以服務于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進程,

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

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

一.request對象(一次請求范圍)

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

即使用該對象可以獲取用戶提交信息。它是HttpServletRequest的實例。

下面介紹request的常用方法:

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

getServerPort();和 getServerName();

二.response對象(一次請求范圍)

對客戶的請求做出動態(tài)的響應,向客戶端發(fā)送數(shù)據(jù)。

三.session對象(打開一個瀏覽器范圍)

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

從一個客戶打開瀏覽器并連接到服務器開始,到客戶關閉瀏覽器離開這個服務器結束,被稱為一個會話。當一個客戶訪問一個服務器時,可能會在這個服務器的幾個頁面之間反復連接,反復刷新一個頁面,服務器應當通過某種辦法知道這是同一個客戶,這就需要session對象。

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

3.session對象存在一定時間過期問題,所以存在session中的名值對會在一定時間后失去,可以通過更改session有效時間來避免這種情況。同時編程時盡量避免將大量有效信息存儲在session中,request是一個不錯的替代對象。

四.a(chǎn)pplication對象(服務器啟動范圍內(nèi))

1.什么是application:

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

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

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

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

五.out對象

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

六.Page

page對象就是指向當前JSP頁面本身,有點象類中的this指針,它是java.lang.Object類的實例

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

七.config對象

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

八.exception對象

java.lang.Throwable 的實例,該實例代表其他頁面中的異常和錯誤。只有當頁面是錯誤處理頁面,即編譯指令page 的isErrorPage 屬性為true 時,該對象才可以使用。常用的方法有getMessage()和printStackTrace()等。

九. pageContext對象

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

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

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

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

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

//使用pageContext將屬性設置在request 范圍中

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

// 使用session將屬性設置在session 范圍中

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

//使用pageContext將屬性設置在session范圍中

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

//使用application將屬性設置在application范圍中

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

//使用pageContext 將屬性設置在application 范圍中

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

以上資源來源于:http://baike.baidu.com/view/3387.htm#4

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容