溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JSP運(yùn)行原理和九大隱式對(duì)象

發(fā)布時(shí)間:2020-07-04 21:03:32 來源:網(wǎng)絡(luò) 閱讀:308 作者:yayaAA 欄目:開發(fā)技術(shù)

    每個(gè)JSP 頁面在第一次被訪問時(shí),WEB容器都會(huì)把請(qǐng)求交給JSP引擎(即一個(gè)Java程序)去處理。JSP引擎先將JSP翻譯成一個(gè)_jspServlet(實(shí)質(zhì)上也是一個(gè)servlet) ,然后按照servlet的調(diào)用方式進(jìn)行調(diào)用。

    由于JSP第一次訪問時(shí)會(huì)翻譯成servlet,所以第一次訪問通常會(huì)比較慢,但第二次訪問,JSP引擎如果發(fā)現(xiàn)JSP沒有變化,就不再翻譯,而是直接調(diào)用,所以程序的執(zhí)行效率不會(huì)受到影響。


    JSP引擎在調(diào)用JSP對(duì)應(yīng)的_jspServlet時(shí),會(huì)傳遞或創(chuàng)建9個(gè)與web開發(fā)相關(guān)的對(duì)象供_jspServlet使用。JSP技術(shù)的設(shè)計(jì)者為便于開發(fā)人員在編寫JSP頁面時(shí)獲得這些web對(duì)象的引用,特意定義了9個(gè)相應(yīng)的變量,開發(fā)人員在JSP頁面中通過這些變量就可以快速獲得這9大對(duì)象的引用。

    1、page當(dāng)前servlet對(duì)象

    2、confingservletconfig對(duì)象

    3、application servletcontext對(duì)象,當(dāng)前web應(yīng)用

    4、response

    5request

    6、session

    7、out

    8exception在錯(cuò)誤提示頁面的對(duì)象,表示上一頁頁面拋出的異常。

    9pageContext     代表整個(gè)JSP頁面對(duì)象

     

*out

    1、相當(dāng)于是response.getWriter得到PrintWriter對(duì)象

    2、outresponse.getWriter獲取到的流,稍微有些不同,在于這個(gè)out對(duì)象本身就具有一個(gè)緩沖區(qū)。利用out寫出的內(nèi)容,會(huì)先緩沖在out緩沖區(qū)中直到out緩沖區(qū)滿了或者整個(gè)頁面結(jié)束時(shí),out緩沖區(qū)中的內(nèi)容才會(huì)被寫出到response緩沖區(qū)中,最終可以帶到瀏覽器頁面進(jìn)行展示

    3、page指令中的

 buffer="none | 8kb | sizekb" 可以用來禁用out緩沖區(qū)設(shè)置out緩沖區(qū)的大小,默認(rèn)8kb

  autoFlush="true | false"用來設(shè)置當(dāng)out緩沖區(qū)滿了以后如果在寫入數(shù)據(jù)時(shí)out如何處理,如果是true,則先將滿了的數(shù)據(jù)自動(dòng)刷新到response中后再接受新數(shù)據(jù);如果是false,則滿了再寫入數(shù)據(jù)直接拋異常。

4jsp頁面中需要進(jìn)行數(shù)據(jù)輸出時(shí),不要自己獲取response.getWriter,而是要使用out進(jìn)行輸出,防止即用out又用response.getWriter而導(dǎo)致輸出順序錯(cuò)亂的問題

*pageContext

(1)可以作為入口對(duì)象獲取其他八大隱式對(duì)象的引用

getException方法返回exception隱式對(duì)象

getPage方法返回page隱式對(duì)象

getRequest方法返回request隱式對(duì)象

getResponse方法返回response隱式對(duì)象

getServletConfig方法返回config隱式對(duì)象

getServletContext方法返回application隱式對(duì)象

getSession方法返回session隱式對(duì)象

getOut方法返回out隱式對(duì)象

 

(2)域?qū)ο?span >,四大作用域的入口,可以操作四大作用域中的域?qū)傩?/span>

作用范圍: 當(dāng)前jsp頁面

生命周期: 當(dāng)對(duì)jsp頁面的訪問開始時(shí),創(chuàng)建代表當(dāng)前jspPageContext,當(dāng)對(duì)當(dāng)前jsp頁面訪問結(jié)束時(shí)銷毀代表當(dāng)前jsppageContext

作用:在當(dāng)前jsp中共享數(shù)據(jù)  

        

public void setAttribute( name, value)

public java.lang.Object getAttribute( name)

public void removeAttribute( name)

 

public void setAttribute( name,  value, int scope)

public java.lang.Object getAttribute( name, int scope)

public void removeAttribute( name, int scope)

 

PageContext.APPLICATION_SCOPE      

JSP運(yùn)行原理和九大隱式對(duì)象PageContext.SESSION_SCOPE

PageContext.REQUEST_SCOPE

PageContext.PAGE_SCOPE              

 

 findAttribute方法 -- 搜尋四大作用域中的屬性,如果找到則返回該值,如果四大作用域中都找不到則返回一個(gè)null,搜尋的順序是從最小的域開始向最大的域開始尋找

                    

(3)提供了請(qǐng)求轉(zhuǎn)發(fā)和請(qǐng)求包含的快捷方法

pageContext.include("/index.jsp");

pageContext.forward("/index.jsp");


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI