首先說5個(gè)對(duì)象 pageContext對(duì)象那個(gè)– jsp上下文 request對(duì)象 response對(duì)象 session對(duì)象 application對(duì)象
首先確定一點(diǎn),這些對(duì)象應(yīng)該都是在tomcat服務(wù)器里面保存的!
java里面一切都是對(duì)象,服務(wù)器開始運(yùn)行的時(shí)候,就會(huì)產(chǎn)生application對(duì)象,至于這個(gè)對(duì)象是什么樣子的,有什么屬性,我們先不管,反正這個(gè)對(duì)象那個(gè)就是保存了服務(wù)器的一些信息,對(duì)所有用戶都是一樣的 好了,接下來,由用戶a開始上網(wǎng),訪問了服務(wù)器,a用戶就有了一個(gè)session對(duì)象,這個(gè)對(duì)象是什么我也不管,反正就是描述用戶信息的,如果用戶b也開始上網(wǎng),那么b也有一個(gè)session對(duì)象
用戶訪問某個(gè)資源,在url里面輸入地址,就會(huì)產(chǎn)生一個(gè)request對(duì)象,同時(shí)tomcat就會(huì)產(chǎn)生一個(gè)response對(duì)象,用于給用戶反饋
有時(shí)候就是要這么樣理順一下思路 上面的東西理解了,再來說4種屬性范圍 page request session application 是不是特別容易混淆?沒錯(cuò),jsp的基礎(chǔ)感覺就是這么操蛋,如果不理清楚思路的話,屬性范圍和對(duì)象真是一頭霧水。。。
我們首先要搞清楚這個(gè)屬性是個(gè)什么東西,他有什么用? 設(shè)置屬性是通過對(duì)象的方法來設(shè)置的 pageContext.setAttribute request.setAttriubte session.setAttribute application.setAttribute 所以這些個(gè)屬性肯定是4種對(duì)象里面的私有成員變量,通過方法操作的他們,然后這個(gè)屬性又是以鍵值對(duì)的形式存在的,所以很明顯,在request,session,application,page,肯定存在用于存放屬性的Map鍵值對(duì)成員變量
就像這樣
PRivate Map<String,String> attribute;public setAttribute(String name,Object value){..}public getAttribute(String name){..}我沒有看源碼,肯定和這個(gè)差不多。。 好了搞清楚屬性是什么東西了,那么屬性有什么作用呢? 因?yàn)閷傩远际潜4嬖趯?duì)象里面的,所以屬性的作用就是—》 我們可以往page對(duì)象,request對(duì)象,session對(duì)象,application對(duì)象里面寫東西啊!!!保存在不同對(duì)象里面的屬性就是不同的屬性范圍 具體的作用呢,page對(duì)象里面的屬性可以用來記錄page文檔的信息 request對(duì)象里面的屬性可以在服務(wù)器端跳轉(zhuǎn)的時(shí)候共享參數(shù) session對(duì)象里面的屬性可以判斷用戶信息 application對(duì)象里面的屬性可以取得虛擬目錄的物理路徑,虛擬目錄就是那個(gè)”/”
之前我還非常疑惑,既然有屬性范圍這么一說,那么四個(gè)對(duì)象分別是屬于什么屬性范圍呢?現(xiàn)在思路理清楚了,這個(gè)問題也就好回答了
屬性范圍是針對(duì)鍵值對(duì)存放在哪個(gè)對(duì)象里面來區(qū)分的,不應(yīng)該說對(duì)象是屬于哪個(gè)屬性范圍,應(yīng)該這么說,
一個(gè)pageContext對(duì)象就是一個(gè)page屬性范圍 一個(gè)request對(duì)象就是一個(gè)request屬性范圍, 一個(gè)application對(duì)象就是一個(gè)applicaiton屬性范圍, 一個(gè)session對(duì)象就是一個(gè)session屬性范圍
好像還多了一個(gè)response對(duì)象,好了,其實(shí)我們不需要給每個(gè)對(duì)象都設(shè)置屬性范圍,所以response對(duì)象就沒有對(duì)應(yīng)的了
后來看到了pageContext這個(gè)setAttribute(String name,Object value,int scope)方法有些疑惑,這個(gè)方法可以通過制定scope設(shè)置4種屬性范圍的屬性,我又奇怪了,這個(gè)屬性范圍到底是存放在pageContext對(duì)象里面的呢,還是分別存放在不同對(duì)象里面的呢?但前面我的理解有一點(diǎn)肯定沒錯(cuò),就是屬性肯定是存放在對(duì)象里面的。
由于看不到源碼,只看得到接口,我就索性猜測(cè)一下吧,在pageContext里面設(shè)置屬性應(yīng)該是調(diào)用其他對(duì)象的設(shè)置屬性的方法,
也可以其他對(duì)象通過調(diào)用pageContext的方法,那么所有對(duì)象都是存放在pageContext里面的咯。。既然這樣,pageContext里面就應(yīng)該是定義了四個(gè)Map鍵值對(duì),分別存放不同的屬性范圍,嗯。。。
好吧,這個(gè)問題到此為止,具體是怎么樣的也不重要,只要記住一點(diǎn) 屬性是鍵值對(duì),是存放在對(duì)象里面的
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注