jsp的四大作用域是:1、application 作用域。2、session作用域。3、request作用域。4、page作用域。
1、application 作用域
假如將變量放在application中,則說明它的作用域是application,整個應用都是它的有效范圍。 整個應用意味從應用啟動到應用結束。 application作用域里的變量存活時間是最長的,如不手動刪除,就可以一直使用。
application作用域上通過ServletContext實現信息傳遞,方法如下所示:
Object getAttribute(String name) //從application中獲取信息;
void setAttribute(String name, Object value) //向application作用域中設置信息。
2、session作用域
session作用域是同一瀏覽器多次訪問服務器,在多次訪問中傳遞信息,就是session作用域的體現。假如將變量放到session中,則說明它的作用域是session,它的有效范圍是當前會話。當前會話:從用戶打開瀏覽器直到用戶關閉瀏覽器的過程。該過程可能包含多個請求響應。只要用戶不關閉瀏覽器,服務器就會知道這些請求是一個人發起的,將整個過程稱為一個會話(session),那么放到會話中的變量,就可以在當前會話的所有請求里使用。
session是通過HttpSession接口實現的,方法如下所示:
Object HttpSession.getAttribute(String name) //從session中獲取信息。
void HttpSession.setAttribute(String name, Object value)//向session中保存信息。
HttpSession HttpServletRequest.getSessio() //獲取當前請求所在的session的對象。
3、request作用域
在一個HTTP請求的處理中可能需要多個Servlet合作,這幾個Servlet之間可以通過某種方式傳遞信息,這個信息在請求結束后就失效了。request中的變量可以跨越forward前后兩頁。但只要刷新頁面,它們就重新計算了。假如將變量放到request中,則說明它的作用域是request,它的有效范圍是當前請求周期。 請求周期就是指從http請求發起,到服務器處理結束,返回響應的整個過程。在這個過程中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面里你都可以使用這個變量。
Servlet之間的信息共享是通過HttpServletRequest接口的兩個方法來實現的,方法如下所示:
void setAttribute(String name, Object value) //將對象value以name為名稱保存到request作用域中。
Object getAttribute(String name) //從request作用域中取得指定名字的信息。
4、page作用域
僅限于當前頁面的用戶請求是page對象的作用范圍,對page對象的引用將在響應返回給客戶端之后被釋放或在請求被轉發到其他地方后被釋放。page里的變量只要頁面跳轉了,它們就消失了。假如將變量放到pageContext中,則說明它的作用域是page,它的有效范圍只在當前jsp頁面里。從把變量放到pageContext開始,到jsp頁面結束,都可以使用這個變量。