什么是內置對象务冕?
?????????在jsp開發(fā)中书释,會頻繁使用到一些對象翘贮。例如:HttpSession、ServletContext征冷、HttpServletRequest
择膝。如果每次使用這些對象都要創(chuàng)建,就顯得非常麻煩检激。所以Sun公司設計jsp時肴捉,在jsp頁面加載完畢后就會幫開發(fā)者創(chuàng)建這些對象,而開發(fā)者只需要直接使用這些對象調用方法即可叔收。這些創(chuàng)建好的對象就叫內置對象齿穗。
9大內置對象
?????????jsp中的9個內置對象將由容器為用戶進行實例化,用戶直接使用即可饺律。
?????????以上內置對象中常用的是
pageContext窃页、request、response复濒、session脖卖、application
,掌握了這5個巧颈,即可進行程序開發(fā)畦木。
request內置對象
?????????客戶端的請求被封裝在request對象中,通過它可以了解客戶端的請求砸泛,然后作出響應十籍,request請求具有request請求域。
常用方法:
getParameter(String name)
getParamterValues(String name)
setAttribute(String name,Onject o)
getAttribute(string name)
getContetType();
getProtocol()
getServerName();```
###response對象
response對象包含了響應客戶端請求的有關信息唇礁,它具有頁面作用域勾栗,該頁面的作用域只對該頁面有效。
**常用方法:**
getCharacterEncoding()
setContentType();
getWriter();該方法打應輸出流總是前于 out.println();
sendRedirect(String location)```
請求重定向和請求轉發(fā):
請求重定向:客戶端行為:response.sendDirect();兩次請求盏筐,前一次請求的請求對象不會保存围俘,地址欄的url地址會發(fā)生改變
請求轉發(fā):服務器行為,request.getResuestDispatcher().forward();一次請求琢融,轉發(fā)后請求對象會保存楷拳,地址欄url地址不會變。
session對象
?????????session表示客戶端與服務器的一次會話
?????????web中session指的是用戶在瀏覽某個網站吏奸,是進入網站到關閉瀏覽器這段時間
?????????它是保存在服務器的內存中,不同用戶有不同的session
?????????它在第一個jsp頁面被裝載時自動創(chuàng)建陶耍,完成會話期管理奋蔚。
常用方法:
getCreationTime();
String getId();
setAttribute(String name,Object o);
getAttribute(String name);
String[] getValueNames();
int getMaxInactivieInterval();單位 秒
setMaxInactiveInterval();```
**session的生命周期:**
創(chuàng)建: 當客戶端第一次訪問某個頁面jsp或者servlet,服務器會創(chuàng)建一個 sessionId,每次客戶端向服務器發(fā)送請求時,都會將sessionId攜帶過去泊碑,服務器會對sessionId進行校驗坤按。
活動: 當客戶端通過超鏈接打開新頁面屬于同一次會話;當瀏覽頁面全部關閉馒过,重新打開屬于一次新的會話臭脓。
銷毀:調用sesson.invalidate();session過期,默認是30分鐘腹忽;服務器重啟来累;
###application對象
application實現(xiàn)了用戶數(shù)據(jù)共享,可存放全局變量窘奏。
application 開始于服務器的重啟嘹锁,終止于服務器的關閉
application 是ServletContext實例。
**常用方法:**
setAttribute(String ,Object);
getAttribute(String);
Enumeration getAttributeNames();
getServerInfo();返回Jsp 引擎名和版本號
###page對象
page對象就是指當前jsp頁面本身着裹,有點像this指針领猾,它是java.lang.Object類的實例。常用的方法就是Object 類的方法骇扇。
getClass()
hashCode();
equals();
copy();
clone()
toString();
notify();
notifyAll();
wait();```
Out內置對象
?????????out對象類型摔竿,JspWriter類,相當于帶緩沖的PrintWriter
??????????????????PrintWriter:writer(內容)直接向瀏覽器寫出內容少孝。
??????????????????JspWriter:writer(內容)向jsp緩沖區(qū)寫出內容
pageContext內置對象
?????????jsp的上下文對象可以獲取其他八個內置對象
作用:保存數(shù)據(jù)和獲取數(shù)據(jù)继低,用于數(shù)據(jù)之間的共享
獲取數(shù)據(jù)
- 默認情況下,從page獲取
pageContext.getAttribute("name")```
2. 可以從四個域中獲取數(shù)據(jù)
pageContext.getAttribute("name",域范圍常量)
域范圍常量:
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext.SESSION_SCOPE
PageContext.PAGE_APPLICATION_SCOPE
3. 在四個域中搜索數(shù)據(jù)
```
PageContext.findAttribute("name");
順序:page域 ->request域 ->session域 ->context(application域)```
**常用方法**
getOut()
geSession();
getPage();
getReuest();
getResponse();
setAttribute();
getAttibute();
getAttributeScope();
forward();
include();```
config對象
?????????它是在一個servlet初始化時韭山,jsp頁面用它傳遞信息郁季,比如servlet初始化參數(shù);以及服務器的有關信息钱磅。
ServletContext getServletContext();
getInitParameter(String);
Enumeration getInitParameterNames();```
####Jsp中的四個域對象
#####域對象作用
1. 保存數(shù)據(jù)和獲取數(shù)據(jù)梦裂,用于數(shù)據(jù)共享
2. 域對象方法
```
setAttribute("name",Object);保存數(shù)據(jù)```
```
getAttribute("name")獲取數(shù)據(jù)```
```
removeAttribute("name")清除數(shù)據(jù)```
3. 域對象范圍
page域:只能在當前jsp頁面中使用
request域:只能在同一個請求中使用
session:只能在同一個會話(session對象)中使用
context域:只能在同一個web應用中使用
###exception對象
即異常對象。如果一個jsp想要用此對象盖淡,就必須把isErrorPage 設為true.