JSP內置對象詳解

JSP內置對象是為了簡化JSP頁面開發(fā)而建立的一些內部對象。這些對象不需要聲明,可以在程序中直接使用躬拢。它們是JSP語言的精髓做个,掌握常見內建對象的使用技巧是進行JavaWeb開發(fā)必不可少的。正確地掌握和靈活地使用JSP內置對象是學習JSP開發(fā)的重中之重秋茫。本章就來為大家講解九大內置對象

內置對象主要方法

前五種方法最常用

內置對象 主要作用
request 包含客戶端請求信息
response 頁面?zhèn)骰亟o用戶端的相應信息
out 用來向客戶端瀏覽器輸出信息的數據流
session 為發(fā)送請求的客戶建立會話
application 保存整個應用程序的共享信息
pageContext 保存當前JSP頁面的共享信息
config 讀取初始化參數
page 代表JSP網頁本身
exception 獲取運行時的異常

request內置對象

request對象用來接收客戶端提交的各種信息史简。如果要與用戶的互動,必須要知道用戶的需求肛著,然后根據這個需求生成用戶期望看到的結果圆兵。這樣才能實現與用戶的互動。在Web應用中枢贿,用戶的需求就抽象成一個request對象殉农,這個對象中間包括用戶所有的請求數據,例如通過表單提交的表單數據等方式傳遞的參數局荚,這些就是用戶的需求超凳。

主要方法

方法 方法描述
getParameter(Sting name) 獲取客戶端傳給服務器的參數值,name指定表單中參數的名字
getParameterNames() 獲取客戶端傳給服務器的所有參數的名字,返回的結果是一個枚舉實例
getParameterValues(Sting name) 獲得某一個參數的所有的值聪建,name指定參數名字
getAttribute(Sting name) 獲得request對象中某一個屬性的值钙畔,name為屬性名,如果該屬性不存在金麸,則返回null
setAttribute(Sting name,Java.long.Object.objt) 給request對象設置一個名字為name的屬性值擎析,該值由objt設置
removeAttribute(String name) 移除request對象中名字為name的屬性
getAttributeNames() 返回request對象中所有屬性的名字,結果是一個枚舉類型
getCookies() 返回客戶端所有的Cookie對象挥下,結果是一個Cookie數組
getCharacterEncoding() 返回客戶端請求中字符的編碼方式
getContentLength 返回客戶端請求的body的長度
getMethod() 返回客戶端向服務器傳輸數據的方法揍魂,如get、post棚瘟、header现斋、trace等
getRequestURL() 獲取發(fā)送請求的客戶端地址
getRemoteAddr() 獲取客戶端的IP地址
getServerName() 獲取服務器的名字
getServerPort() 獲取服務器的端口號
getServletPath() 獲取客戶端所請求的腳本文件的文件路徑

response內置對象

response對象是服務器端向客戶端返回的數據,從這個對象中間可以取出一部分與服務器互動的數據和信息偎蘸。

主要方法

方法 方法描述
addCookie(Cookie cookie) 添加一個Cookie對象庄蹋,用來保存客戶端信息
addHeader(Sting name, String value) 添加HTTP文件頭信息,如果已有同名的Header迷雪,則覆蓋它
containHeader(String name) 判斷名字為name的HTTP文件頭是否已存在
flushBuffer() 強制將當前緩沖區(qū)的內容發(fā)送到客戶端
getBufferSize() 返回緩沖區(qū)的大小
getOutputStream() 獲取到客戶端的輸出流對象
sendError(int) 向客戶端發(fā)送錯誤信息
sendRedirect(String location) 發(fā)響應發(fā)送到另一個位置去處理
setContentType(Sting contentType) 設置響應的MIME類型
setHeader(String name, String value) 設置名字為name的HTTP文件頭的值限书,新設置的值可以覆蓋舊值

forward和sendRedirect的區(qū)別

<jsp:forward> sendRedirect
jsp引擎控制,url不會變 完全跳轉
url必須是相對路徑 合法的url就行
轉向頁面和到達頁面需要在同一個app中 只要合法章咧,隨便跳轉

動態(tài)設置頁面返回的MIME類型

在JSP中可以使用page編譯指令來設置頁面的MIME(Multipurpose Internet Mail Extensions多功能Internet郵件擴充服務倦西,即文件的類型)返回類型,但是在這里設置是頁面的編譯階段赁严,以電腦設置完成扰柠,在運行階段是不可更改的。而使用response對象中的setContentType(String type)方法可以來動態(tài)設置頁面的返回類型疼约。

out內置對象

out內置對象是在Web應用開發(fā)過程中使用最多的一個對象卤档,其功能就是動態(tài)的向JSP頁面輸出字符流,從而把動態(tài)的內容轉化成HTML形式來展示忆谓。這個對象在任何JSP頁面中都可以任意訪問裆装。out對象的方法主要用于輸出各種各樣格式的數據

主要方法

方法 方法描述
clear() 清除緩沖區(qū)的數據,不向用戶輸出
clearBuffer() 清除緩沖區(qū)的數據倡缠,同時把這些數據向用戶輸出
close() 關閉out輸出流
flush() 輸出緩沖區(qū)的內容
isAutoFlush() 判斷是否為自動刷新
print(String str) 輸出帶HTML格式的各種類型的數據哨免,下一個輸出語句不換行
println(String str) 輸出帶HTML格式的各種類型的數據,下一個輸出語句換行

在out對象方法中昙沦,最常用的就是print()和println()方法琢唾。我們可以運用這兩種方法實現各種類型數據的輸出。

session內置對象

session對象用來保存每個用戶的信息盾饮。例如:用戶名采桃、密碼懒熙、上次訪問時間等,從而可以跟蹤每個用戶的操作狀態(tài)普办。一般情況下工扎,當用戶首次登錄系統(tǒng)時,Web容器就會給該用戶創(chuàng)建一個唯一用來標識該用戶會話的session id衔蹲。為了跟蹤用戶的操作狀態(tài)肢娘,在多個頁面之間保存共享信息,JSP中提供了session對象舆驶。當該用戶退出系統(tǒng)時橱健,這個session自動消失。

主要方法

方法 方法描述
getAttribute(String name) 從session中獲取名字為name的屬性
getAttributeNames() 返回存儲在session對象中的所有屬性的名字沙廉,結果為一個枚舉類型
removeAttribute(String name) 刪除名字為name的屬性
setAttribute(String name, Java.lang.Object value) 設置一個名字為name的屬性拘荡,其值為value
getCreationTimes() 返回該session被創(chuàng)建的時間
getId() 返回唯一標識該session的ID
getLastAccessedTime() 返回與該session相關的客戶端最后發(fā)送請求的時間

獲取session的ID

session對象的ID是用來唯一識別session的標識。該ID由一個32位的十六進制字符串組成撬陵,可以保證服務器中所創(chuàng)建的所有session對象都不相同珊皿。

session中保存和讀取共享數據

與request對象一樣,session對象也有一對setAttribute()和getAttribute()方法袱结,用來存儲或者讀取session中的共享信息亮隙。而兩種對象的兩個方法的區(qū)別在于共享信息的范圍不同,session對象中保存的共享信息的范圍是整個會話過程垢夹,而request對象中保存共享信息的范圍則是提交和被提交的頁面。

session對象的生命周期

session對象的創(chuàng)建是由服務器完成的维费,當客戶端第一次請求服務器時由服務器創(chuàng)建果元。如果會話過程一直存在,則session對象也將一直存在下去犀盟。只有當session過期而晒、客戶端關閉瀏覽器或者服務器端調用了session的invalIDate()方法時session對象才被釋放掉,結束其生命周期阅畴。

application內置對象

application對象保存著整個Web應用運行期間的全局數據和信息倡怎。從Web應用開始運行開始,這個對象就會被創(chuàng)建贱枣。在整個Web應用運行期間可以在任何JSP頁面中訪問這個對象监署。所以如果要保存在整個Web應用運行期間都可以訪問的數據,這時候就要用到application對象纽哥。

主要方法

方法 方法描述
getAttribute(String name) 返回application對象中名字為name的屬性的值
getAttributeNames() 返回application對象中所有屬性的名字钠乏,結果為一個枚舉類型
getInitParameter(String name) 返回application對象中名字為name的屬性的初始值
getServletInfo() 返回Servlet編譯器的當前版本的信息
setAttribute(String name,Object object) 在application對象中設置一個名字為name的屬性,其值為object

application對象最常用的方法回是getAttribute()和set Attribute()方法春塌。

pageContext內置對象

pageContext對象又被稱為JSP作用域通信對象晓避。該對象提供了訪問其他內置對象的統(tǒng)一入口簇捍,使用戶可以方便地訪問頁面作用域中定義的所有內置對象。

主要方法

方法 方法描述
getRequest() 返回當前頁面的request對象
getResponse() 返回當前頁面的response對象
getServletConfig() 返回當前頁面的servletConfig對象
getServletContext() 返回當前頁面的ServletContext對象俏拱,這個對象是所有的頁面共享的
getSession() 返回當前頁面的session對象
setAttribute() 設置默認頁面范圍或特定對象范圍之中的的對象
removeAttribute() 刪除默認頁面對象或特定對象范圍之中的已命名對象

config內置對象

config對象代表當前JSP頁面的配置信息暑塑。但JSP頁面通常無須預先進行配置,也就不存在配置信息了锅必。因此該對象在JSP頁面中比較少用事格,但在Servlet中則用處相對較大,因為Servlet需要在web.xml文件中進行配置况毅,從而設置初始化配置參數分蓖。

主要方法

方法 方法描述
getInitParameter(String name) 返回String類型的初始化參數
getInitParameterNames(String name) 返回所有初始化參數的名稱
getServletName() 獲得當前JSP頁面名稱
getServletContext() 獲得當前JSP頁面的服務器上下文環(huán)境

exception內置對象

exception對象用來封裝運行時出現的異常信息。該對象只能被處理錯誤的頁面使用尔许,一般用來處理錯誤的頁面會在其頁面指令中聲明“isErrorPage=true”么鹤。

主要方法

方法 方法描述
getMessage() 返回描述異常的消息
toString() 返回關于異常的簡短描述消息
printStackTrace() 顯示異常及其棧中的跟蹤信息

page內置對象

page內置對象指向當前JSP頁面本身,有點類似于類中的this指針味廊,它表示當前JSP頁面轉換后生成的Servlet類的實例蒸甜。

主要方法

方法 方法描述
getClass() 返回當前Object的類
toString() 返回當前Object對象的字符串
hashCode() 返回當前Object的哈希代碼
equals(Object o) 比較當前對象與給定的對象是否相等
copy(Object o) 把當前對象賦值到給定的對象中去
clone() 對當前對象進行克隆操作
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市余佛,隨后出現的幾起案子柠新,更是在濱河造成了極大的恐慌,老刑警劉巖辉巡,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恨憎,死亡現場離奇詭異,居然都是意外死亡郊楣,警方通過查閱死者的電腦和手機憔恳,發(fā)現死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來净蚤,“玉大人钥组,你說我怎么就攤上這事〗衿伲” “怎么了程梦?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長橘荠。 經常有香客問我屿附,道長,這世上最難降的妖魔是什么砾医? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任拿撩,我火速辦了婚禮,結果婚禮上如蚜,老公的妹妹穿的比我還像新娘压恒。我一直安慰自己影暴,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布探赫。 她就那樣靜靜地躺著型宙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伦吠。 梳的紋絲不亂的頭發(fā)上妆兑,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音毛仪,去河邊找鬼搁嗓。 笑死,一個胖子當著我的面吹牛箱靴,可吹牛的內容都是我干的腺逛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼衡怀,長吁一口氣:“原來是場噩夢啊……” “哼棍矛!你這毒婦竟也來了?” 一聲冷哼從身側響起抛杨,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤够委,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怖现,有當地人在樹林里發(fā)現了一具尸體茁帽,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年屈嗤,在試婚紗的時候發(fā)現自己被綠了脐雪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡恢共,死狀恐怖,靈堂內的尸體忽然破棺而出璧亚,到底是詐尸還是另有隱情讨韭,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布癣蟋,位于F島的核電站透硝,受9級特大地震影響,放射性物質發(fā)生泄漏疯搅。R本人自食惡果不足惜濒生,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望幔欧。 院中可真熱鬧罪治,春花似錦丽声、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晒骇,卻和暖如春霉撵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洪囤。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工徒坡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瘤缩。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓喇完,卻偏偏與公主長得像,于是被迫代替她去往敵國和親款咖。 傳聞我的和親對象是個殘疾皇子何暮,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容

  • 內置對象簡介 JSP 內置對象是 Web 容器創(chuàng)建的一組對象,不需使用 new 關鍵字就可以直接使用的內置對象铐殃。 ...
    Yanci516閱讀 1,534評論 0 5
  • 一海洼、JSP內置對象簡介 JSP內置對象是Web容器創(chuàng)建的一組對象,不使用new關鍵字就可以使用的內置對象富腊。開發(fā)者可...
    年少懵懂丶流年夢閱讀 3,713評論 0 8
  • 1. Java基礎部分 基礎部分的順序:基本語法坏逢,類相關的語法,內部類的語法赘被,繼承相關的語法是整,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 1.學習內容 JSP技術入門和常用指令 JSP的內置對象&標簽介紹 EL表達式&EL的內置對象 2.JSP技術入門...
    WendyVIV閱讀 2,125評論 1 18
  • 身已民假,傲氣沖天 一把匕首浮入,緊握 刺破宿敵的喉嚨 時光流轉,追溯 陳舊羊异,直到指尖 血珠在夜里閃耀 畫面事秀,扼殺心臟 呼...
    李譯閱讀 925評論 1 4